diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2734f49..afd2d38 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,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 @@ -25,7 +25,7 @@ jobs: steps: ## sets up go based on the version - name: Install Go - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 + uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.0 with: go-version: ${{ matrix.go-version }} @@ -42,6 +42,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@1f60566a86da84c4b4b64c17662a90de97fbb8d7 # v5.4.2 env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 213cad2..1ead81a 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -43,7 +43,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@3407610120cd5656b6fc71991415cb50748b9489 # codeql-bundle-v2.20.1 + uses: github/codeql-action/init@4c3e5362829f0b0bb62ff5f6c938d7f95574c306 # codeql-bundle-v2.21.1 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -53,7 +53,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@3407610120cd5656b6fc71991415cb50748b9489 # codeql-bundle-v2.20.1 + uses: github/codeql-action/autobuild@4c3e5362829f0b0bb62ff5f6c938d7f95574c306 # codeql-bundle-v2.21.1 # â„šī¸ 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 @@ -66,4 +66,4 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@3407610120cd5656b6fc71991415cb50748b9489 # codeql-bundle-v2.20.1 + uses: github/codeql-action/analyze@4c3e5362829f0b0bb62ff5f6c938d7f95574c306 # codeql-bundle-v2.21.1 diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index bdf3aea..916bbb0 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -11,33 +11,33 @@ jobs: - name: Checkout code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Install Go - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 + uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.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@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 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.22.x ] + go-version: [ 1.24.x ] platform: [ ubuntu-latest, macos-latest, windows-latest ] runs-on: ${{ matrix.platform }} steps: - name: Checkout code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Install Go - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 + uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.0 with: go-version: ${{ matrix.go-version }} - name: Restore cache - uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 + uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-mod-${{ hashFiles('**/go.sum') }} @@ -51,6 +51,6 @@ jobs: - name: Checkout code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Install Go - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 + uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.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 eab4851..a8ed8bd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,17 +15,17 @@ jobs: - name: Unshallow run: git fetch --prune --unshallow - name: Set up Go - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 + uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.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@9c156ee8a17a598857849441385a2041ef570552 # v6.3.0 with: version: latest args: release --clean @@ -50,7 +50,7 @@ jobs: 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@432a30c9e07499fd01da9f8a49f0faf9e0ca5b77 # v4.0.2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9c74635..ff8ca92 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -30,7 +30,7 @@ repos: hooks: - id: shell-lint - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.43.0 + rev: v0.44.0 hooks: - # noinspection SpellCheckingInspection id: markdownlint @@ -41,7 +41,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 @@ -53,11 +53,11 @@ repos: - id: go-mod-tidy - id: go-generate - repo: https://github.com/golangci/golangci-lint - rev: v1.63.4 + rev: v2.1.5 hooks: - id: golangci-lint - repo: https://github.com/bridgecrewio/checkov - rev: 3.2.354 + rev: 3.2.408 hooks: - id: checkov language_version: python3.11 diff --git a/go.mod b/go.mod index 2e37163..16f22c7 100644 --- a/go.mod +++ b/go.mod @@ -1,30 +1,30 @@ module sato -go 1.22.2 +go 1.24.1 require ( github.com/awslabs/goformation/v7 v7.14.9 - github.com/go-git/go-git/v5 v5.12.0 + github.com/go-git/go-git/v5 v5.13.0 github.com/gobeam/stringy v0.0.7 github.com/hashicorp/hc-install v0.4.0 github.com/hashicorp/terraform-exec v0.17.3 - github.com/rs/zerolog v1.33.0 - github.com/stretchr/testify v1.9.0 - github.com/urfave/cli/v2 v2.27.5 - golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 + github.com/rs/zerolog v1.34.0 + github.com/stretchr/testify v1.10.0 + github.com/urfave/cli/v2 v2.27.6 + golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 ) require ( dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/ProtonMail/go-crypto v1.0.0 // indirect + github.com/ProtonMail/go-crypto v1.1.3 // indirect github.com/cloudflare/circl v1.3.7 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect - github.com/cyphar/filepath-securejoin v0.2.4 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect + github.com/cyphar/filepath-securejoin v0.2.5 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect - github.com/go-git/go-billy/v5 v5.5.0 // indirect + github.com/go-git/go-billy/v5 v5.6.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-version v1.6.0 // indirect @@ -37,17 +37,17 @@ require ( 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.2.2 // indirect + github.com/skeema/knownhosts v1.3.0 // 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.11.0 // indirect - golang.org/x/crypto v0.32.0 // indirect - golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.34.0 // indirect - golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.29.0 // indirect - golang.org/x/text v0.21.0 // indirect - golang.org/x/tools v0.29.0 // indirect + golang.org/x/crypto v0.37.0 // indirect + golang.org/x/mod v0.24.0 // indirect + golang.org/x/net v0.39.0 // indirect + golang.org/x/sync v0.13.0 // indirect + golang.org/x/sys v0.32.0 // indirect + golang.org/x/text v0.24.0 // indirect + golang.org/x/tools v0.32.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 9d998c8..2bb9449 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= -github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= -github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +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/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= @@ -18,41 +18,39 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/awslabs/goformation/v7 v7.14.9 h1:sZjjpTqXrcBDz4Fi07JWTT7zKM68XsQkW/7iLAJbA/M= github.com/awslabs/goformation/v7 v7.14.9/go.mod h1:7obldQ8NQ/AkMsgL5K3l4lRMDFB6kCGUloz5dURcXIs= -github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= 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/cpuguy83/go-md2man/v2 v2.0.7 h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo= +github.com/cpuguy83/go-md2man/v2 v2.0.7/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= -github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/cyphar/filepath-securejoin v0.2.5 h1:6iR5tXJ/e6tJZzzdMc1km3Sa7RRIVBKAK32O2s7AYfo= +github.com/cyphar/filepath-securejoin v0.2.5/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= 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 v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= -github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= +github.com/elazarl/goproxy v1.2.1 h1:njjgvO6cRG9rIqN2ebkqy6cQz2Njkx7Fsfv/zIZqgug= +github.com/elazarl/goproxy v1.2.1/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= -github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= +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.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= 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.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= -github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= -github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= +github.com/go-git/go-billy/v5 v5.6.0 h1:w2hPNtoehvJIxR00Vb4xX94qHQi/ApZfX+nBE2Cjio8= +github.com/go-git/go-billy/v5 v5.6.0/go.mod h1:sFDq7xD3fn3E0GOwUSZqHo9lrkmx8xJhA0ZrfvjBRGM= github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= 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.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= -github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= -github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= +github.com/go-git/go-git/v5 v5.13.0 h1:vLn5wlGIh/X78El6r3Jr+30W16Blk0CTcxTYcYPWi5E= +github.com/go-git/go-git/v5 v5.13.0/go.mod h1:Wjo7/JyVKtQgUNdXYXIepzWfJQkUEIGvkvVkiXRR/zw= github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= @@ -119,8 +117,8 @@ github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/onsi/ginkgo/v2 v2.17.1 h1:V++EzdbhI4ZV4ev0UTIj0PzhzOcReJFyJaLjtSF55M8= github.com/onsi/ginkgo/v2 v2.17.1/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs= -github.com/onsi/gomega v1.33.0 h1:snPCflnZrpMsy94p4lXVEkHo12lmPnc3vY5XBbreexE= -github.com/onsi/gomega v1.33.0/go.mod h1:+925n5YtiFsLzzafLUHzVMBpvvRAzrydIBiSIxjX3wY= +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.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -130,9 +128,9 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= -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/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/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= @@ -141,18 +139,18 @@ github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= -github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.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/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.6 h1:VdRdS98FNhKZ8/Az8B7MTyGQmpIr36O1EHybx/LaZ4g= +github.com/urfave/cli/v2 v2.27.6/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= @@ -167,7 +165,6 @@ github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17 github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= github.com/zclconf/go-cty v1.11.0 h1:726SxLdi2SDnjY+BStqB9J1hNp4+2WlzyXLuimibIe0= @@ -178,37 +175,24 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= -golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= -golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= -golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= -golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= +golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 h1:R84qjqJb5nVJMxqWYb3np9L5ZsaDtB+a39EqjV0JSUM= +golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0/go.mod h1:S9Xr4PYopiDyqSyp5NjCrhFrqg6A5zA2E/iPHPhqnS8= +golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= +golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= 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-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0/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.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= +golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/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-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -222,42 +206,25 @@ golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/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.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= -golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= +golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o= +golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -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.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= 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.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= -golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/tools v0.32.0 h1:Q7N1vhpkQv7ybVzLFtTjvQya2ewbwNDZzUgfXGqtMWU= +golang.org/x/tools v0.32.0/go.mod h1:ZxrU41P/wAbZD8EDa6dDCa6XfpkhJ7HFMjHJXfBDu8s= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/main.go b/main.go index 04450d0..a17c9e1 100644 --- a/main.go +++ b/main.go @@ -4,13 +4,12 @@ import ( _ "embed" // required for embed "fmt" "os" - "sort" - "time" - "sato/src/arm" "sato/src/cf" "sato/src/see" "sato/src/version" + "sort" + "time" "github.com/rs/zerolog" "github.com/rs/zerolog/log" @@ -39,7 +38,7 @@ func main() { Action: func(*cli.Context) error { err := cf.Parse(file, destination) if err != nil { - log.Info().Msgf(err.Error()) + log.Info().Msgf("%v", err.Error()) } return nil @@ -79,7 +78,7 @@ func main() { Action: func(*cli.Context) error { err := arm.Parse(file, destination) if err != nil { - log.Info().Msgf(err.Error()) + log.Info().Msgf("%v", err.Error()) } return nil diff --git a/schema/aws-acmpca-certificateauthority.json b/schema/aws-acmpca-certificateauthority.json index d3fdc8c..ae9ebcc 100644 --- a/schema/aws-acmpca-certificateauthority.json +++ b/schema/aws-acmpca-certificateauthority.json @@ -54,9 +54,15 @@ "CrlDistributionPointExtensionConfiguration": { "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" }, + "CrlType": { + "type": "string" + }, "CustomCname": { "type": "string" }, + "CustomPath": { + "type": "string" + }, "Enabled": { "type": "boolean" }, @@ -362,7 +368,8 @@ "permissions": [ "acm-pca:CreateCertificateAuthority", "acm-pca:DescribeCertificateAuthority", - "acm-pca:GetCertificateAuthorityCsr" + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:TagCertificateAuthority" ] }, "delete": { @@ -388,7 +395,6 @@ }, "update": { "permissions": [ - "acm-pca:ListTags", "acm-pca:TagCertificateAuthority", "acm-pca:UntagCertificateAuthority", "acm-pca:UpdateCertificateAuthority" @@ -470,10 +476,8 @@ }, "typeName": "AWS::ACMPCA::CertificateAuthority", "writeOnlyProperties": [ - "/properties/Subject", "/properties/Subject", "/properties/CsrExtensions", - "/properties/Tags", "/properties/RevocationConfiguration", "/properties/KeyStorageSecurityStandard" ] diff --git a/schema/aws-amazonmq-configuration.json b/schema/aws-amazonmq-configuration.json index c2184b9..624855e 100644 --- a/schema/aws-amazonmq-configuration.json +++ b/schema/aws-amazonmq-configuration.json @@ -35,7 +35,7 @@ }, "delete": { "permissions": [ - "mq:DescribeConfiguration" + "mq:DeleteConfiguration" ] }, "list": { diff --git a/schema/aws-amplify-app.json b/schema/aws-amplify-app.json index 7ac3f0c..0d59ae5 100644 --- a/schema/aws-amplify-app.json +++ b/schema/aws-amplify-app.json @@ -273,6 +273,12 @@ "CacheConfig": { "$ref": "#/definitions/CacheConfig" }, + "ComputeRoleArn": { + "maxLength": 1000, + "minLength": 0, + "pattern": "(?s).*", + "type": "string" + }, "CustomHeaders": { "maxLength": 25000, "minLength": 0, @@ -353,6 +359,18 @@ "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", diff --git a/schema/aws-amplify-branch.json b/schema/aws-amplify-branch.json index 7192a8d..48565ba 100644 --- a/schema/aws-amplify-branch.json +++ b/schema/aws-amplify-branch.json @@ -195,6 +195,12 @@ "pattern": "(?s).+", "type": "string" }, + "ComputeRoleArn": { + "maxLength": 1000, + "minLength": 0, + "pattern": "(?s).*", + "type": "string" + }, "Description": { "maxLength": 1000, "pattern": "(?s).*", @@ -209,6 +215,9 @@ "EnablePullRequestPreview": { "type": "boolean" }, + "EnableSkewProtection": { + "type": "boolean" + }, "EnvironmentVariables": { "items": { "$ref": "#/definitions/EnvironmentVariable" @@ -252,6 +261,18 @@ "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/schema/aws-amplify-domain.json b/schema/aws-amplify-domain.json index 65427d6..b42d6eb 100644 --- a/schema/aws-amplify-domain.json +++ b/schema/aws-amplify-domain.json @@ -69,6 +69,7 @@ "handlers": { "create": { "permissions": [ + "amplify:GetDomainAssociation", "amplify:CreateDomainAssociation", "route53:ListHostedZones", "route53:ChangeResourceRecordSets", @@ -78,9 +79,10 @@ }, "delete": { "permissions": [ + "amplify:GetDomainAssociation", "amplify:DeleteDomainAssociation", - "iam:PassRole", - "amplify:DeleteDomainAssociation" + "route53:ListHostedZones", + "iam:PassRole" ] }, "list": { @@ -100,6 +102,7 @@ }, "update": { "permissions": [ + "amplify:GetDomainAssociation", "amplify:UpdateDomainAssociation", "route53:ListHostedZones", "route53:ChangeResourceRecordSets", diff --git a/schema/aws-apigateway-domainname.json b/schema/aws-apigateway-domainname.json index d734545..4b57bfe 100644 --- a/schema/aws-apigateway-domainname.json +++ b/schema/aws-apigateway-domainname.json @@ -7,6 +7,9 @@ "EndpointConfiguration": { "additionalProperties": false, "properties": { + "IpAddressType": { + "type": "string" + }, "Types": { "items": { "type": "string" diff --git a/schema/aws-apigateway-restapi.json b/schema/aws-apigateway-restapi.json index 674be82..772f19d 100644 --- a/schema/aws-apigateway-restapi.json +++ b/schema/aws-apigateway-restapi.json @@ -5,6 +5,10 @@ "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": { diff --git a/schema/aws-apigatewayv2-api.json b/schema/aws-apigatewayv2-api.json index 6bff540..0bc603a 100644 --- a/schema/aws-apigatewayv2-api.json +++ b/schema/aws-apigatewayv2-api.json @@ -165,6 +165,10 @@ "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" diff --git a/schema/aws-apigatewayv2-domainname.json b/schema/aws-apigatewayv2-domainname.json index ab65c48..5c2537c 100644 --- a/schema/aws-apigatewayv2-domainname.json +++ b/schema/aws-apigatewayv2-domainname.json @@ -20,6 +20,10 @@ "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" @@ -88,6 +92,10 @@ "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": { @@ -121,7 +129,8 @@ }, "readOnlyProperties": [ "/properties/RegionalDomainName", - "/properties/RegionalHostedZoneId" + "/properties/RegionalHostedZoneId", + "/properties/DomainNameArn" ], "required": [ "DomainName" diff --git a/schema/aws-appconfig-extension.json b/schema/aws-appconfig-extension.json index 0548705..bb19114 100644 --- a/schema/aws-appconfig-extension.json +++ b/schema/aws-appconfig-extension.json @@ -1,10 +1,7 @@ { "additionalProperties": false, "createOnlyProperties": [ - "/properties/Name", - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" + "/properties/Name" ], "definitions": { "Action": { @@ -119,7 +116,8 @@ }, "read": { "permissions": [ - "appconfig:GetExtension" + "appconfig:GetExtension", + "appconfig:ListTagsForResource" ] }, "update": { @@ -176,7 +174,7 @@ "$ref": "#/definitions/Tag" }, "type": "array", - "uniqueItems": false + "uniqueItems": true }, "VersionNumber": { "type": "integer" @@ -206,9 +204,6 @@ }, "typeName": "AWS::AppConfig::Extension", "writeOnlyProperties": [ - "/properties/LatestVersionNumber", - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" + "/properties/LatestVersionNumber" ] } diff --git a/schema/aws-appconfig-extensionassociation.json b/schema/aws-appconfig-extensionassociation.json index 2f8652b..de75794 100644 --- a/schema/aws-appconfig-extensionassociation.json +++ b/schema/aws-appconfig-extensionassociation.json @@ -3,10 +3,7 @@ "createOnlyProperties": [ "/properties/ExtensionIdentifier", "/properties/ResourceIdentifier", - "/properties/ExtensionVersionNumber", - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" + "/properties/ExtensionVersionNumber" ], "definitions": { "Tag": { @@ -54,7 +51,8 @@ }, "read": { "permissions": [ - "appconfig:GetExtensionAssociation" + "appconfig:GetExtensionAssociation", + "appconfig:ListTagsForResource" ] }, "update": { @@ -106,7 +104,7 @@ "$ref": "#/definitions/Tag" }, "type": "array", - "uniqueItems": false + "uniqueItems": true } }, "readOnlyProperties": [ @@ -131,9 +129,6 @@ "typeName": "AWS::AppConfig::ExtensionAssociation", "writeOnlyProperties": [ "/properties/ExtensionIdentifier", - "/properties/ResourceIdentifier", - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" + "/properties/ResourceIdentifier" ] } diff --git a/schema/aws-appflow-flow.json b/schema/aws-appflow-flow.json index 9f8ed44..ab03f3b 100644 --- a/schema/aws-appflow-flow.json +++ b/schema/aws-appflow-flow.json @@ -1659,6 +1659,7 @@ }, "update": { "permissions": [ + "appflow:DescribeFlow", "appflow:UpdateFlow", "appflow:StartFlow", "appflow:StopFlow", @@ -1762,7 +1763,13 @@ "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 }, diff --git a/schema/aws-appintegrations-eventintegration.json b/schema/aws-appintegrations-eventintegration.json index b1b3eac..00afd9c 100644 --- a/schema/aws-appintegrations-eventintegration.json +++ b/schema/aws-appintegrations-eventintegration.json @@ -13,7 +13,7 @@ "description": "The source of the events.", "maxLength": 256, "minLength": 1, - "pattern": "^aws\\.partner\\/.*$", + "pattern": "^aws\\.(partner\\/.*|cases)$", "type": "string" } }, diff --git a/schema/aws-applicationsignals-discovery.json b/schema/aws-applicationsignals-discovery.json new file mode 100644 index 0000000..8691b27 --- /dev/null +++ b/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/schema/aws-applicationsignals-servicelevelobjective.json b/schema/aws-applicationsignals-servicelevelobjective.json index 9e10438..f7aeb71 100644 --- a/schema/aws-applicationsignals-servicelevelobjective.json +++ b/schema/aws-applicationsignals-servicelevelobjective.json @@ -54,6 +54,35 @@ ], "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.", @@ -74,18 +103,58 @@ "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.", + "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 calendar interval unit.", + "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.", @@ -231,6 +300,22 @@ }, "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.", @@ -262,6 +347,9 @@ "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" }, @@ -339,6 +427,9 @@ "additionalProperties": false, "description": "A structure that contains information about the metric that the SLO monitors.", "properties": { + "DependencyConfig": { + "$ref": "#/definitions/DependencyConfig" + }, "KeyAttributes": { "$ref": "#/definitions/KeyAttributes" }, @@ -407,6 +498,23 @@ "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", @@ -419,7 +527,9 @@ "application-signals:GetServiceLevelObjective", "application-signals:ListTagsForResource", "iam:GetRole", - "iam:CreateServiceLinkedRole" + "iam:CreateServiceLinkedRole", + "application-signals:ListServiceLevelObjectiveExclusionWindows", + "application-signals:BatchUpdateExclusionWindows" ] }, "delete": { @@ -432,13 +542,15 @@ "list": { "permissions": [ "application-signals:ListServiceLevelObjectives", - "application-signals:ListTagsForResource" + "application-signals:ListTagsForResource", + "application-signals:ListServiceLevelObjectiveExclusionWindows" ] }, "read": { "permissions": [ "application-signals:GetServiceLevelObjective", - "application-signals:ListTagsForResource" + "application-signals:ListTagsForResource", + "application-signals:ListServiceLevelObjectiveExclusionWindows" ] }, "update": { @@ -448,7 +560,9 @@ "application-signals:TagResource", "application-signals:UntagResource", "application-signals:GetServiceLevelObjective", - "application-signals:ListTagsForResource" + "application-signals:ListTagsForResource", + "application-signals:ListServiceLevelObjectiveExclusionWindows", + "application-signals:BatchUpdateExclusionWindows" ] } }, @@ -484,6 +598,9 @@ ], "type": "string" }, + "ExclusionWindows": { + "$ref": "#/definitions/ExclusionWindows" + }, "Goal": { "$ref": "#/definitions/Goal" }, diff --git a/schema/aws-appsync-channelnamespace.json b/schema/aws-appsync-channelnamespace.json index a58a51a..c51009d 100644 --- a/schema/aws-appsync-channelnamespace.json +++ b/schema/aws-appsync-channelnamespace.json @@ -43,6 +43,81 @@ "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" + }, + "Integration": { + "$ref": "#/definitions/Integration" + } + }, + "required": [ + "Behavior", + "Integration" + ], + "type": "object" + }, + "HandlerConfigs": { + "additionalProperties": false, + "properties": { + "OnPublish": { + "$ref": "#/definitions/HandlerConfig" + }, + "OnSubscribe": { + "$ref": "#/definitions/HandlerConfig" + } + }, + "type": "object" + }, + "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" + }, + "InvokeType": { + "description": "Invocation type for direct lambda integrations.", + "enum": [ + "REQUEST_RESPONSE", + "EVENT" + ], + "type": "string" + }, + "LambdaConfig": { + "additionalProperties": false, + "properties": { + "InvokeType": { + "$ref": "#/definitions/InvokeType" + } + }, + "required": [ + "InvokeType" + ], + "type": "object" + }, "Namespace": { "description": "Namespace indentifier.", "maxLength": 50, @@ -150,6 +225,9 @@ "description": "The Amazon S3 endpoint where the code is located.", "type": "string" }, + "HandlerConfigs": { + "$ref": "#/definitions/HandlerConfigs" + }, "Name": { "$ref": "#/definitions/Namespace" }, diff --git a/schema/aws-appsync-domainname.json b/schema/aws-appsync-domainname.json index b2614a5..56968ca 100644 --- a/schema/aws-appsync-domainname.json +++ b/schema/aws-appsync-domainname.json @@ -4,6 +4,42 @@ "/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": { @@ -11,13 +47,15 @@ "appsync:CreateDomainName", "appsync:GetDomainName", "acm:DescribeCertificate", - "cloudfront:UpdateDistribution" + "cloudfront:UpdateDistribution", + "appsync:TagResource" ] }, "delete": { "permissions": [ "appsync:GetDomainName", - "appsync:DeleteDomainName" + "appsync:DeleteDomainName", + "appsync:UntagResource" ] }, "list": { @@ -32,7 +70,10 @@ }, "update": { "permissions": [ - "appsync:UpdateDomainName" + "appsync:UpdateDomainName", + "appsync:TagResource", + "appsync:UntagResource", + "appsync:GetDomainName" ] } }, @@ -60,23 +101,36 @@ "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/HostedZoneId", + "/properties/DomainNameArn" ], "required": [ "DomainName", "CertificateArn" ], "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false + "cloudFormationSystemTags": true, + "permissions": [ + "appsync:TagResource", + "appsync:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true }, "typeName": "AWS::AppSync::DomainName" } diff --git a/schema/aws-aps-rulegroupsnamespace.json b/schema/aws-aps-rulegroupsnamespace.json index dbcf916..f04c1ac 100644 --- a/schema/aws-aps-rulegroupsnamespace.json +++ b/schema/aws-aps-rulegroupsnamespace.json @@ -121,6 +121,10 @@ "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, diff --git a/schema/aws-aps-scraper.json b/schema/aws-aps-scraper.json index 5d58152..c0b5100 100644 --- a/schema/aws-aps-scraper.json +++ b/schema/aws-aps-scraper.json @@ -33,6 +33,21 @@ }, "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", @@ -144,7 +159,8 @@ "eks:DescribeCluster", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", - "iam:CreateServiceLinkedRole" + "iam:CreateServiceLinkedRole", + "iam:PassRole" ] }, "delete": { @@ -179,7 +195,8 @@ "aps:DescribeWorkspace", "aps:TagResource", "aps:UntagResource", - "aps:ListTagsForResource" + "aps:ListTagsForResource", + "iam:PassRole" ] } }, @@ -209,6 +226,9 @@ "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" }, @@ -245,6 +265,10 @@ "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, diff --git a/schema/aws-aps-workspace.json b/schema/aws-aps-workspace.json index a2dd22a..f011988 100644 --- a/schema/aws-aps-workspace.json +++ b/schema/aws-aps-workspace.json @@ -4,6 +4,64 @@ "/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", @@ -39,6 +97,28 @@ "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", @@ -51,6 +131,8 @@ "aps:CreateAlertManagerDefinition", "aps:DescribeAlertManagerDefinition", "aps:CreateLoggingConfiguration", + "aps:DescribeWorkspaceConfiguration", + "aps:UpdateWorkspaceConfiguration", "logs:CreateLogDelivery", "logs:GetLogDelivery", "logs:ListLogDeliveries", @@ -80,7 +162,8 @@ "aps:DescribeWorkspace", "aps:ListTagsForResource", "aps:DescribeAlertManagerDefinition", - "aps:DescribeLoggingConfiguration" + "aps:DescribeLoggingConfiguration", + "aps:DescribeWorkspaceConfiguration" ] }, "update": { @@ -97,6 +180,8 @@ "aps:DescribeLoggingConfiguration", "aps:UpdateLoggingConfiguration", "aps:DeleteLoggingConfiguration", + "aps:DescribeWorkspaceConfiguration", + "aps:UpdateWorkspaceConfiguration", "logs:CreateLogDelivery", "logs:GetLogDelivery", "logs:UpdateLogDelivery", @@ -150,6 +235,9 @@ "type": "array", "uniqueItems": true }, + "WorkspaceConfiguration": { + "$ref": "#/definitions/WorkspaceConfiguration" + }, "WorkspaceId": { "description": "Required to identify a specific APS Workspace.", "maxLength": 100, @@ -167,6 +255,10 @@ "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, diff --git a/schema/aws-athena-capacityreservation.json b/schema/aws-athena-capacityreservation.json index de44f91..89dfa30 100644 --- a/schema/aws-athena-capacityreservation.json +++ b/schema/aws-athena-capacityreservation.json @@ -197,6 +197,11 @@ "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, diff --git a/schema/aws-athena-datacatalog.json b/schema/aws-athena-datacatalog.json index d3fc2aa..549d6b5 100644 --- a/schema/aws-athena-datacatalog.json +++ b/schema/aws-athena-datacatalog.json @@ -37,17 +37,60 @@ "create": { "permissions": [ "athena:CreateDataCatalog", - "athena:TagResource" + "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:DeleteDataCatalog", + "athena:GetDataCatalog", + "glue:GetConnection", + "glue:UpdateConnection", + "cloudformation:DeleteStack", + "cloudformation:DescribeStacks", + "lambda:DeleteFunction", + "iam:DeleteRole", + "iam:DeleteRolePolicy", + "iam:DetachRolePolicy", + "s3:ListBucket" ] }, "list": { "permissions": [ - "athena:ListDataCatalog" + "athena:ListDataCatalogs" ] }, "read": { @@ -70,12 +113,20 @@ "/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, @@ -93,16 +144,32 @@ }, "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. ", + "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" + "HIVE", + "FEDERATED" ], "type": "string" } @@ -112,6 +179,17 @@ "Type" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-athena.git", - "taggable": true, + "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/schema/aws-athena-workgroup.json b/schema/aws-athena-workgroup.json index 7521c2d..71ddb29 100644 --- a/schema/aws-athena-workgroup.json +++ b/schema/aws-athena-workgroup.json @@ -402,7 +402,18 @@ "Name" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-athena.git", - "taggable": true, + "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", diff --git a/schema/aws-b2bi-partnership.json b/schema/aws-b2bi-partnership.json index ec9eae0..0e3a67b 100644 --- a/schema/aws-b2bi-partnership.json +++ b/schema/aws-b2bi-partnership.json @@ -91,13 +91,13 @@ "ApplicationReceiverCode": { "maxLength": 15, "minLength": 2, - "pattern": "^[a-zA-Z0-9]*$", + "pattern": "^[a-zA-Z0-9 ]*$", "type": "string" }, "ApplicationSenderCode": { "maxLength": 15, "minLength": 2, - "pattern": "^[a-zA-Z0-9]*$", + "pattern": "^[a-zA-Z0-9 ]*$", "type": "string" }, "ResponsibleAgencyCode": { @@ -121,7 +121,7 @@ "ReceiverId": { "maxLength": 15, "minLength": 15, - "pattern": "^[a-zA-Z0-9]*$", + "pattern": "^[a-zA-Z0-9 ]*$", "type": "string" }, "ReceiverIdQualifier": { @@ -138,7 +138,7 @@ "SenderId": { "maxLength": 15, "minLength": 15, - "pattern": "^[a-zA-Z0-9]*$", + "pattern": "^[a-zA-Z0-9 ]*$", "type": "string" }, "SenderIdQualifier": { diff --git a/schema/aws-backup-backupplan.json b/schema/aws-backup-backupplan.json index 4f5436c..c212e2e 100644 --- a/schema/aws-backup-backupplan.json +++ b/schema/aws-backup-backupplan.json @@ -63,6 +63,14 @@ "EnableContinuousBackup": { "type": "boolean" }, + "IndexActions": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/IndexActionsResourceType" + }, + "type": "array", + "uniqueItems": false + }, "Lifecycle": { "$ref": "#/definitions/LifecycleResourceType" }, @@ -112,6 +120,15 @@ ], "type": "object" }, + "IndexActionsResourceType": { + "additionalProperties": false, + "properties": { + "ResourceTypes": { + "$ref": "#/definitions/ResourceTypes" + } + }, + "type": "object" + }, "LifecycleResourceType": { "additionalProperties": false, "properties": { @@ -126,6 +143,17 @@ } }, "type": "object" + }, + "ResourceType": { + "type": "string" + }, + "ResourceTypes": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ResourceType" + }, + "type": "array", + "uniqueItems": true } }, "description": "Resource Type definition for AWS::Backup::BackupPlan", diff --git a/schema/aws-backup-restoretestingplan.json b/schema/aws-backup-restoretestingplan.json index 5d07fc2..d7c9429 100644 --- a/schema/aws-backup-restoretestingplan.json +++ b/schema/aws-backup-restoretestingplan.json @@ -56,13 +56,6 @@ ], "type": "string" }, - "RestoreTestingScheduleStatus": { - "enum": [ - "ACTIVE", - "SUSPENDED" - ], - "type": "string" - }, "Tag": { "additionalProperties": false, "properties": { @@ -91,7 +84,6 @@ "create": { "permissions": [ "backup:CreateRestoreTestingPlan", - "backup:UpdateRestoreTestingPlanScheduleStatus", "backup:TagResource", "backup:GetRestoreTestingPlan", "backup:ListTags" @@ -121,7 +113,6 @@ "update": { "permissions": [ "backup:UpdateRestoreTestingPlan", - "backup:UpdateRestoreTestingPlanScheduleStatus", "backup:TagResource", "backup:UntagResource", "backup:GetRestoreTestingPlan", @@ -149,9 +140,6 @@ "ScheduleExpressionTimezone": { "type": "string" }, - "ScheduleStatus": { - "$ref": "#/definitions/RestoreTestingScheduleStatus" - }, "StartWindowHours": { "type": "integer" }, diff --git a/schema/aws-backupgateway-hypervisor.json b/schema/aws-backupgateway-hypervisor.json index 1723261..bce90bc 100644 --- a/schema/aws-backupgateway-hypervisor.json +++ b/schema/aws-backupgateway-hypervisor.json @@ -50,6 +50,7 @@ "handlers": { "create": { "permissions": [ + "backup-gateway:ListTagsForResource", "backup-gateway:ImportHypervisorConfiguration", "backup-gateway:GetHypervisor", "backup-gateway:ListHypervisors", @@ -74,7 +75,8 @@ "read": { "permissions": [ "backup-gateway:GetHypervisor", - "backup-gateway:ListHypervisors" + "backup-gateway:ListHypervisors", + "backup-gateway:ListTagsForResource" ] }, "update": { @@ -83,7 +85,8 @@ "backup-gateway:GetHypervisor", "backup-gateway:ListHypervisors", "backup-gateway:ImportHypervisorConfiguration", - "backup-gateway:DeleteHypervisor" + "backup-gateway:DeleteHypervisor", + "backup-gateway:ListTagsForResource" ] } }, @@ -145,6 +148,11 @@ ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "backup-gateway:UntagResource", + "backup-gateway:TagResource", + "backup-gateway:ListTagsForResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": false, @@ -156,7 +164,6 @@ "/properties/LogGroupArn", "/properties/Name", "/properties/Password", - "/properties/Tags", "/properties/Username" ] } diff --git a/schema/aws-batch-computeenvironment.json b/schema/aws-batch-computeenvironment.json index 6aecc70..e71b170 100644 --- a/schema/aws-batch-computeenvironment.json +++ b/schema/aws-batch-computeenvironment.json @@ -319,7 +319,7 @@ "cloudFormationSystemTags": false, "permissions": [ "Batch:TagResource", - "Batch:UntagResource" + "Batch:UnTagResource" ], "tagOnCreate": true, "tagProperty": "/properties/Tags", diff --git a/schema/aws-batch-consumableresource.json b/schema/aws-batch-consumableresource.json new file mode 100644 index 0000000..209887c --- /dev/null +++ b/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/schema/aws-batch-jobdefinition.json b/schema/aws-batch-jobdefinition.json index cb01433..98b1823 100644 --- a/schema/aws-batch-jobdefinition.json +++ b/schema/aws-batch-jobdefinition.json @@ -4,6 +4,42 @@ "/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": { @@ -15,6 +51,9 @@ "type": "array", "uniqueItems": false }, + "EnableExecuteCommand": { + "type": "boolean" + }, "Environment": { "insertionOrder": true, "items": { @@ -204,6 +243,9 @@ "type": "array", "uniqueItems": false }, + "EnableExecuteCommand": { + "type": "boolean" + }, "EphemeralStorage": { "$ref": "#/definitions/EphemeralStorage" }, @@ -369,6 +411,9 @@ }, "ReadOnly": { "type": "boolean" + }, + "SubPath": { + "type": "string" } }, "type": "object" @@ -397,6 +442,15 @@ "EksMetadata": { "additionalProperties": false, "properties": { + "Annotations": { + "additionalProperties": false, + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + }, "Labels": { "additionalProperties": false, "patternProperties": { @@ -405,10 +459,28 @@ } }, "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": { @@ -498,6 +570,9 @@ "Name": { "type": "string" }, + "PersistentVolumeClaim": { + "$ref": "#/definitions/EksPersistentVolumeClaim" + }, "Secret": { "$ref": "#/definitions/EksSecret" } @@ -668,6 +743,9 @@ "type": "array", "uniqueItems": false }, + "EnableExecuteCommand": { + "type": "boolean" + }, "Environment": { "insertionOrder": true, "items": { @@ -792,6 +870,9 @@ "type": "array", "uniqueItems": false }, + "EnableExecuteCommand": { + "type": "boolean" + }, "ExecutionRoleArn": { "type": "string" }, @@ -852,6 +933,9 @@ "NodeRangeProperty": { "additionalProperties": false, "properties": { + "ConsumableResourceProperties": { + "$ref": "#/definitions/ConsumableResourceProperties" + }, "Container": { "$ref": "#/definitions/MultiNodeContainerProperties" }, @@ -993,6 +1077,27 @@ "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" }, @@ -1157,6 +1262,9 @@ "/properties/JobDefinitionName" ], "properties": { + "ConsumableResourceProperties": { + "$ref": "#/definitions/ConsumableResourceProperties" + }, "ContainerProperties": { "$ref": "#/definitions/ContainerProperties" }, @@ -1166,6 +1274,9 @@ "EksProperties": { "$ref": "#/definitions/EksProperties" }, + "JobDefinitionArn": { + "type": "string" + }, "JobDefinitionName": { "maxLength": 128, "type": "string" @@ -1216,6 +1327,9 @@ "type": "string" } }, + "readOnlyProperties": [ + "/properties/JobDefinitionArn" + ], "required": [ "Type" ], @@ -1224,7 +1338,7 @@ "cloudFormationSystemTags": true, "permissions": [ "Batch:TagResource", - "Batch:UntagResource" + "Batch:UnTagResource" ], "tagOnCreate": true, "tagProperty": "/properties/Tags", diff --git a/schema/aws-batch-schedulingpolicy.json b/schema/aws-batch-schedulingpolicy.json index 951d5d1..9387a88 100644 --- a/schema/aws-batch-schedulingpolicy.json +++ b/schema/aws-batch-schedulingpolicy.json @@ -51,7 +51,7 @@ "type": "object" } }, - "description": "Resource Type schema for AWS::Batch::SchedulingPolicy", + "description": "Resource Type definition for AWS::Batch::SchedulingPolicy", "handlers": { "create": { "permissions": [ @@ -116,6 +116,10 @@ "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, diff --git a/schema/aws-bcmdataexports-export.json b/schema/aws-bcmdataexports-export.json index a028d4d..62b62ed 100644 --- a/schema/aws-bcmdataexports-export.json +++ b/schema/aws-bcmdataexports-export.json @@ -287,6 +287,11 @@ ], "tagging": { "cloudFormationSystemTags": false, + "permissions": [ + "bcm-data-exports:ListTagsForResource", + "bcm-data-exports:TagResource", + "bcm-data-exports:UntagResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-bedrock-agent.json b/schema/aws-bedrock-agent.json index 1734e17..46bc43d 100644 --- a/schema/aws-bedrock-agent.json +++ b/schema/aws-bedrock-agent.json @@ -83,6 +83,10 @@ ], "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", @@ -124,6 +128,50 @@ ], "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", @@ -178,6 +226,31 @@ ], "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", @@ -291,6 +364,55 @@ ], "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", @@ -328,12 +450,18 @@ "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" }, @@ -391,10 +519,20 @@ "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": [ @@ -424,6 +562,17 @@ }, "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", @@ -468,7 +617,15 @@ "bedrock:CreateGuardrail", "bedrock:CreateGuardrailVersion", "bedrock:GetGuardrail", - "iam:PassRole" + "bedrock:AssociateAgentCollaborator", + "bedrock:GetAgentCollaborator", + "bedrock:ListAgentCollaborators", + "iam:PassRole", + "kms:GenerateDataKeyWithoutPlainText", + "kms:ReEncryptFrom", + "kms:ReEncryptTo", + "kms:Decrypt", + "kms:GenerateDataKey" ] }, "delete": { @@ -476,7 +633,10 @@ "bedrock:GetAgent", "bedrock:DeleteAgent", "bedrock:DeleteGuardrail", - "bedrock:GetGuardrail" + "bedrock:GetGuardrail", + "kms:Decrypt", + "kms:Encrypt", + "kms:GenerateDataKey" ] }, "list": { @@ -494,7 +654,11 @@ "bedrock:ListAgentKnowledgeBases", "bedrock:ListTagsForResource", "bedrock:GetGuardrail", - "kms:Decrypt" + "bedrock:GetAgentCollaborator", + "bedrock:ListAgentCollaborators", + "kms:Decrypt", + "kms:GenerateDataKey", + "kms:Encrypt" ] }, "update": { @@ -517,7 +681,17 @@ "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" ] } @@ -540,6 +714,17 @@ "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}$", @@ -575,6 +760,9 @@ "format": "date-time", "type": "string" }, + "CustomOrchestration": { + "$ref": "#/definitions/CustomOrchestration" + }, "CustomerEncryptionKeyArn": { "description": "A KMS key ARN", "maxLength": 2048, @@ -600,11 +788,7 @@ "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" + "$ref": "#/definitions/FoundationModel" }, "GuardrailConfiguration": { "$ref": "#/definitions/GuardrailConfiguration" @@ -628,6 +812,12 @@ }, "type": "array" }, + "MemoryConfiguration": { + "$ref": "#/definitions/MemoryConfiguration" + }, + "OrchestrationType": { + "$ref": "#/definitions/OrchestrationType" + }, "PreparedAt": { "description": "Time Stamp.", "format": "date-time", @@ -680,6 +870,11 @@ ], "tagging": { "cloudFormationSystemTags": false, + "permissions": [ + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-bedrock-agentalias.json b/schema/aws-bedrock-agentalias.json index 26ac30f..537d5e8 100644 --- a/schema/aws-bedrock-agentalias.json +++ b/schema/aws-bedrock-agentalias.json @@ -208,6 +208,11 @@ "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, diff --git a/schema/aws-bedrock-blueprint.json b/schema/aws-bedrock-blueprint.json new file mode 100644 index 0000000..e03ca7c --- /dev/null +++ b/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/schema/aws-bedrock-dataautomationproject.json b/schema/aws-bedrock-dataautomationproject.json new file mode 100644 index 0000000..9cb5927 --- /dev/null +++ b/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/schema/aws-bedrock-datasource.json b/schema/aws-bedrock-datasource.json index 99411c4..3945840 100644 --- a/schema/aws-bedrock-datasource.json +++ b/schema/aws-bedrock-datasource.json @@ -22,11 +22,7 @@ "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" + "$ref": "#/definitions/ModelArn" }, "ParsingModality": { "$ref": "#/definitions/ParsingModality" @@ -40,6 +36,23 @@ ], "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.", @@ -138,6 +151,29 @@ ], "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.", @@ -240,6 +276,26 @@ ], "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, @@ -329,6 +385,13 @@ ], "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", @@ -635,7 +698,8 @@ "AuthType": { "description": "The supported authentication type to authenticate and connect to your SharePoint site/sites.", "enum": [ - "OAUTH2_CLIENT_CREDENTIALS" + "OAUTH2_CLIENT_CREDENTIALS", + "OAUTH2_SHAREPOINT_APP_ONLY_CLIENT_CREDENTIALS" ], "type": "string" }, @@ -755,6 +819,9 @@ "ChunkingConfiguration": { "$ref": "#/definitions/ChunkingConfiguration" }, + "ContextEnrichmentConfiguration": { + "$ref": "#/definitions/ContextEnrichmentConfiguration" + }, "CustomTransformationConfiguration": { "$ref": "#/definitions/CustomTransformationConfiguration" }, @@ -779,6 +846,18 @@ }, "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" @@ -787,6 +866,11 @@ "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, @@ -840,7 +924,8 @@ "permissions": [ "bedrock:CreateDataSource", "bedrock:GetDataSource", - "bedrock:GetKnowledgeBase" + "bedrock:GetKnowledgeBase", + "kms:GenerateDataKey" ] }, "delete": { @@ -872,7 +957,8 @@ "update": { "permissions": [ "bedrock:GetDataSource", - "bedrock:UpdateDataSource" + "bedrock:UpdateDataSource", + "kms:GenerateDataKey" ] } }, @@ -942,7 +1028,8 @@ "/properties/DataSourceStatus", "/properties/CreatedAt", "/properties/UpdatedAt", - "/properties/FailureReasons" + "/properties/FailureReasons", + "/properties/DataSourceConfiguration/WebConfiguration/CrawlerConfiguration/UserAgentHeader" ], "required": [ "DataSourceConfiguration", diff --git a/schema/aws-bedrock-flow.json b/schema/aws-bedrock-flow.json index 716045e..a59a082 100644 --- a/schema/aws-bedrock-flow.json +++ b/schema/aws-bedrock-flow.json @@ -209,7 +209,7 @@ "items": { "$ref": "#/definitions/FlowConnection" }, - "maxItems": 20, + "maxItems": 100, "type": "array" }, "Nodes": { @@ -218,7 +218,7 @@ "items": { "$ref": "#/definitions/FlowNode" }, - "maxItems": 20, + "maxItems": 40, "type": "array" } }, @@ -949,7 +949,7 @@ "items": { "$ref": "#/definitions/PromptInputVariable" }, - "maxItems": 5, + "maxItems": 20, "minItems": 0, "type": "array" }, diff --git a/schema/aws-bedrock-flowversion.json b/schema/aws-bedrock-flowversion.json index dab6229..caf8cd9 100644 --- a/schema/aws-bedrock-flowversion.json +++ b/schema/aws-bedrock-flowversion.json @@ -186,7 +186,7 @@ "items": { "$ref": "#/definitions/FlowConnection" }, - "maxItems": 20, + "maxItems": 100, "type": "array" }, "Nodes": { @@ -195,7 +195,7 @@ "items": { "$ref": "#/definitions/FlowNode" }, - "maxItems": 20, + "maxItems": 40, "type": "array" } }, @@ -860,7 +860,7 @@ "items": { "$ref": "#/definitions/PromptInputVariable" }, - "maxItems": 5, + "maxItems": 20, "minItems": 0, "type": "array" }, diff --git a/schema/aws-bedrock-guardrail.json b/schema/aws-bedrock-guardrail.json index 3f8a31e..d414ee0 100644 --- a/schema/aws-bedrock-guardrail.json +++ b/schema/aws-bedrock-guardrail.json @@ -1,34 +1,48 @@ { "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" + "ContentFilterAction": { + "enum": [ + "BLOCK", + "NONE" ], - "type": "object" + "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" }, @@ -74,10 +88,23 @@ ], "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, @@ -141,23 +168,22 @@ ], "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": { + "InputAction": { + "$ref": "#/definitions/WordAction" + }, + "InputEnabled": { + "type": "boolean" + }, + "OutputAction": { + "$ref": "#/definitions/WordAction" + }, + "OutputEnabled": { + "type": "boolean" + }, "Type": { "$ref": "#/definitions/ManagedWordsType" } @@ -174,22 +200,13 @@ ], "type": "string" }, - "PiiEntity": { - "additionalProperties": false, - "description": "Entity name and behavior.", - "properties": { - "Action": { - "$ref": "#/definitions/SensitiveInformationAction" - }, - "Type": { - "$ref": "#/definitions/PiiEntityType" - } - }, - "required": [ - "Action", - "Type" + "Modality": { + "description": "Modality for filters", + "enum": [ + "TEXT", + "IMAGE" ], - "type": "object" + "type": "string" }, "PiiEntityConfig": { "additionalProperties": false, @@ -198,6 +215,18 @@ "Action": { "$ref": "#/definitions/SensitiveInformationAction" }, + "InputAction": { + "$ref": "#/definitions/SensitiveInformationAction" + }, + "InputEnabled": { + "type": "boolean" + }, + "OutputAction": { + "$ref": "#/definitions/SensitiveInformationAction" + }, + "OutputEnabled": { + "type": "boolean" + }, "Type": { "$ref": "#/definitions/PiiEntityType" } @@ -258,12 +287,24 @@ "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, @@ -281,7 +322,8 @@ "description": "Options for sensitive information action.", "enum": [ "BLOCK", - "ANONYMIZE" + "ANONYMIZE", + "NONE" ], "type": "string" }, @@ -334,44 +376,12 @@ ], "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" + "TopicAction": { + "enum": [ + "BLOCK", + "NONE" ], - "type": "object" + "type": "string" }, "TopicConfig": { "additionalProperties": false, @@ -394,6 +404,12 @@ "minItems": 0, "type": "array" }, + "InputAction": { + "$ref": "#/definitions/TopicAction" + }, + "InputEnabled": { + "type": "boolean" + }, "Name": { "description": "Name of topic in topic policy", "maxLength": 100, @@ -401,6 +417,12 @@ "pattern": "^[0-9a-zA-Z-_ !?.]+$", "type": "string" }, + "OutputAction": { + "$ref": "#/definitions/TopicAction" + }, + "OutputEnabled": { + "type": "boolean" + }, "Type": { "$ref": "#/definitions/TopicType" } @@ -437,10 +459,29 @@ ], "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, @@ -653,6 +694,11 @@ ], "tagging": { "cloudFormationSystemTags": false, + "permissions": [ + "bedrock:ListTagsForResource", + "bedrock:TagResource", + "bedrock:UntagResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-bedrock-knowledgebase.json b/schema/aws-bedrock-knowledgebase.json index c34afd7..8b52908 100644 --- a/schema/aws-bedrock-knowledgebase.json +++ b/schema/aws-bedrock-knowledgebase.json @@ -36,6 +36,14 @@ "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" @@ -148,7 +156,9 @@ "OPENSEARCH_SERVERLESS", "PINECONE", "RDS", - "MONGO_DB_ATLAS" + "MONGO_DB_ATLAS", + "NEPTUNE_ANALYTICS", + "OPENSEARCH_MANAGED_CLUSTER" ], "type": "string" }, @@ -197,6 +207,12 @@ "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, @@ -250,6 +266,115 @@ "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.", @@ -510,6 +635,12 @@ "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, @@ -878,16 +1009,32 @@ "RdsConfiguration" ] }, + { + "required": [ + "NeptuneAnalyticsConfiguration" + ] + }, { "required": [ "MongoDbAtlasConfiguration" ] + }, + { + "required": [ + "OpensearchManagedClusterConfiguration" + ] } ], "properties": { "MongoDbAtlasConfiguration": { "$ref": "#/definitions/MongoDbAtlasConfiguration" }, + "NeptuneAnalyticsConfiguration": { + "$ref": "#/definitions/NeptuneAnalyticsConfiguration" + }, + "OpensearchManagedClusterConfiguration": { + "$ref": "#/definitions/OpenSearchManagedClusterConfiguration" + }, "OpensearchServerlessConfiguration": { "$ref": "#/definitions/OpenSearchServerlessConfiguration" }, @@ -1117,6 +1264,11 @@ ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-bedrock-prompt.json b/schema/aws-bedrock-prompt.json index 62d8b28..318dfff 100644 --- a/schema/aws-bedrock-prompt.json +++ b/schema/aws-bedrock-prompt.json @@ -1,6 +1,10 @@ { "additionalProperties": false, "definitions": { + "AdditionalModelRequestFields": { + "description": "Contains model-specific configurations", + "type": "object" + }, "AnyToolChoice": { "additionalProperties": false, "description": "Any Tool choice", @@ -11,6 +15,26 @@ "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", @@ -21,7 +45,7 @@ "items": { "$ref": "#/definitions/PromptInputVariable" }, - "maxItems": 5, + "maxItems": 20, "minItems": 0, "type": "array" }, @@ -69,6 +93,19 @@ ], "title": "Text", "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "CachePoint": { + "$ref": "#/definitions/CachePointBlock" + } + }, + "required": [ + "CachePoint" + ], + "title": "CachePoint", + "type": "object" } ] }, @@ -167,6 +204,47 @@ }, "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", @@ -245,12 +323,18 @@ "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, @@ -311,6 +395,19 @@ ], "title": "Text", "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "CachePoint": { + "$ref": "#/definitions/CachePointBlock" + } + }, + "required": [ + "CachePoint" + ], + "title": "CachePoint", + "type": "object" } ] }, @@ -332,13 +429,16 @@ "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": 5, + "maxItems": 20, "minItems": 0, "type": "array" }, @@ -400,6 +500,19 @@ ], "title": "ToolSpec", "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "CachePoint": { + "$ref": "#/definitions/CachePointBlock" + } + }, + "required": [ + "CachePoint" + ], + "title": "CachePoint", + "type": "object" } ] }, diff --git a/schema/aws-bedrock-promptversion.json b/schema/aws-bedrock-promptversion.json index 2e8994e..a85d4b9 100644 --- a/schema/aws-bedrock-promptversion.json +++ b/schema/aws-bedrock-promptversion.json @@ -6,6 +6,10 @@ "/properties/Tags" ], "definitions": { + "AdditionalModelRequestFields": { + "description": "Contains model-specific configurations", + "type": "object" + }, "AnyToolChoice": { "additionalProperties": false, "description": "Any Tool choice", @@ -16,6 +20,26 @@ "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", @@ -26,7 +50,7 @@ "items": { "$ref": "#/definitions/PromptInputVariable" }, - "maxItems": 5, + "maxItems": 20, "minItems": 0, "type": "array" }, @@ -74,6 +98,19 @@ ], "title": "Text", "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "CachePoint": { + "$ref": "#/definitions/CachePointBlock" + } + }, + "required": [ + "CachePoint" + ], + "title": "CachePoint", + "type": "object" } ] }, @@ -172,6 +209,47 @@ }, "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", @@ -250,12 +328,18 @@ "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, @@ -316,6 +400,19 @@ ], "title": "Text", "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "CachePoint": { + "$ref": "#/definitions/CachePointBlock" + } + }, + "required": [ + "CachePoint" + ], + "title": "CachePoint", + "type": "object" } ] }, @@ -337,13 +434,16 @@ "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": 5, + "maxItems": 20, "minItems": 0, "type": "array" }, @@ -374,6 +474,19 @@ ], "title": "ToolSpec", "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "CachePoint": { + "$ref": "#/definitions/CachePointBlock" + } + }, + "required": [ + "CachePoint" + ], + "title": "CachePoint", + "type": "object" } ] }, diff --git a/schema/aws-billingconductor-billinggroup.json b/schema/aws-billingconductor-billinggroup.json index 34d54f5..67f07ee 100644 --- a/schema/aws-billingconductor-billinggroup.json +++ b/schema/aws-billingconductor-billinggroup.json @@ -190,6 +190,11 @@ "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, diff --git a/schema/aws-billingconductor-customlineitem.json b/schema/aws-billingconductor-customlineitem.json index b59134e..8a6985a 100644 --- a/schema/aws-billingconductor-customlineitem.json +++ b/schema/aws-billingconductor-customlineitem.json @@ -289,6 +289,11 @@ "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, diff --git a/schema/aws-billingconductor-pricingplan.json b/schema/aws-billingconductor-pricingplan.json index 5d8f7f2..3882ecd 100644 --- a/schema/aws-billingconductor-pricingplan.json +++ b/schema/aws-billingconductor-pricingplan.json @@ -130,6 +130,11 @@ "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, diff --git a/schema/aws-billingconductor-pricingrule.json b/schema/aws-billingconductor-pricingrule.json index d6e8834..883b207 100644 --- a/schema/aws-billingconductor-pricingrule.json +++ b/schema/aws-billingconductor-pricingrule.json @@ -201,6 +201,11 @@ "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, diff --git a/schema/aws-budgets-budgetsaction.json b/schema/aws-budgets-budgetsaction.json index 4291664..fb2306b 100644 --- a/schema/aws-budgets-budgetsaction.json +++ b/schema/aws-budgets-budgetsaction.json @@ -271,6 +271,11 @@ "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, diff --git a/schema/aws-cassandra-keyspace.json b/schema/aws-cassandra-keyspace.json index 2f72341..caac1a6 100644 --- a/schema/aws-cassandra-keyspace.json +++ b/schema/aws-cassandra-keyspace.json @@ -8,6 +8,7 @@ "insertionOrder": false, "items": { "enum": [ + "af-south-1", "ap-northeast-1", "ap-northeast-2", "ap-south-1", diff --git a/schema/aws-ce-anomalymonitor.json b/schema/aws-ce-anomalymonitor.json index 7f75034..c6cf0d8 100644 --- a/schema/aws-ce-anomalymonitor.json +++ b/schema/aws-ce-anomalymonitor.json @@ -57,7 +57,8 @@ }, "read": { "permissions": [ - "ce:GetAnomalyMonitors" + "ce:GetAnomalyMonitors", + "ce:ListTagsForResource" ] }, "update": { @@ -146,8 +147,15 @@ "MonitorType" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::CE::AnomalyMonitor", - "writeOnlyProperties": [ - "/properties/ResourceTags" - ] + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ce:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/ResourceTags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::CE::AnomalyMonitor" } diff --git a/schema/aws-ce-anomalysubscription.json b/schema/aws-ce-anomalysubscription.json index e754b70..3ee9ba2 100644 --- a/schema/aws-ce-anomalysubscription.json +++ b/schema/aws-ce-anomalysubscription.json @@ -82,7 +82,8 @@ }, "read": { "permissions": [ - "ce:GetAnomalySubscriptions" + "ce:GetAnomalySubscriptions", + "ce:ListTagsForResource" ] }, "update": { @@ -168,8 +169,15 @@ "SubscriptionName" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::CE::AnomalySubscription", - "writeOnlyProperties": [ - "/properties/ResourceTags" - ] + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ce:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/ResourceTags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::CE::AnomalySubscription" } diff --git a/schema/aws-ce-costcategory.json b/schema/aws-ce-costcategory.json index c6e4e41..2998742 100644 --- a/schema/aws-ce-costcategory.json +++ b/schema/aws-ce-costcategory.json @@ -4,6 +4,30 @@ "/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, @@ -12,11 +36,12 @@ "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.", + "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:CreateCostCategoryDefinition", + "ce:TagResource" ] }, "delete": { @@ -31,12 +56,15 @@ }, "read": { "permissions": [ - "ce:DescribeCostCategoryDefinition" + "ce:DescribeCostCategoryDefinition", + "ce:ListTagsForResource" ] }, "update": { "permissions": [ - "ce:UpdateCostCategoryDefinition" + "ce:UpdateCostCategoryDefinition", + "ce:TagResource", + "ce:UntagResource" ] } }, @@ -76,6 +104,16 @@ "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": [ @@ -88,5 +126,17 @@ "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/schema/aws-chatbot-customaction.json b/schema/aws-chatbot-customaction.json index 2b36138..6b9288f 100644 --- a/schema/aws-chatbot-customaction.json +++ b/schema/aws-chatbot-customaction.json @@ -41,7 +41,7 @@ "$ref": "#/definitions/CustomActionAttachmentCriteriaOperator" }, "Value": { - "maxLength": 50, + "maxLength": 1024, "minLength": 0, "type": "string" }, @@ -77,7 +77,7 @@ "additionalProperties": false, "properties": { "CommandText": { - "maxLength": 100, + "maxLength": 5000, "minLength": 1, "type": "string" } diff --git a/schema/aws-chatbot-microsoftteamschannelconfiguration.json b/schema/aws-chatbot-microsoftteamschannelconfiguration.json index 0a81f30..eeb1de0 100644 --- a/schema/aws-chatbot-microsoftteamschannelconfiguration.json +++ b/schema/aws-chatbot-microsoftteamschannelconfiguration.json @@ -145,6 +145,13 @@ "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, diff --git a/schema/aws-cleanrooms-analysistemplate.json b/schema/aws-cleanrooms-analysistemplate.json index 5c9275a..78e2f47 100644 --- a/schema/aws-cleanrooms-analysistemplate.json +++ b/schema/aws-cleanrooms-analysistemplate.json @@ -4,12 +4,9 @@ "/properties/Name", "/properties/MembershipIdentifier", "/properties/Source", - "/properties/Source/Text", "/properties/Format", "/properties/AnalysisParameters", - "/properties/AnalysisParameters/Name", - "/properties/AnalysisParameters/Type", - "/properties/AnalysisParameters/DefaultValue" + "/properties/Schema" ], "definitions": { "AnalysisParameter": { @@ -79,19 +76,121 @@ "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": { - "Text": { - "maxLength": 15000, - "minLength": 0, + "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": [ - "Text" + "EntryPoint", + "RoleArn" ], "type": "object" }, + "Hash": { + "additionalProperties": false, + "properties": { + "Sha256": { + "type": "string" + } + }, + "type": "object" + }, "ReferencedTables": { "insertionOrder": false, "items": { @@ -100,6 +199,24 @@ "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_ ]+))?$", @@ -134,7 +251,8 @@ "cleanrooms:ListTagsForResource", "cleanrooms:TagResource", "cleanrooms:GetAnalysisTemplate", - "cleanrooms:ListAnalysisTemplates" + "cleanrooms:ListAnalysisTemplates", + "iam:PassRole" ] }, "delete": { @@ -219,7 +337,8 @@ }, "Format": { "enum": [ - "SQL" + "SQL", + "PYSPARK_1_0" ], "type": "string" }, @@ -244,6 +363,9 @@ "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, @@ -257,7 +379,6 @@ "/properties/CollaborationArn", "/properties/CollaborationIdentifier", "/properties/AnalysisTemplateIdentifier", - "/properties/Schema", "/properties/Arn", "/properties/MembershipArn" ], diff --git a/schema/aws-cleanrooms-collaboration.json b/schema/aws-cleanrooms-collaboration.json index 9bedb23..b3deea3 100644 --- a/schema/aws-cleanrooms-collaboration.json +++ b/schema/aws-cleanrooms-collaboration.json @@ -5,6 +5,7 @@ "/properties/CreatorMemberAbilities", "/properties/CreatorMLMemberAbilities", "/properties/DataEncryptionMetadata", + "/properties/JobLogStatus", "/properties/QueryLogStatus", "/properties/Members", "/properties/CreatorPaymentConfiguration", @@ -18,6 +19,13 @@ ], "type": "string" }, + "CollaborationJobLogStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, "CollaborationQueryLogStatus": { "enum": [ "ENABLED", @@ -64,6 +72,18 @@ ], "type": "object" }, + "JobComputePaymentConfig": { + "additionalProperties": false, + "properties": { + "IsResponsible": { + "type": "boolean" + } + }, + "required": [ + "IsResponsible" + ], + "type": "object" + }, "MLMemberAbilities": { "additionalProperties": false, "properties": { @@ -99,6 +119,7 @@ "MemberAbility": { "enum": [ "CAN_QUERY", + "CAN_RUN_JOB", "CAN_RECEIVE_RESULTS" ], "type": "string" @@ -174,6 +195,9 @@ "PaymentConfiguration": { "additionalProperties": false, "properties": { + "JobCompute": { + "$ref": "#/definitions/JobComputePaymentConfig" + }, "MachineLearning": { "$ref": "#/definitions/MLPaymentConfig" }, @@ -304,6 +328,9 @@ "pattern": "^(?!\\s*$)[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t\\r\\n]*$", "type": "string" }, + "JobLogStatus": { + "$ref": "#/definitions/CollaborationJobLogStatus" + }, "Members": { "insertionOrder": false, "items": { @@ -346,6 +373,11 @@ ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "cleanrooms:ListTagsForResource", + "cleanrooms:UntagResource", + "cleanrooms:TagResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-cleanrooms-configuredtable.json b/schema/aws-cleanrooms-configuredtable.json index c5356bb..ef61f01 100644 --- a/schema/aws-cleanrooms-configuredtable.json +++ b/schema/aws-cleanrooms-configuredtable.json @@ -2,7 +2,6 @@ "additionalProperties": false, "createOnlyProperties": [ "/properties/AllowedColumns", - "/properties/AnalysisMethod", "/properties/TableReference" ], "definitions": { @@ -84,7 +83,7 @@ "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-]+)", + "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": { @@ -103,7 +102,9 @@ }, "AnalysisMethod": { "enum": [ - "DIRECT_QUERY" + "DIRECT_QUERY", + "DIRECT_JOB", + "MULTIPLE" ], "type": "string" }, @@ -445,6 +446,20 @@ ], "type": "string" }, + "SelectedAnalysisMethod": { + "enum": [ + "DIRECT_QUERY", + "DIRECT_JOB" + ], + "type": "string" + }, + "SelectedAnalysisMethods": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SelectedAnalysisMethod" + }, + "type": "array" + }, "SnowflakeTableReference": { "additionalProperties": false, "properties": { @@ -716,6 +731,9 @@ "pattern": "^(?!\\s*$)[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t]*$", "type": "string" }, + "SelectedAnalysisMethods": { + "$ref": "#/definitions/SelectedAnalysisMethods" + }, "TableReference": { "$ref": "#/definitions/TableReference" }, diff --git a/schema/aws-cleanrooms-membership.json b/schema/aws-cleanrooms-membership.json index 5c73179..a03a855 100644 --- a/schema/aws-cleanrooms-membership.json +++ b/schema/aws-cleanrooms-membership.json @@ -4,6 +4,25 @@ "/properties/CollaborationIdentifier" ], "definitions": { + "MembershipJobComputePaymentConfig": { + "additionalProperties": false, + "properties": { + "IsResponsible": { + "type": "boolean" + } + }, + "required": [ + "IsResponsible" + ], + "type": "object" + }, + "MembershipJobLogStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, "MembershipMLPaymentConfig": { "additionalProperties": false, "properties": { @@ -43,6 +62,9 @@ "MembershipPaymentConfiguration": { "additionalProperties": false, "properties": { + "JobCompute": { + "$ref": "#/definitions/MembershipJobComputePaymentConfig" + }, "MachineLearning": { "$ref": "#/definitions/MembershipMLPaymentConfig" }, @@ -55,6 +77,36 @@ ], "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": { @@ -111,6 +163,23 @@ ], "type": "string" }, + "ProtectedJobS3OutputConfigurationInput": { + "additionalProperties": false, + "properties": { + "Bucket": { + "maxLength": 63, + "minLength": 3, + "type": "string" + }, + "KeyPrefix": { + "type": "string" + } + }, + "required": [ + "Bucket" + ], + "type": "object" + }, "ProtectedQueryS3OutputConfiguration": { "additionalProperties": false, "properties": { @@ -255,9 +324,15 @@ "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, diff --git a/schema/aws-cloudformation-guardhook.json b/schema/aws-cloudformation-guardhook.json index 8cddccd..9f35086 100644 --- a/schema/aws-cloudformation-guardhook.json +++ b/schema/aws-cloudformation-guardhook.json @@ -69,7 +69,20 @@ "StackName": { "description": "CloudFormation Stack name", "maxLength": 128, - "pattern": "^[a-zA-Z][-a-zA-Z0-9]*$", + "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": { @@ -236,7 +249,7 @@ "description": "List of stack roles that the hook is going to be excluded from", "insertionOrder": false, "items": { - "$ref": "#/definitions/Role" + "$ref": "#/definitions/StackRole" }, "maxItems": 50, "minItems": 1, @@ -247,7 +260,7 @@ "description": "List of stack roles that the hook is going to target", "insertionOrder": false, "items": { - "$ref": "#/definitions/Role" + "$ref": "#/definitions/StackRole" }, "maxItems": 50, "minItems": 1, diff --git a/schema/aws-cloudformation-lambdahook.json b/schema/aws-cloudformation-lambdahook.json index bee9738..cde28dd 100644 --- a/schema/aws-cloudformation-lambdahook.json +++ b/schema/aws-cloudformation-lambdahook.json @@ -50,7 +50,20 @@ "StackName": { "description": "CloudFormation Stack name", "maxLength": 128, - "pattern": "^[a-zA-Z][-a-zA-Z0-9]*$", + "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": { @@ -207,7 +220,7 @@ "description": "List of stack roles that the hook is going to be excluded from", "insertionOrder": false, "items": { - "$ref": "#/definitions/Role" + "$ref": "#/definitions/StackRole" }, "maxItems": 50, "minItems": 1, @@ -218,7 +231,7 @@ "description": "List of stack roles that the hook is going to target", "insertionOrder": false, "items": { - "$ref": "#/definitions/Role" + "$ref": "#/definitions/StackRole" }, "maxItems": 50, "minItems": 1, diff --git a/schema/aws-cloudformation-publictypeversion.json b/schema/aws-cloudformation-publictypeversion.json index 84090a4..f418016 100644 --- a/schema/aws-cloudformation-publictypeversion.json +++ b/schema/aws-cloudformation-publictypeversion.json @@ -74,10 +74,10 @@ "type": "string" }, "PublisherId": { - "description": "The publisher id assigned by CloudFormation for publishing in this region.", + "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-]{40}", + "pattern": "[0-9a-zA-Z-]{1,40}", "type": "string" }, "Type": { diff --git a/schema/aws-cloudformation-publisher.json b/schema/aws-cloudformation-publisher.json index 95fa32b..6ab7722 100644 --- a/schema/aws-cloudformation-publisher.json +++ b/schema/aws-cloudformation-publisher.json @@ -51,10 +51,10 @@ "type": "string" }, "PublisherId": { - "description": "The publisher id assigned by CloudFormation for publishing in this region.", + "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-]{40}", + "pattern": "[0-9a-zA-Z-]{1,40}", "type": "string" }, "PublisherProfile": { diff --git a/schema/aws-cloudformation-stack.json b/schema/aws-cloudformation-stack.json index 7d18c37..fdddf33 100644 --- a/schema/aws-cloudformation-stack.json +++ b/schema/aws-cloudformation-stack.json @@ -203,7 +203,10 @@ "uniqueItems": false }, "TemplateBody": { - "type": "object" + "type": [ + "object", + "string" + ] }, "TemplateURL": { "maxLength": 1024, diff --git a/schema/aws-cloudformation-stackset.json b/schema/aws-cloudformation-stackset.json index d135ab6..4f0bbf3 100644 --- a/schema/aws-cloudformation-stackset.json +++ b/schema/aws-cloudformation-stackset.json @@ -420,6 +420,17 @@ "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", diff --git a/schema/aws-cloudformation-typeactivation.json b/schema/aws-cloudformation-typeactivation.json index acd367f..1c5b4c7 100644 --- a/schema/aws-cloudformation-typeactivation.json +++ b/schema/aws-cloudformation-typeactivation.json @@ -105,10 +105,10 @@ "type": "string" }, "PublisherId": { - "description": "The publisher id assigned by CloudFormation for publishing in this region.", + "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-]{40}", + "pattern": "[0-9a-zA-Z-]{1,40}", "type": "string" }, "Type": { diff --git a/schema/aws-cloudfront-anycastiplist.json b/schema/aws-cloudfront-anycastiplist.json index eceb244..79e8959 100644 --- a/schema/aws-cloudfront-anycastiplist.json +++ b/schema/aws-cloudfront-anycastiplist.json @@ -8,33 +8,41 @@ "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" } }, @@ -51,14 +59,17 @@ }, "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}_.:/=+\\-@]*)$", @@ -72,8 +83,10 @@ }, "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" }, @@ -83,7 +96,7 @@ "type": "object" } }, - "description": "Definition of AWS::CloudFront::AnycastIpList Resource Type", + "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": [ @@ -114,25 +127,31 @@ ], "properties": { "AnycastIpList": { - "$ref": "#/definitions/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" + "$ref": "#/definitions/Tags", + "description": "A complex type that contains zero or more ``Tag`` elements." } }, "readOnlyProperties": [ diff --git a/schema/aws-cloudfront-connectiongroup.json b/schema/aws-cloudfront-connectiongroup.json new file mode 100644 index 0000000..cdccf8c --- /dev/null +++ b/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/schema/aws-cloudfront-distribution.json b/schema/aws-cloudfront-distribution.json index 552cd14..fe2dc41 100644 --- a/schema/aws-cloudfront-distribution.json +++ b/schema/aws-cloudfront-distribution.json @@ -135,6 +135,13 @@ ], "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*.", @@ -376,7 +383,7 @@ "uniqueItems": false }, "AnycastIpListId": { - "description": "", + "description": "ID of the Anycast static IP list that is associated with the distribution.", "type": "string" }, "CNAMEs": { @@ -400,6 +407,10 @@ "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" @@ -477,6 +488,19 @@ "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": { @@ -683,7 +707,7 @@ }, "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).", + "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*.", @@ -729,6 +753,10 @@ "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": [ @@ -879,6 +907,44 @@ }, "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.", @@ -973,6 +1039,30 @@ } }, "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": [ @@ -983,8 +1073,10 @@ "handlers": { "create": { "permissions": [ + "cloudfront:CreateConnectionGroup", "cloudfront:CreateDistribution", "cloudfront:CreateDistributionWithTags", + "cloudfront:GetConnectionGroup", "cloudfront:GetDistribution", "cloudfront:GetDistributionConfig", "cloudfront:TagResource" @@ -999,6 +1091,7 @@ }, "list": { "permissions": [ + "cloudfront:ListTagsForResource", "cloudfront:ListDistributions" ] }, @@ -1010,6 +1103,8 @@ }, "update": { "permissions": [ + "cloudfront:CreateConnectionGroup", + "cloudfront:GetConnectionGroup", "cloudfront:GetDistribution", "cloudfront:GetDistributionConfig", "cloudfront:UpdateDistribution", @@ -1054,9 +1149,15 @@ ], "tagging": { "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false + "permissions": [ + "cloudfront:TagResource", + "cloudfront:ListTagsForResource", + "cloudfront:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true }, "typeName": "AWS::CloudFront::Distribution" } diff --git a/schema/aws-cloudfront-distributiontenant.json b/schema/aws-cloudfront-distributiontenant.json new file mode 100644 index 0000000..697431f --- /dev/null +++ b/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/schema/aws-cloudfront-vpcorigin.json b/schema/aws-cloudfront-vpcorigin.json new file mode 100644 index 0000000..1bfb782 --- /dev/null +++ b/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/schema/aws-cloudtrail-channel.json b/schema/aws-cloudtrail-channel.json index c503485..53dbf50 100644 --- a/schema/aws-cloudtrail-channel.json +++ b/schema/aws-cloudtrail-channel.json @@ -97,7 +97,8 @@ "read": { "permissions": [ "CloudTrail:GetChannel", - "CloudTrail:ListChannels" + "CloudTrail:ListChannels", + "CloudTrail:ListTags" ] }, "update": { @@ -153,13 +154,15 @@ "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", - "writeOnlyProperties": [ - "/properties/Tags" - ] + "typeName": "AWS::CloudTrail::Channel" } diff --git a/schema/aws-cloudtrail-eventdatastore.json b/schema/aws-cloudtrail-eventdatastore.json index 2639138..eee37ab 100644 --- a/schema/aws-cloudtrail-eventdatastore.json +++ b/schema/aws-cloudtrail-eventdatastore.json @@ -334,5 +334,17 @@ ], "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/schema/aws-cloudwatch-metricstream.json b/schema/aws-cloudwatch-metricstream.json index abf6a19..73f0a36 100644 --- a/schema/aws-cloudwatch-metricstream.json +++ b/schema/aws-cloudwatch-metricstream.json @@ -149,7 +149,8 @@ }, "read": { "permissions": [ - "cloudwatch:GetMetricStream" + "cloudwatch:GetMetricStream", + "cloudwatch:ListTagsForResource" ] }, "update": { @@ -274,9 +275,17 @@ "/properties/State" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudwatch.git", - "taggable": true, - "typeName": "AWS::CloudWatch::MetricStream", - "writeOnlyProperties": [ - "/properties/Tags" - ] + "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/schema/aws-codebuild-project.json b/schema/aws-codebuild-project.json index ce7ef51..853e396 100644 --- a/schema/aws-codebuild-project.json +++ b/schema/aws-codebuild-project.json @@ -199,6 +199,9 @@ "ProjectCache": { "additionalProperties": false, "properties": { + "CacheNamespace": { + "type": "string" + }, "Location": { "type": "string" }, @@ -328,8 +331,14 @@ "ScopeConfiguration": { "additionalProperties": false, "properties": { + "Domain": { + "type": "string" + }, "Name": { "type": "string" + }, + "Scope": { + "type": "string" } }, "required": [ diff --git a/schema/aws-codeconnections-connection.json b/schema/aws-codeconnections-connection.json index f4db7af..ff12695 100644 --- a/schema/aws-codeconnections-connection.json +++ b/schema/aws-codeconnections-connection.json @@ -122,6 +122,11 @@ "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, diff --git a/schema/aws-codestarconnections-connection.json b/schema/aws-codestarconnections-connection.json index 841e298..144dee2 100644 --- a/schema/aws-codestarconnections-connection.json +++ b/schema/aws-codestarconnections-connection.json @@ -122,6 +122,11 @@ "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, diff --git a/schema/aws-cognito-userpooldomain.json b/schema/aws-cognito-userpooldomain.json index 3a72eb4..f4c387c 100644 --- a/schema/aws-cognito-userpooldomain.json +++ b/schema/aws-cognito-userpooldomain.json @@ -16,8 +16,39 @@ } }, "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/Id" + "/properties/UserPoolId", + "/properties/Domain" ], "properties": { "CloudFrontDistribution": { @@ -29,9 +60,6 @@ "Domain": { "type": "string" }, - "Id": { - "type": "string" - }, "ManagedLoginVersion": { "type": "integer" }, @@ -40,12 +68,21 @@ } }, "readOnlyProperties": [ - "/properties/Id", "/properties/CloudFrontDistribution" ], "required": [ "UserPoolId", "Domain" ], - "typeName": "AWS::Cognito::UserPoolDomain" + "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/schema/aws-comprehend-flywheel.json b/schema/aws-comprehend-flywheel.json index c373bc6..483da50 100644 --- a/schema/aws-comprehend-flywheel.json +++ b/schema/aws-comprehend-flywheel.json @@ -276,6 +276,10 @@ ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "comprehend:TagResource", + "comprehend:UntagResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-config-configrule.json b/schema/aws-config-configrule.json index 67a555d..66c0d01 100644 --- a/schema/aws-config-configrule.json +++ b/schema/aws-config-configrule.json @@ -116,7 +116,7 @@ "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*.", + "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": [ diff --git a/schema/aws-connect-contactflowversion.json b/schema/aws-connect-contactflowversion.json new file mode 100644 index 0000000..9796959 --- /dev/null +++ b/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/schema/aws-connect-instance.json b/schema/aws-connect-instance.json index 747460f..ba79c04 100644 --- a/schema/aws-connect-instance.json +++ b/schema/aws-connect-instance.json @@ -226,6 +226,11 @@ "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, diff --git a/schema/aws-connect-phonenumber.json b/schema/aws-connect-phonenumber.json index 8d3f7ac..ccd2864 100644 --- a/schema/aws-connect-phonenumber.json +++ b/schema/aws-connect-phonenumber.json @@ -40,7 +40,9 @@ "connect:DescribePhoneNumber", "connect:TagResource", "connect:ImportPhoneNumber", - "sms-voice:DescribePhoneNumbers" + "sms-voice:DescribePhoneNumbers", + "social-messaging:GetLinkedWhatsAppBusinessAccountPhoneNumber", + "social-messaging:TagResource" ] }, "delete": { diff --git a/schema/aws-connect-prompt.json b/schema/aws-connect-prompt.json index fc43407..48f4462 100644 --- a/schema/aws-connect-prompt.json +++ b/schema/aws-connect-prompt.json @@ -122,6 +122,10 @@ "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, diff --git a/schema/aws-connect-quickconnect.json b/schema/aws-connect-quickconnect.json index 0c02df7..d5dc0a0 100644 --- a/schema/aws-connect-quickconnect.json +++ b/schema/aws-connect-quickconnect.json @@ -228,6 +228,10 @@ "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, diff --git a/schema/aws-connect-securityprofile.json b/schema/aws-connect-securityprofile.json index a924e03..aa24170 100644 --- a/schema/aws-connect-securityprofile.json +++ b/schema/aws-connect-securityprofile.json @@ -235,6 +235,10 @@ "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, diff --git a/schema/aws-connect-tasktemplate.json b/schema/aws-connect-tasktemplate.json index a0257c3..2e3f23b 100644 --- a/schema/aws-connect-tasktemplate.json +++ b/schema/aws-connect-tasktemplate.json @@ -335,6 +335,11 @@ "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, diff --git a/schema/aws-connect-trafficdistributiongroup.json b/schema/aws-connect-trafficdistributiongroup.json index 17b15a3..63a8f78 100644 --- a/schema/aws-connect-trafficdistributiongroup.json +++ b/schema/aws-connect-trafficdistributiongroup.json @@ -131,6 +131,10 @@ "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, diff --git a/schema/aws-connect-user.json b/schema/aws-connect-user.json index aaf78b7..51e9583 100644 --- a/schema/aws-connect-user.json +++ b/schema/aws-connect-user.json @@ -298,6 +298,10 @@ "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, diff --git a/schema/aws-connect-userhierarchygroup.json b/schema/aws-connect-userhierarchygroup.json index f3c0d0c..fe2e16c 100644 --- a/schema/aws-connect-userhierarchygroup.json +++ b/schema/aws-connect-userhierarchygroup.json @@ -28,7 +28,7 @@ "type": "object" }, "UserHierarchyGroupArn": { - "description": "The Amazon Resource Name (ARN) for the user hierarchy group.", + "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" } @@ -119,6 +119,10 @@ "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, diff --git a/schema/aws-connect-view.json b/schema/aws-connect-view.json index dc97973..94ad970 100644 --- a/schema/aws-connect-view.json +++ b/schema/aws-connect-view.json @@ -153,6 +153,10 @@ "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, diff --git a/schema/aws-controltower-enabledbaseline.json b/schema/aws-controltower-enabledbaseline.json index 3b195d9..598d2ca 100644 --- a/schema/aws-controltower-enabledbaseline.json +++ b/schema/aws-controltower-enabledbaseline.json @@ -78,6 +78,7 @@ "permissions": [ "controltower:EnableBaseline", "controltower:TagResource", + "controltower:UntagResource", "controltower:GetBaselineOperation", "controltower:GetEnabledBaseline", "controltower:ListTagsForResource", @@ -172,7 +173,7 @@ "servicecatalog:ListPrincipalsForPortfolio", "servicecatalog:DeleteProvisioningArtifact", "controltower:TagResource", - "controltower:ListTagsForResource", + "controltower:UntagResource", "controltower:GetEnabledBaseline" ] } @@ -228,6 +229,11 @@ ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "controltower:TagResource", + "controltower:UntagResource", + "controltower:ListTagsForResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-controltower-enabledcontrol.json b/schema/aws-controltower-enabledcontrol.json index db8861c..7a9e724 100644 --- a/schema/aws-controltower-enabledcontrol.json +++ b/schema/aws-controltower-enabledcontrol.json @@ -94,7 +94,8 @@ "organizations:DetachPolicy", "organizations:ListPoliciesForTarget", "organizations:ListTargetsForPolicy", - "organizations:DescribePolicy" + "organizations:DescribePolicy", + "controltower:ListTagsForResource" ], "timeoutInMinutes": 720 }, @@ -111,7 +112,8 @@ "organizations:DetachPolicy", "organizations:ListPoliciesForTarget", "organizations:ListTargetsForPolicy", - "organizations:DescribePolicy" + "organizations:DescribePolicy", + "controltower:ListTagsForResource" ], "timeoutInMinutes": 720 }, @@ -151,7 +153,8 @@ "organizations:DetachPolicy", "organizations:ListPoliciesForTarget", "organizations:ListTargetsForPolicy", - "organizations:DescribePolicy" + "organizations:DescribePolicy", + "controltower:ListTagsForResource" ], "timeoutInMinutes": 720 } diff --git a/schema/aws-controltower-landingzone.json b/schema/aws-controltower-landingzone.json index 677ca77..fc95c77 100644 --- a/schema/aws-controltower-landingzone.json +++ b/schema/aws-controltower-landingzone.json @@ -67,6 +67,8 @@ "sso:GetPeregrineStatus", "sso:ListDirectoryAssociations", "sso:StartPeregrine", + "iam:CreateServiceLinkedRole", + "cloudformation:EnableOrganizationsAccess", "sso:RegisterRegion" ] }, @@ -91,8 +93,10 @@ "organizations:ListRoots", "sso:GetPeregrineStatus", "sso:ListDirectoryAssociations", + "iam:CreateServiceLinkedRole", "iam:DeleteRolePolicy", "iam:DetachRolePolicy", + "cloudformation:EnableOrganizationsAccess", "iam:DeleteRole" ] }, @@ -138,6 +142,8 @@ "organizations:EnableAWSServiceAccess", "organizations:ListRoots", "sso:GetPeregrineStatus", + "iam:CreateServiceLinkedRole", + "cloudformation:EnableOrganizationsAccess", "sso:ListDirectoryAssociations", "sso:StartPeregrine", "sso:RegisterRegion" diff --git a/schema/aws-customerprofiles-domain.json b/schema/aws-customerprofiles-domain.json index 59d029c..426d4cf 100644 --- a/schema/aws-customerprofiles-domain.json +++ b/schema/aws-customerprofiles-domain.json @@ -357,16 +357,6 @@ ] }, "list": { - "handlerSchema": { - "properties": { - "DomainName": { - "$ref": "resource-schema.json#/properties/DomainName" - } - }, - "required": [ - "DomainName" - ] - }, "permissions": [ "profile:ListDomains" ] diff --git a/schema/aws-customerprofiles-integration.json b/schema/aws-customerprofiles-integration.json index 6d89861..e7c19ef 100644 --- a/schema/aws-customerprofiles-integration.json +++ b/schema/aws-customerprofiles-integration.json @@ -569,6 +569,8 @@ "appflow:CreateFlow", "app-integrations:CreateEventIntegrationAssociation", "app-integrations:GetEventIntegration", + "connect:DescribeInstance", + "ds:DescribeDirectories", "events:ListTargetsByRule", "events:PutRule", "events:PutTargets", @@ -623,7 +625,9 @@ "events:PutTargets", "events:PutEvents", "profile:UntagResource", - "profile:TagResource" + "profile:TagResource", + "connect:DescribeInstance", + "ds:DescribeDirectories" ] } }, diff --git a/schema/aws-customerprofiles-objecttype.json b/schema/aws-customerprofiles-objecttype.json index 1efe89c..3288679 100644 --- a/schema/aws-customerprofiles-objecttype.json +++ b/schema/aws-customerprofiles-objecttype.json @@ -131,7 +131,9 @@ "permissions": [ "profile:GetProfileObjectType", "profile:PutProfileObjectType", - "profile:TagResource" + "profile:TagResource", + "kms:GenerateDataKey", + "kms:Decrypt" ] }, "delete": { @@ -151,12 +153,16 @@ ] }, "permissions": [ - "profile:ListProfileObjectTypes" + "profile:ListProfileObjectTypes", + "kms:GenerateDataKey", + "kms:Decrypt" ] }, "read": { "permissions": [ - "profile:GetProfileObjectType" + "profile:GetProfileObjectType", + "kms:GenerateDataKey", + "kms:Decrypt" ] }, "update": { @@ -164,7 +170,9 @@ "profile:GetProfileObjectType", "profile:PutProfileObjectType", "profile:UntagResource", - "profile:TagResource" + "profile:TagResource", + "kms:GenerateDataKey", + "kms:Decrypt" ] } }, diff --git a/schema/aws-databrew-dataset.json b/schema/aws-databrew-dataset.json index ff8905a..f139290 100644 --- a/schema/aws-databrew-dataset.json +++ b/schema/aws-databrew-dataset.json @@ -1,8 +1,7 @@ { "additionalProperties": false, "createOnlyProperties": [ - "/properties/Name", - "/properties/Tags" + "/properties/Name" ], "definitions": { "BucketOwner": { @@ -413,13 +412,14 @@ "read": { "permissions": [ "databrew:DescribeDataset", - "databrew:ListTagsForResource", "iam:ListRoles" ] }, "update": { "permissions": [ "databrew:UpdateDataset", + "databrew:TagResource", + "databrew:UntagResource", "glue:GetConnection", "glue:GetTable" ] @@ -490,7 +490,7 @@ ], "tagOnCreate": true, "tagProperty": "/properties/Tags", - "tagUpdatable": false, + "tagUpdatable": true, "taggable": true }, "typeName": "AWS::DataBrew::Dataset" diff --git a/schema/aws-databrew-job.json b/schema/aws-databrew-job.json index e1973c6..a9863c0 100644 --- a/schema/aws-databrew-job.json +++ b/schema/aws-databrew-job.json @@ -2,8 +2,7 @@ "additionalProperties": false, "createOnlyProperties": [ "/properties/Name", - "/properties/Type", - "/properties/Tags" + "/properties/Type" ], "definitions": { "AllowedStatistics": { @@ -489,7 +488,6 @@ "read": { "permissions": [ "databrew:DescribeJob", - "databrew:ListTagsForResource", "iam:ListRoles" ] }, @@ -497,6 +495,8 @@ "permissions": [ "databrew:UpdateProfileJob", "databrew:UpdateRecipeJob", + "databrew:TagResource", + "databrew:UntagResource", "iam:PassRole" ] } @@ -637,7 +637,7 @@ ], "tagOnCreate": true, "tagProperty": "/properties/Tags", - "tagUpdatable": false, + "tagUpdatable": true, "taggable": true }, "typeName": "AWS::DataBrew::Job" diff --git a/schema/aws-databrew-project.json b/schema/aws-databrew-project.json index 82520aa..548fe77 100644 --- a/schema/aws-databrew-project.json +++ b/schema/aws-databrew-project.json @@ -1,8 +1,7 @@ { "additionalProperties": false, "createOnlyProperties": [ - "/properties/Name", - "/properties/Tags" + "/properties/Name" ], "definitions": { "Sample": { @@ -76,13 +75,14 @@ "read": { "permissions": [ "databrew:DescribeProject", - "databrew:ListTagsForResource", "iam:ListRoles" ] }, "update": { "permissions": [ "databrew:UpdateProject", + "databrew:TagResource", + "databrew:UntagResource", "iam:PassRole" ] } @@ -142,7 +142,7 @@ ], "tagOnCreate": true, "tagProperty": "/properties/Tags", - "tagUpdatable": false, + "tagUpdatable": true, "taggable": true }, "typeName": "AWS::DataBrew::Project" diff --git a/schema/aws-databrew-recipe.json b/schema/aws-databrew-recipe.json index 6b11c30..8a75b86 100644 --- a/schema/aws-databrew-recipe.json +++ b/schema/aws-databrew-recipe.json @@ -1,8 +1,7 @@ { "additionalProperties": false, "createOnlyProperties": [ - "/properties/Name", - "/properties/Tags" + "/properties/Name" ], "definitions": { "Action": { @@ -530,7 +529,6 @@ "list": { "permissions": [ "databrew:ListRecipes", - "databrew:ListTagsForResource", "iam:ListRoles" ] }, @@ -543,7 +541,9 @@ }, "update": { "permissions": [ - "databrew:UpdateRecipe" + "databrew:UpdateRecipe", + "databrew:TagResource", + "databrew:UntagResource" ] } }, @@ -594,7 +594,7 @@ ], "tagOnCreate": true, "tagProperty": "/properties/Tags", - "tagUpdatable": false, + "tagUpdatable": true, "taggable": true }, "typeName": "AWS::DataBrew::Recipe" diff --git a/schema/aws-databrew-ruleset.json b/schema/aws-databrew-ruleset.json index a48fae2..41556df 100644 --- a/schema/aws-databrew-ruleset.json +++ b/schema/aws-databrew-ruleset.json @@ -2,8 +2,7 @@ "additionalProperties": false, "createOnlyProperties": [ "/properties/Name", - "/properties/TargetArn", - "/properties/Tags" + "/properties/TargetArn" ], "definitions": { "ColumnSelector": { @@ -192,13 +191,14 @@ "read": { "permissions": [ "databrew:DescribeRuleset", - "databrew:ListTagsForResource", "iam:ListRoles" ] }, "update": { "permissions": [ - "databrew:UpdateRuleset" + "databrew:UpdateRuleset", + "databrew:TagResource", + "databrew:UntagResource" ] } }, @@ -256,7 +256,7 @@ ], "tagOnCreate": true, "tagProperty": "/properties/Tags", - "tagUpdatable": false, + "tagUpdatable": true, "taggable": true }, "typeName": "AWS::DataBrew::Ruleset" diff --git a/schema/aws-databrew-schedule.json b/schema/aws-databrew-schedule.json index cab0033..e8b464c 100644 --- a/schema/aws-databrew-schedule.json +++ b/schema/aws-databrew-schedule.json @@ -1,8 +1,7 @@ { "additionalProperties": false, "createOnlyProperties": [ - "/properties/Name", - "/properties/Tags" + "/properties/Name" ], "definitions": { "JobName": { @@ -59,13 +58,14 @@ "read": { "permissions": [ "databrew:DescribeSchedule", - "databrew:ListTagsForResource", "iam:ListRoles" ] }, "update": { "permissions": [ - "databrew:UpdateSchedule" + "databrew:UpdateSchedule", + "databrew:TagResource", + "databrew:UntagResource" ] } }, @@ -116,7 +116,7 @@ ], "tagOnCreate": true, "tagProperty": "/properties/Tags", - "tagUpdatable": false, + "tagUpdatable": true, "taggable": true }, "typeName": "AWS::DataBrew::Schedule" diff --git a/schema/aws-datapipeline-pipeline.json b/schema/aws-datapipeline-pipeline.json index 6bff956..c5a9af9 100644 --- a/schema/aws-datapipeline-pipeline.json +++ b/schema/aws-datapipeline-pipeline.json @@ -246,6 +246,10 @@ "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, diff --git a/schema/aws-datasync-locationnfs.json b/schema/aws-datasync-locationnfs.json index 0636e39..7c05e74 100644 --- a/schema/aws-datasync-locationnfs.json +++ b/schema/aws-datasync-locationnfs.json @@ -1,8 +1,5 @@ { "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ServerHostname" - ], "definitions": { "MountOptions": { "additionalProperties": false, diff --git a/schema/aws-datasync-locationobjectstorage.json b/schema/aws-datasync-locationobjectstorage.json index 240008f..ea5b1e6 100644 --- a/schema/aws-datasync-locationobjectstorage.json +++ b/schema/aws-datasync-locationobjectstorage.json @@ -1,8 +1,7 @@ { "additionalProperties": false, "createOnlyProperties": [ - "/properties/BucketName", - "/properties/ServerHostname" + "/properties/BucketName" ], "definitions": { "Tag": { diff --git a/schema/aws-datasync-locationsmb.json b/schema/aws-datasync-locationsmb.json index fcbc200..a4c2b5e 100644 --- a/schema/aws-datasync-locationsmb.json +++ b/schema/aws-datasync-locationsmb.json @@ -1,8 +1,5 @@ { "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ServerHostname" - ], "definitions": { "MountOptions": { "additionalProperties": false, @@ -100,12 +97,50 @@ "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, @@ -164,7 +199,6 @@ "/properties/LocationUri" ], "required": [ - "User", "AgentArns" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", @@ -184,6 +218,8 @@ "writeOnlyProperties": [ "/properties/Password", "/properties/Subdirectory", - "/properties/ServerHostname" + "/properties/ServerHostname", + "/properties/KerberosKeytab", + "/properties/KerberosKrb5Conf" ] } diff --git a/schema/aws-datazone-connection.json b/schema/aws-datazone-connection.json new file mode 100644 index 0000000..3e56414 --- /dev/null +++ b/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/schema/aws-datazone-datasource.json b/schema/aws-datazone-datasource.json index 13a745d..71b1fa7 100644 --- a/schema/aws-datazone-datasource.json +++ b/schema/aws-datazone-datasource.json @@ -1,6 +1,7 @@ { "additionalProperties": false, "createOnlyProperties": [ + "/properties/ConnectionIdentifier", "/properties/EnvironmentIdentifier", "/properties/DomainIdentifier", "/properties/ProjectIdentifier", @@ -146,6 +147,12 @@ "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." @@ -229,8 +236,6 @@ } }, "required": [ - "RedshiftCredentialConfiguration", - "RedshiftStorage", "RelationalFilterConfigurations" ], "type": "object" @@ -454,6 +459,14 @@ "$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", @@ -480,7 +493,6 @@ }, "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": { @@ -548,6 +560,7 @@ } }, "readOnlyProperties": [ + "/properties/ConnectionId", "/properties/CreatedAt", "/properties/DomainId", "/properties/EnvironmentId", @@ -563,7 +576,6 @@ "Name", "DomainIdentifier", "ProjectIdentifier", - "EnvironmentIdentifier", "Type" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", @@ -576,6 +588,7 @@ "typeName": "AWS::DataZone::DataSource", "writeOnlyProperties": [ "/properties/AssetFormsInput", + "/properties/ConnectionIdentifier", "/properties/EnvironmentIdentifier", "/properties/DomainIdentifier", "/properties/Configuration", diff --git a/schema/aws-datazone-domain.json b/schema/aws-datazone-domain.json index 7a07365..2d1649f 100644 --- a/schema/aws-datazone-domain.json +++ b/schema/aws-datazone-domain.json @@ -6,7 +6,8 @@ ], "additionalProperties": false, "createOnlyProperties": [ - "/properties/KmsKeyIdentifier" + "/properties/KmsKeyIdentifier", + "/properties/DomainVersion" ], "definitions": { "AuthType": { @@ -29,10 +30,20 @@ ], "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" }, @@ -86,6 +97,14 @@ "sso:DeleteManagedApplicationInstance", "sso:PutApplicationAssignmentConfiguration", "sso:ListInstances", + "sso:PutApplicationAccessScope", + "sso:PutApplicationGrant", + "sso:PutApplicationAuthenticationMethod", + "sso:PutApplicationAccessScope", + "sso:CreateApplication", + "sso:DeleteApplication", + "sso:CreateApplicationAssignment", + "sso:DeleteApplicationAssignment", "iam:PassRole" ] }, @@ -95,6 +114,8 @@ "datazone:GetDomain", "sso:DeleteManagedApplicationInstance", "sso:PutApplicationAssignmentConfiguration", + "sso:DeleteApplication", + "sso:DeleteApplicationAssignment", "sso:ListInstances" ] }, @@ -118,6 +139,7 @@ "sso:DeleteManagedApplicationInstance", "sso:PutApplicationAssignmentConfiguration", "sso:ListInstances", + "sso:PutApplicationAccessScope", "iam:PassRole" ] } @@ -145,6 +167,14 @@ "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}$", @@ -174,6 +204,18 @@ "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." @@ -193,6 +235,7 @@ } }, "readOnlyProperties": [ + "/properties/RootDomainUnitId", "/properties/Arn", "/properties/CreatedAt", "/properties/Id", diff --git a/schema/aws-deadline-limit.json b/schema/aws-deadline-limit.json new file mode 100644 index 0000000..2c18d5e --- /dev/null +++ b/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/schema/aws-deadline-queuelimitassociation.json b/schema/aws-deadline-queuelimitassociation.json new file mode 100644 index 0000000..7edec7f --- /dev/null +++ b/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/schema/aws-detective-graph.json b/schema/aws-detective-graph.json index 6a60a58..e5ca602 100644 --- a/schema/aws-detective-graph.json +++ b/schema/aws-detective-graph.json @@ -26,13 +26,16 @@ "create": { "permissions": [ "detective:CreateGraph", + "detective:ListGraphs", + "detective:TagResource", "detective:UpdateOrganizationConfiguration", "organizations:DescribeOrganization" ] }, "delete": { "permissions": [ - "detective:DeleteGraph" + "detective:DeleteGraph", + "detective:ListGraphs" ] }, "list": { @@ -53,6 +56,7 @@ }, "update": { "permissions": [ + "detective:ListGraphs", "detective:UntagResource", "detective:TagResource", "detective:ListTagsForResource", diff --git a/schema/aws-dms-dataprovider.json b/schema/aws-dms-dataprovider.json index ee27774..82fa12a 100644 --- a/schema/aws-dms-dataprovider.json +++ b/schema/aws-dms-dataprovider.json @@ -6,6 +6,13 @@ ], "additionalProperties": false, "definitions": { + "Db2SslModeValue": { + "enum": [ + "none", + "verify-ca" + ], + "type": "string" + }, "DmsSslModeValue": { "enum": [ "none", @@ -150,7 +157,9 @@ "redshift", "mariadb", "mongodb", - "docdb" + "docdb", + "db2", + "db2_zos" ], "type": "string" }, @@ -201,6 +210,16 @@ "required": [ "MongoDbSettings" ] + }, + { + "required": [ + "IbmDb2LuwSettings" + ] + }, + { + "required": [ + "IbmDb2zOsSettings" + ] } ], "description": "The property identifies the exact type of settings for the data provider.", @@ -222,8 +241,7 @@ "type": "string" }, "SslMode": { - "$ref": "#/definitions/MongoDbSslModeValue", - "type": "object" + "$ref": "#/definitions/MongoDbSslModeValue" } }, "required": [ @@ -233,6 +251,62 @@ ], "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.", @@ -247,8 +321,7 @@ "type": "string" }, "SslMode": { - "$ref": "#/definitions/DmsSslModeValue", - "type": "object" + "$ref": "#/definitions/DmsSslModeValue" } }, "required": [ @@ -275,8 +348,7 @@ "type": "string" }, "SslMode": { - "$ref": "#/definitions/DmsSslModeValue", - "type": "object" + "$ref": "#/definitions/DmsSslModeValue" } }, "required": [ @@ -292,15 +364,13 @@ "description": "MongoDbSettings property identifier.", "properties": { "AuthMechanism": { - "$ref": "#/definitions/MongoDbAuthMechanism", - "type": "object" + "$ref": "#/definitions/MongoDbAuthMechanism" }, "AuthSource": { "type": "string" }, "AuthType": { - "$ref": "#/definitions/MongoDbAuthType", - "type": "object" + "$ref": "#/definitions/MongoDbAuthType" }, "CertificateArn": { "type": "string" @@ -315,8 +385,7 @@ "type": "string" }, "SslMode": { - "$ref": "#/definitions/MongoDbSslModeValue", - "type": "object" + "$ref": "#/definitions/MongoDbSslModeValue" } }, "required": [ @@ -339,8 +408,7 @@ "type": "string" }, "SslMode": { - "$ref": "#/definitions/DmsSslModeValue", - "type": "object" + "$ref": "#/definitions/DmsSslModeValue" } }, "required": [ @@ -382,8 +450,7 @@ "type": "string" }, "SslMode": { - "$ref": "#/definitions/DmsSslModeValue", - "type": "object" + "$ref": "#/definitions/DmsSslModeValue" } }, "required": [ @@ -411,8 +478,7 @@ "type": "string" }, "SslMode": { - "$ref": "#/definitions/DmsSslModeValue", - "type": "object" + "$ref": "#/definitions/DmsSslModeValue" } }, "required": [ diff --git a/schema/aws-dms-replicationinstance.json b/schema/aws-dms-replicationinstance.json index dea46fc..8bddcdd 100644 --- a/schema/aws-dms-replicationinstance.json +++ b/schema/aws-dms-replicationinstance.json @@ -3,6 +3,7 @@ "createOnlyProperties": [ "/properties/KmsKeyId", "/properties/ResourceIdentifier", + "/properties/DnsNameServers", "/properties/ReplicationSubnetGroupIdentifier", "/properties/PubliclyAccessible" ], @@ -41,6 +42,9 @@ "AvailabilityZone": { "type": "string" }, + "DnsNameServers": { + "type": "string" + }, "EngineVersion": { "type": "string" }, diff --git a/schema/aws-docdbelastic-cluster.json b/schema/aws-docdbelastic-cluster.json index fbd0793..8daf22f 100644 --- a/schema/aws-docdbelastic-cluster.json +++ b/schema/aws-docdbelastic-cluster.json @@ -198,6 +198,11 @@ "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, diff --git a/schema/aws-dsql-cluster.json b/schema/aws-dsql-cluster.json new file mode 100644 index 0000000..7c3f51b --- /dev/null +++ b/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/schema/aws-dynamodb-globaltable.json b/schema/aws-dynamodb-globaltable.json index f210836..4588d16 100644 --- a/schema/aws-dynamodb-globaltable.json +++ b/schema/aws-dynamodb-globaltable.json @@ -664,9 +664,6 @@ "type": "array", "uniqueItems": true }, - "PointInTimeRecoverySpecification": { - "$ref": "#/definitions/PointInTimeRecoverySpecification" - }, "Replicas": { "insertionOrder": false, "items": { diff --git a/schema/aws-dynamodb-table.json b/schema/aws-dynamodb-table.json index 27a6857..029cf0d 100644 --- a/schema/aws-dynamodb-table.json +++ b/schema/aws-dynamodb-table.json @@ -17,7 +17,7 @@ "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", + "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" } }, @@ -103,7 +103,7 @@ "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.", + "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" }, @@ -181,7 +181,7 @@ "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.", + "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" } }, @@ -226,7 +226,7 @@ "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.", + "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" }, @@ -276,7 +276,7 @@ "type": "boolean" }, "RecoveryPeriodInDays": { - "description": "", + "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" @@ -289,7 +289,7 @@ "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.", + "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" }, @@ -297,7 +297,7 @@ "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.", + "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" } }, @@ -395,7 +395,7 @@ "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).", + "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" } }, @@ -413,7 +413,7 @@ "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.", + "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" } }, @@ -424,7 +424,7 @@ }, "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*.", + "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.", @@ -489,7 +489,7 @@ "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.", + "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": [ @@ -602,7 +602,7 @@ "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``.", + "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": { diff --git a/schema/aws-ec2-capacityreservation.json b/schema/aws-ec2-capacityreservation.json index f9ee12a..cd05f3c 100644 --- a/schema/aws-ec2-capacityreservation.json +++ b/schema/aws-ec2-capacityreservation.json @@ -9,9 +9,22 @@ "/properties/OutPostArn", "/properties/EphemeralStorage", "/properties/EbsOptimized", - "/properties/PlacementGroupArn" + "/properties/PlacementGroupArn", + "/properties/AvailabilityZoneId" ], "definitions": { + "CapacityAllocation": { + "additionalProperties": false, + "properties": { + "AllocationType": { + "type": "string" + }, + "Count": { + "type": "integer" + } + }, + "type": "object" + }, "Tag": { "additionalProperties": false, "properties": { @@ -93,9 +106,44 @@ "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" }, @@ -126,9 +174,21 @@ "OutPostArn": { "type": "string" }, + "OwnerId": { + "type": "string" + }, "PlacementGroupArn": { "type": "string" }, + "ReservationType": { + "type": "string" + }, + "StartDate": { + "type": "string" + }, + "State": { + "type": "string" + }, "TagSpecifications": { "insertionOrder": false, "items": { @@ -150,14 +210,34 @@ "readOnlyProperties": [ "/properties/Id", "/properties/AvailableInstanceCount", - "/properties/TotalInstanceCount" + "/properties/TotalInstanceCount", + "/properties/StartDate", + "/properties/CapacityReservationArn", + "/properties/CreateDate", + "/properties/State", + "/properties/OwnerId", + "/properties/ReservationType", + "/properties/CapacityAllocationSet", + "/properties/CommitmentInfo", + "/properties/DeliveryPreference", + "/properties/CapacityReservationFleetId" ], "required": [ "InstanceCount", - "AvailabilityZone", "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/schema/aws-ec2-carriergateway.json b/schema/aws-ec2-carriergateway.json index 84c8acc..42fae04 100644 --- a/schema/aws-ec2-carriergateway.json +++ b/schema/aws-ec2-carriergateway.json @@ -31,7 +31,7 @@ "uniqueItems": true } }, - "description": "An example resource schema demonstrating some basic constructs and validation rules.", + "description": "Resource Type definition for Carrier Gateway which describes the Carrier Gateway resource", "handlers": { "create": { "permissions": [ @@ -43,7 +43,8 @@ "delete": { "permissions": [ "ec2:DeleteCarrierGateway", - "ec2:DescribeCarrierGateways" + "ec2:DescribeCarrierGateways", + "ec2:DeleteTags" ] }, "list": { diff --git a/schema/aws-ec2-eip.json b/schema/aws-ec2-eip.json index 0cda6da..eda3917 100644 --- a/schema/aws-ec2-eip.json +++ b/schema/aws-ec2-eip.json @@ -128,6 +128,11 @@ "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, diff --git a/schema/aws-ec2-instance.json b/schema/aws-ec2-instance.json index ebbe95f..350b0a5 100644 --- a/schema/aws-ec2-instance.json +++ b/schema/aws-ec2-instance.json @@ -148,6 +148,31 @@ ], "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": { @@ -229,6 +254,9 @@ "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, diff --git a/schema/aws-ec2-instanceconnectendpoint.json b/schema/aws-ec2-instanceconnectendpoint.json index 95a195e..7bf4b16 100644 --- a/schema/aws-ec2-instanceconnectendpoint.json +++ b/schema/aws-ec2-instanceconnectendpoint.json @@ -112,6 +112,10 @@ "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, diff --git a/schema/aws-ec2-ipam.json b/schema/aws-ec2-ipam.json index 89a7c28..a434ec6 100644 --- a/schema/aws-ec2-ipam.json +++ b/schema/aws-ec2-ipam.json @@ -15,6 +15,21 @@ ], "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.", @@ -46,7 +61,9 @@ "ec2:CreateIpam", "iam:CreateServiceLinkedRole", "ec2:CreateTags", - "ec2:DescribeIpams" + "ec2:DescribeIpams", + "ec2:DescribeIpamResourceDiscoveries", + "ec2:ModifyIpamResourceDiscovery" ] }, "delete": { @@ -63,7 +80,8 @@ }, "read": { "permissions": [ - "ec2:DescribeIpams" + "ec2:DescribeIpams", + "ec2:DescribeIpamResourceDiscoveries" ] }, "update": { @@ -71,7 +89,9 @@ "ec2:ModifyIpam", "ec2:CreateTags", "ec2:DeleteTags", - "ec2:DescribeIpams" + "ec2:DescribeIpams", + "ec2:DescribeIpamResourceDiscoveries", + "ec2:ModifyIpamResourceDiscovery" ] } }, @@ -91,6 +111,15 @@ "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" }, diff --git a/schema/aws-ec2-ipamresourcediscovery.json b/schema/aws-ec2-ipamresourcediscovery.json index 4e7bbe4..4d26e49 100644 --- a/schema/aws-ec2-ipamresourcediscovery.json +++ b/schema/aws-ec2-ipamresourcediscovery.json @@ -15,6 +15,21 @@ ], "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.", @@ -45,7 +60,9 @@ "permissions": [ "ec2:CreateIpamResourceDiscovery", "ec2:DescribeIpamResourceDiscoveries", - "ec2:CreateTags" + "ec2:ModifyIpamResourceDiscovery", + "ec2:CreateTags", + "iam:CreateServiceLinkedRole" ] }, "delete": { @@ -106,6 +123,15 @@ "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" diff --git a/schema/aws-ec2-keypair.json b/schema/aws-ec2-keypair.json index 512fa8c..5d11d25 100644 --- a/schema/aws-ec2-keypair.json +++ b/schema/aws-ec2-keypair.json @@ -113,6 +113,9 @@ "uniqueItems": true } }, + "propertyTransform": { + "/properties/PublicKeyMaterial": "$join([PublicKeyMaterial, \"\n\"])" + }, "readOnlyProperties": [ "/properties/KeyPairId", "/properties/KeyFingerprint" @@ -126,6 +129,7 @@ "permissions": [ "ec2:CreateTags" ], + "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": false, "taggable": true diff --git a/schema/aws-ec2-launchtemplate.json b/schema/aws-ec2-launchtemplate.json index cc65614..c46334d 100644 --- a/schema/aws-ec2-launchtemplate.json +++ b/schema/aws-ec2-launchtemplate.json @@ -148,7 +148,7 @@ "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).", + "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" @@ -190,7 +190,7 @@ "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.", + "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": { @@ -218,7 +218,7 @@ }, "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).", + "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.", @@ -334,7 +334,7 @@ "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 \n Default: Any accelerator type", + "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" }, @@ -496,18 +496,18 @@ }, "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*." + "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 instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-stop-protection.html) in the *Amazon EC2 User Guide*.", + "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": "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.", + "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": { @@ -515,7 +515,7 @@ "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.", + "description": "Deprecated.\n Amazon Elastic Graphics reached end of life on January 8, 2024.", "items": { "$ref": "#/definitions/ElasticGpuSpecification" }, @@ -523,7 +523,7 @@ "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.\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.", + "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" }, @@ -584,7 +584,7 @@ }, "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*." + "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", @@ -599,7 +599,8 @@ "uniqueItems": false }, "NetworkPerformanceOptions": { - "description": "" + "$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", @@ -638,7 +639,7 @@ "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*.", + "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" } }, @@ -646,7 +647,7 @@ }, "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).", + "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", @@ -751,7 +752,7 @@ "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``", + "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" } }, @@ -808,7 +809,7 @@ "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.", + "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": { @@ -824,7 +825,7 @@ "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](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``", + "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": { @@ -913,6 +914,17 @@ }, "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).", @@ -1023,7 +1035,7 @@ "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.", + "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": { diff --git a/schema/aws-ec2-localgatewayroute.json b/schema/aws-ec2-localgatewayroute.json index f2b2268..b7b0b49 100644 --- a/schema/aws-ec2-localgatewayroute.json +++ b/schema/aws-ec2-localgatewayroute.json @@ -4,7 +4,7 @@ "/properties/DestinationCidrBlock", "/properties/LocalGatewayRouteTableId" ], - "description": "Describes a route for a local gateway route table.", + "description": "Resource Type definition for Local Gateway Route which describes a route for a local gateway route table.", "handlers": { "create": { "permissions": [ diff --git a/schema/aws-ec2-localgatewayroutetable.json b/schema/aws-ec2-localgatewayroutetable.json index 774769a..97b6397 100644 --- a/schema/aws-ec2-localgatewayroutetable.json +++ b/schema/aws-ec2-localgatewayroutetable.json @@ -32,7 +32,7 @@ "uniqueItems": true } }, - "description": "Describes a route table for a local gateway.", + "description": "Resource Type definition for Local Gateway Route Table which describes a route table for a local gateway.", "handlers": { "create": { "permissions": [ @@ -55,14 +55,16 @@ }, "read": { "permissions": [ - "ec2:DescribeLocalGatewayRouteTables" + "ec2:DescribeLocalGatewayRouteTables", + "ec2:DescribeTags" ] }, "update": { "permissions": [ "ec2:DescribeLocalGatewayRouteTables", "ec2:CreateTags", - "ec2:DeleteTags" + "ec2:DeleteTags", + "ec2:DescribeTags" ] } }, @@ -116,10 +118,11 @@ ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-lgw.git", "tagging": { - "cloudFormationSystemTags": false, + "cloudFormationSystemTags": true, "permissions": [ "ec2:DeleteTags", - "ec2:CreateTags" + "ec2:CreateTags", + "ec2:DescribeTags" ], "tagOnCreate": true, "tagProperty": "/properties/Tags", diff --git a/schema/aws-ec2-localgatewayroutetablevirtualinterfacegroupassociation.json b/schema/aws-ec2-localgatewayroutetablevirtualinterfacegroupassociation.json index 7b2fb85..4691b9a 100644 --- a/schema/aws-ec2-localgatewayroutetablevirtualinterfacegroupassociation.json +++ b/schema/aws-ec2-localgatewayroutetablevirtualinterfacegroupassociation.json @@ -32,7 +32,7 @@ "uniqueItems": true } }, - "description": "Describes a local gateway route table virtual interface group association for a local gateway.", + "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": [ @@ -55,14 +55,16 @@ }, "read": { "permissions": [ - "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations" + "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations", + "ec2:DescribeTags" ] }, "update": { "permissions": [ "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations", "ec2:CreateTags", - "ec2:DeleteTags" + "ec2:DeleteTags", + "ec2:DescribeTags" ] } }, @@ -117,8 +119,14 @@ ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-lgw.git", "tagging": { - "cloudFormationSystemTags": false, + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags", + "ec2:DescribeTags" + ], "tagOnCreate": true, + "tagProperty": "/properties/Tags", "tagUpdatable": true, "taggable": true }, diff --git a/schema/aws-ec2-localgatewayroutetablevpcassociation.json b/schema/aws-ec2-localgatewayroutetablevpcassociation.json index 6418adf..48df7ee 100644 --- a/schema/aws-ec2-localgatewayroutetablevpcassociation.json +++ b/schema/aws-ec2-localgatewayroutetablevpcassociation.json @@ -32,7 +32,7 @@ "uniqueItems": true } }, - "description": "Describes an association between a local gateway route table and a VPC.", + "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": [ @@ -55,14 +55,16 @@ }, "read": { "permissions": [ - "ec2:DescribeLocalGatewayRouteTableVpcAssociations" + "ec2:DescribeLocalGatewayRouteTableVpcAssociations", + "ec2:DescribeTags" ] }, "update": { "permissions": [ "ec2:DescribeLocalGatewayRouteTableVpcAssociations", "ec2:CreateTags", - "ec2:DeleteTags" + "ec2:DeleteTags", + "ec2:DescribeTags" ] } }, @@ -106,10 +108,11 @@ ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-lgw.git", "tagging": { - "cloudFormationSystemTags": false, + "cloudFormationSystemTags": true, "permissions": [ "ec2:DeleteTags", - "ec2:CreateTags" + "ec2:CreateTags", + "ec2:DescribeTags" ], "tagOnCreate": true, "tagProperty": "/properties/Tags", diff --git a/schema/aws-ec2-networkacl.json b/schema/aws-ec2-networkacl.json index 4a792ad..4bd8690 100644 --- a/schema/aws-ec2-networkacl.json +++ b/schema/aws-ec2-networkacl.json @@ -90,6 +90,10 @@ "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, diff --git a/schema/aws-ec2-networkinsightsaccessscopeanalysis.json b/schema/aws-ec2-networkinsightsaccessscopeanalysis.json index 9cdab78..ec8dc1d 100644 --- a/schema/aws-ec2-networkinsightsaccessscopeanalysis.json +++ b/schema/aws-ec2-networkinsightsaccessscopeanalysis.json @@ -127,5 +127,16 @@ "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/schema/aws-ec2-networkinsightsanalysis.json b/schema/aws-ec2-networkinsightsanalysis.json index 1d2c672..9d50d7e 100644 --- a/schema/aws-ec2-networkinsightsanalysis.json +++ b/schema/aws-ec2-networkinsightsanalysis.json @@ -702,5 +702,16 @@ "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/schema/aws-ec2-placementgroup.json b/schema/aws-ec2-placementgroup.json index e2f7879..be9698b 100644 --- a/schema/aws-ec2-placementgroup.json +++ b/schema/aws-ec2-placementgroup.json @@ -96,6 +96,7 @@ "permissions": [ "ec2:CreateTags" ], + "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": false, "taggable": true diff --git a/schema/aws-ec2-routeserver.json b/schema/aws-ec2-routeserver.json new file mode 100644 index 0000000..83cd7bb --- /dev/null +++ b/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/schema/aws-ec2-routeserverassociation.json b/schema/aws-ec2-routeserverassociation.json new file mode 100644 index 0000000..b14bf6c --- /dev/null +++ b/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/schema/aws-ec2-routeserverendpoint.json b/schema/aws-ec2-routeserverendpoint.json new file mode 100644 index 0000000..edad254 --- /dev/null +++ b/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/schema/aws-ec2-routeserverpeer.json b/schema/aws-ec2-routeserverpeer.json new file mode 100644 index 0000000..59b2286 --- /dev/null +++ b/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/schema/aws-ec2-routeserverpropagation.json b/schema/aws-ec2-routeserverpropagation.json new file mode 100644 index 0000000..4224e02 --- /dev/null +++ b/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/schema/aws-ec2-routetable.json b/schema/aws-ec2-routetable.json index e3540f8..4e49e7c 100644 --- a/schema/aws-ec2-routetable.json +++ b/schema/aws-ec2-routetable.json @@ -88,6 +88,10 @@ "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, diff --git a/schema/aws-ec2-transitgateway.json b/schema/aws-ec2-transitgateway.json index 4a6f012..841d176 100644 --- a/schema/aws-ec2-transitgateway.json +++ b/schema/aws-ec2-transitgateway.json @@ -29,47 +29,27 @@ "ec2:CreateTransitGateway", "ec2:CreateTags", "ec2:DescribeTransitGateways", - "ec2:DescribeTags", - "ec2:DeleteTransitGateway", - "ec2:DeleteTags", - "ec2:ModifyTransitGateway", - "ec2:ModifyTransitGatewayOptions" + "ec2:DescribeTags" ] }, "delete": { "permissions": [ - "ec2:CreateTransitGateway", - "ec2:CreateTags", "ec2:DescribeTransitGateways", "ec2:DescribeTags", "ec2:DeleteTransitGateway", - "ec2:DeleteTags", - "ec2:ModifyTransitGateway", - "ec2:ModifyTransitGatewayOptions" + "ec2:DeleteTags" ] }, "list": { "permissions": [ - "ec2:CreateTransitGateway", - "ec2:CreateTags", "ec2:DescribeTransitGateways", - "ec2:DescribeTags", - "ec2:DeleteTransitGateway", - "ec2:DeleteTags", - "ec2:ModifyTransitGateway", - "ec2:ModifyTransitGatewayOptions" + "ec2:DescribeTags" ] }, "read": { "permissions": [ - "ec2:CreateTransitGateway", - "ec2:CreateTags", "ec2:DescribeTransitGateways", - "ec2:DescribeTags", - "ec2:DeleteTransitGateway", - "ec2:DeleteTags", - "ec2:ModifyTransitGateway", - "ec2:ModifyTransitGatewayOptions" + "ec2:DescribeTags" ] }, "update": { @@ -150,6 +130,10 @@ "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, diff --git a/schema/aws-ec2-transitgatewayattachment.json b/schema/aws-ec2-transitgatewayattachment.json index 8f587bb..994129b 100644 --- a/schema/aws-ec2-transitgatewayattachment.json +++ b/schema/aws-ec2-transitgatewayattachment.json @@ -26,58 +26,34 @@ "handlers": { "create": { "permissions": [ - "ec2:DescribeTransitGatewayAttachments", "ec2:DescribeTransitGatewayVpcAttachments", "ec2:CreateTransitGatewayVpcAttachment", - "ec2:DeleteTransitGatewayVpcAttachment", "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:DescribeTags", - "ec2:DescribeTransitGatewayAttachments", - "ec2:ModifyTransitGatewayVpcAttachment" + "ec2:DescribeTags" ] }, "delete": { "permissions": [ - "ec2:DescribeTransitGatewayAttachments", "ec2:DescribeTransitGatewayVpcAttachments", - "ec2:CreateTransitGatewayVpcAttachment", "ec2:DeleteTransitGatewayVpcAttachment", - "ec2:CreateTags", "ec2:DeleteTags", - "ec2:DescribeTags", - "ec2:DescribeTransitGatewayAttachments", - "ec2:ModifyTransitGatewayVpcAttachment" + "ec2:DescribeTags" ] }, "list": { "permissions": [ - "ec2:DescribeTransitGatewayAttachments", "ec2:DescribeTransitGatewayVpcAttachments", - "ec2:DescribeTags", - "ec2:CreateTransitGatewayVpcAttachment", - "ec2:CreateTags", - "ec2:DeleteTransitGatewayVpcAttachment", - "ec2:DeleteTags", - "ec2:ModifyTransitGatewayVpcAttachment" + "ec2:DescribeTags" ] }, "read": { "permissions": [ - "ec2:DescribeTransitGatewayAttachments", "ec2:DescribeTransitGatewayVpcAttachments", - "ec2:CreateTransitGatewayVpcAttachment", - "ec2:DeleteTransitGatewayVpcAttachment", - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:DescribeTags", - "ec2:DescribeTransitGatewayAttachments", - "ec2:ModifyTransitGatewayVpcAttachment" + "ec2:DescribeTags" ] }, "update": { "permissions": [ - "ec2:DescribeTransitGatewayAttachments", "ec2:DescribeTransitGatewayVpcAttachments", "ec2:DescribeTags", "ec2:CreateTransitGatewayVpcAttachment", @@ -156,6 +132,10 @@ "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, diff --git a/schema/aws-ec2-transitgatewayconnect.json b/schema/aws-ec2-transitgatewayconnect.json index b29eab0..87ea898 100644 --- a/schema/aws-ec2-transitgatewayconnect.json +++ b/schema/aws-ec2-transitgatewayconnect.json @@ -36,31 +36,36 @@ "permissions": [ "ec2:CreateTransitGatewayConnect", "ec2:DescribeTransitGatewayConnects", - "ec2:CreateTags" + "ec2:CreateTags", + "ec2:DescribeTags" ] }, "delete": { "permissions": [ "ec2:DeleteTransitGatewayConnect", "ec2:DescribeTransitGatewayConnects", - "ec2:DeleteTags" + "ec2:DeleteTags", + "ec2:DescribeTags" ] }, "list": { "permissions": [ - "ec2:DescribeTransitGatewayConnects" + "ec2:DescribeTransitGatewayConnects", + "ec2:DescribeTags" ] }, "read": { "permissions": [ - "ec2:DescribeTransitGatewayConnects" + "ec2:DescribeTransitGatewayConnects", + "ec2:DescribeTags" ] }, "update": { "permissions": [ "ec2:DescribeTransitGatewayConnects", "ec2:DeleteTags", - "ec2:CreateTags" + "ec2:CreateTags", + "ec2:DescribeTags" ] } }, @@ -113,6 +118,10 @@ "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, diff --git a/schema/aws-ec2-transitgatewaymulticastdomain.json b/schema/aws-ec2-transitgatewaymulticastdomain.json index f5d2b24..e863ce4 100644 --- a/schema/aws-ec2-transitgatewaymulticastdomain.json +++ b/schema/aws-ec2-transitgatewaymulticastdomain.json @@ -25,31 +25,36 @@ "permissions": [ "ec2:DescribeTransitGatewayMulticastDomains", "ec2:CreateTransitGatewayMulticastDomain", - "ec2:CreateTags" + "ec2:CreateTags", + "ec2:DescribeTags" ] }, "delete": { "permissions": [ "ec2:DescribeTransitGatewayMulticastDomains", "ec2:DeleteTransitGatewayMulticastDomain", - "ec2:DeleteTags" + "ec2:DeleteTags", + "ec2:DescribeTags" ] }, "list": { "permissions": [ - "ec2:DescribeTransitGatewayMulticastDomains" + "ec2:DescribeTransitGatewayMulticastDomains", + "ec2:DescribeTags" ] }, "read": { "permissions": [ - "ec2:DescribeTransitGatewayMulticastDomains" + "ec2:DescribeTransitGatewayMulticastDomains", + "ec2:DescribeTags" ] }, "update": { "permissions": [ "ec2:DescribeTransitGatewayMulticastDomains", "ec2:DeleteTags", - "ec2:CreateTags" + "ec2:CreateTags", + "ec2:DescribeTags" ] } }, @@ -117,6 +122,10 @@ "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, diff --git a/schema/aws-ec2-transitgatewaypeeringattachment.json b/schema/aws-ec2-transitgatewaypeeringattachment.json index 14f72fb..16a9b06 100644 --- a/schema/aws-ec2-transitgatewaypeeringattachment.json +++ b/schema/aws-ec2-transitgatewaypeeringattachment.json @@ -42,31 +42,36 @@ "permissions": [ "ec2:CreateTransitGatewayPeeringAttachment", "ec2:DescribeTransitGatewayPeeringAttachments", - "ec2:CreateTags" + "ec2:CreateTags", + "ec2:DescribeTags" ] }, "delete": { "permissions": [ "ec2:DeleteTransitGatewayPeeringAttachment", "ec2:DescribeTransitGatewayPeeringAttachments", - "ec2:DeleteTags" + "ec2:DeleteTags", + "ec2:DescribeTags" ] }, "list": { "permissions": [ - "ec2:DescribeTransitGatewayPeeringAttachments" + "ec2:DescribeTransitGatewayPeeringAttachments", + "ec2:DescribeTags" ] }, "read": { "permissions": [ - "ec2:DescribeTransitGatewayPeeringAttachments" + "ec2:DescribeTransitGatewayPeeringAttachments", + "ec2:DescribeTags" ] }, "update": { "permissions": [ "ec2:DescribeTransitGatewayPeeringAttachments", "ec2:CreateTags", - "ec2:DeleteTags" + "ec2:DeleteTags", + "ec2:DescribeTags" ] } }, @@ -130,6 +135,10 @@ "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, diff --git a/schema/aws-ec2-transitgatewayvpcattachment.json b/schema/aws-ec2-transitgatewayvpcattachment.json index 2ce98be..24e1bc3 100644 --- a/schema/aws-ec2-transitgatewayvpcattachment.json +++ b/schema/aws-ec2-transitgatewayvpcattachment.json @@ -27,58 +27,34 @@ "handlers": { "create": { "permissions": [ - "ec2:DescribeTransitGatewayAttachments", "ec2:DescribeTransitGatewayVpcAttachments", "ec2:CreateTransitGatewayVpcAttachment", - "ec2:DeleteTransitGatewayVpcAttachment", "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:DescribeTags", - "ec2:DescribeTransitGatewayAttachments", - "ec2:ModifyTransitGatewayVpcAttachment" + "ec2:DescribeTags" ] }, "delete": { "permissions": [ - "ec2:DescribeTransitGatewayAttachments", "ec2:DescribeTransitGatewayVpcAttachments", - "ec2:CreateTransitGatewayVpcAttachment", "ec2:DeleteTransitGatewayVpcAttachment", - "ec2:CreateTags", "ec2:DeleteTags", - "ec2:DescribeTags", - "ec2:DescribeTransitGatewayAttachments", - "ec2:ModifyTransitGatewayVpcAttachment" + "ec2:DescribeTags" ] }, "list": { "permissions": [ - "ec2:DescribeTransitGatewayAttachments", "ec2:DescribeTransitGatewayVpcAttachments", - "ec2:DescribeTags", - "ec2:CreateTransitGatewayVpcAttachment", - "ec2:CreateTags", - "ec2:DeleteTransitGatewayVpcAttachment", - "ec2:DeleteTags", - "ec2:ModifyTransitGatewayVpcAttachment" + "ec2:DescribeTags" ] }, "read": { "permissions": [ - "ec2:DescribeTransitGatewayAttachments", "ec2:DescribeTransitGatewayVpcAttachments", - "ec2:CreateTransitGatewayVpcAttachment", - "ec2:DeleteTransitGatewayVpcAttachment", - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:DescribeTags", - "ec2:DescribeTransitGatewayAttachments", - "ec2:ModifyTransitGatewayVpcAttachment" + "ec2:DescribeTags" ] }, "update": { "permissions": [ - "ec2:DescribeTransitGatewayAttachments", "ec2:DescribeTransitGatewayVpcAttachments", "ec2:DescribeTags", "ec2:CreateTransitGatewayVpcAttachment", @@ -169,6 +145,10 @@ "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, diff --git a/schema/aws-ec2-verifiedaccessendpoint.json b/schema/aws-ec2-verifiedaccessendpoint.json index 1cff923..5743538 100644 --- a/schema/aws-ec2-verifiedaccessendpoint.json +++ b/schema/aws-ec2-verifiedaccessendpoint.json @@ -8,9 +8,49 @@ "/properties/EndpointType", "/properties/SecurityGroupIds", "/properties/NetworkInterfaceOptions/NetworkInterfaceId", - "/properties/LoadBalancerOptions/LoadBalancerArn" + "/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.", @@ -25,6 +65,15 @@ "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" @@ -55,6 +104,15 @@ "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" @@ -62,6 +120,67 @@ }, "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" @@ -115,35 +234,33 @@ "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:DescribeVpcs", "ec2:GetVerifiedAccessEndpointPolicy", - "ec2:ModifyVerifiedAccessEndpoint", - "ec2:ModifyVerifiedAccessEndpointPolicy", + "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:GenerateDataKey", - "kms:Decrypt" + "kms:Decrypt", + "rds:DescribeDbInstances", + "rds:DescribeDbProxies", + "rds:DescribeDbClusters", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeVpcEndpointServiceConfigurations" ], "timeoutInMinutes": 600 }, @@ -151,70 +268,25 @@ "permissions": [ "ec2:DescribeVerifiedAccessEndpoints", "ec2:DeleteVerifiedAccessEndpoint", + "ec2:GetVerifiedAccessEndpointPolicy", "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" + "kms:Decrypt", + "kms:GenerateDataKey" ], "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", + "ec2:DescribeTags", "kms:DescribeKey", - "kms:RetireGrant", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" + "kms:Decrypt", + "kms:GenerateDataKey" ] }, "read": { @@ -222,33 +294,9 @@ "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" + "kms:Decrypt", + "kms:GenerateDataKey" ] }, "update": { @@ -257,34 +305,24 @@ "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:DescribeVpcs", "ec2:DescribeTags", "ec2:DeleteTags", "ec2:CreateTags", - "ec2:CreateVerifiedAccessEndpoint", - "ec2:DeleteVerifiedAccessEndpoint", - "iam:CreateServiceLinkedRole", - "iam:ListRoles", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeListeners", + "elasticloadbalancing:DescribeListenerCertificates", "kms:DescribeKey", + "kms:GenerateDataKey", "kms:RetireGrant", "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" + "kms:Decrypt", + "rds:DescribeDbInstances", + "rds:DescribeDbProxies", + "rds:DescribeDbClusters" ], "timeoutInMinutes": 60 } @@ -301,6 +339,10 @@ "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" @@ -349,6 +391,10 @@ "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, @@ -398,12 +444,9 @@ "/properties/VerifiedAccessInstanceId" ], "required": [ - "ApplicationDomain", "AttachmentType", - "DomainCertificateArn", "EndpointType", - "VerifiedAccessGroupId", - "EndpointDomainPrefix" + "VerifiedAccessGroupId" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-verified-access.aws-ec2-verifiedaccessendpoint", "tagging": { diff --git a/schema/aws-ec2-vpcendpoint.json b/schema/aws-ec2-vpcendpoint.json index 9e077d4..079570c 100644 --- a/schema/aws-ec2-vpcendpoint.json +++ b/schema/aws-ec2-vpcendpoint.json @@ -5,14 +5,16 @@ "/properties/VpcEndpointType", "/properties/VpcId", "/properties/ServiceNetworkArn", - "/properties/ResourceConfigurationArn" + "/properties/ResourceConfigurationArn", + "/properties/ServiceRegion" ], "definitions": { "DnsOptionsSpecification": { "additionalProperties": false, - "description": "", + "description": "Describes the DNS options for an endpoint.", "properties": { "DnsRecordIpType": { + "description": "The DNS records created for the endpoint.", "enum": [ "ipv4", "ipv6", @@ -23,6 +25,7 @@ "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", @@ -35,12 +38,14 @@ }, "Tag": { "additionalProperties": false, - "description": "", + "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" } }, @@ -62,7 +67,8 @@ "vpc-lattice:CreateServiceNetworkVpcEndpointAssociation", "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation", "ec2:CreateTags", - "ec2:DeleteTags" + "ec2:DeleteTags", + "vpce:AllowMultiRegion" ], "timeoutInMinutes": 210 }, @@ -74,7 +80,8 @@ "ec2:DescribeSecurityGroups", "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation", "ec2:CreateTags", - "ec2:DeleteTags" + "ec2:DeleteTags", + "vpce:AllowMultiRegion" ], "timeoutInMinutes": 210 }, @@ -103,7 +110,8 @@ "vpc-lattice:CreateServiceNetworkVpcEndpointAssociation", "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation", "ec2:CreateTags", - "ec2:DeleteTags" + "ec2:DeleteTags", + "vpce:AllowMultiRegion" ], "timeoutInMinutes": 210 } @@ -127,14 +135,14 @@ }, "DnsOptions": { "$ref": "#/definitions/DnsOptionsSpecification", - "description": "" + "description": "Describes the DNS options for an endpoint." }, "Id": { "description": "", "type": "string" }, "IpAddressType": { - "description": "", + "description": "The supported IP address types.", "enum": [ "ipv4", "ipv6", @@ -164,7 +172,7 @@ "type": "boolean" }, "ResourceConfigurationArn": { - "description": "", + "description": "The Amazon Resource Name (ARN) of the resource configuration.", "type": "string" }, "RouteTableIds": { @@ -214,6 +222,10 @@ "type": "string" }, "ServiceNetworkArn": { + "description": "The Amazon Resource Name (ARN) of the service network.", + "type": "string" + }, + "ServiceRegion": { "description": "", "type": "string" }, @@ -231,7 +243,7 @@ "uniqueItems": true }, "Tags": { - "description": "", + "description": "The tags to associate with the endpoint.", "insertionOrder": false, "items": { "$ref": "#/definitions/Tag" @@ -265,7 +277,7 @@ "VpcId" ], "tagging": { - "cloudFormationSystemTags": false, + "cloudFormationSystemTags": true, "permissions": [ "ec2:CreateTags", "ec2:DeleteTags", diff --git a/schema/aws-ec2-vpcendpointservice.json b/schema/aws-ec2-vpcendpointservice.json index e872fb7..2202950 100644 --- a/schema/aws-ec2-vpcendpointservice.json +++ b/schema/aws-ec2-vpcendpointservice.json @@ -1,6 +1,13 @@ { "additionalProperties": false, "definitions": { + "IpAddressType": { + "enum": [ + "ipv4", + "ipv6" + ], + "type": "string" + }, "Tag": { "additionalProperties": false, "properties": { @@ -28,6 +35,7 @@ "cloudwatch:DeleteInsightRules", "cloudwatch:PutManagedInsightRules", "ec2:DescribeVpcEndpointServiceConfigurations", + "vpce:AllowMultiRegion", "ec2:CreateTags" ] }, @@ -37,7 +45,8 @@ "ec2:DescribeVpcEndpointServiceConfigurations", "cloudwatch:ListManagedInsightRules", "cloudwatch:DeleteInsightRules", - "ec2:DeleteTags" + "ec2:DeleteTags", + "vpce:AllowMultiRegion" ] }, "list": { @@ -61,7 +70,8 @@ "cloudwatch:DeleteInsightRules", "cloudwatch:PutManagedInsightRules", "ec2:CreateTags", - "ec2:DeleteTags" + "ec2:DeleteTags", + "vpce:AllowMultiRegion" ] } }, @@ -99,6 +109,24 @@ "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, diff --git a/schema/aws-ec2-vpnconnection.json b/schema/aws-ec2-vpnconnection.json index d67b32a..e29ded2 100644 --- a/schema/aws-ec2-vpnconnection.json +++ b/schema/aws-ec2-vpnconnection.json @@ -462,6 +462,7 @@ "readOnlyProperties": [ "/properties/VpnConnectionId" ], + "replacementStrategy": "delete_then_create", "required": [ "Type", "CustomerGatewayId" diff --git a/schema/aws-ecr-publicrepository.json b/schema/aws-ecr-publicrepository.json index d5cd86f..4783df6 100644 --- a/schema/aws-ecr-publicrepository.json +++ b/schema/aws-ecr-publicrepository.json @@ -55,16 +55,16 @@ }, "Tag": { "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", + "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": "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 -. ", + "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": "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 -. ", + "description": "A ``value`` acts as a descriptor within a tag category (key).", "maxLength": 255, "minLength": 1, "type": "string" @@ -82,7 +82,7 @@ "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", + "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": [ @@ -112,6 +112,7 @@ }, "update": { "permissions": [ + "ecr-public:DescribeRepositories", "ecr-public:SetRepositoryPolicy", "ecr-public:DeleteRepositoryPolicy", "ecr-public:PutRepositoryCatalogData", @@ -125,11 +126,12 @@ ], "properties": { "Arn": { + "description": "", "type": "string" }, "RepositoryCatalogData": { "additionalProperties": false, - "description": "The CatalogData property type specifies Catalog data for ECR Public Repository. For information about Catalog Data, see ", + "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" @@ -150,14 +152,14 @@ "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.", + "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 repository. For more information, see https://docs.aws.amazon.com/AmazonECR/latest/userguide/RepositoryPolicyExamples.html in the Amazon Elastic Container Registry User Guide. ", + "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" @@ -180,6 +182,11 @@ "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, diff --git a/schema/aws-ecr-pullthroughcacherule.json b/schema/aws-ecr-pullthroughcacherule.json index 06730e2..c78c060 100644 --- a/schema/aws-ecr-pullthroughcacherule.json +++ b/schema/aws-ecr-pullthroughcacherule.json @@ -4,7 +4,9 @@ "/properties/EcrRepositoryPrefix", "/properties/UpstreamRegistryUrl", "/properties/CredentialArn", - "/properties/UpstreamRegistry" + "/properties/UpstreamRegistry", + "/properties/CustomRoleArn", + "/properties/UpstreamRepositoryPrefix" ], "definitions": { "CredentialArn": { @@ -14,21 +16,30 @@ "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]+)*", + "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" }, @@ -40,6 +51,9 @@ }, "UpstreamRegistryUrl": { "$ref": "#/definitions/UpstreamRegistryUrl" + }, + "UpstreamRepositoryPrefix": { + "$ref": "#/definitions/UpstreamRepositoryPrefix" } }, "required": [ @@ -60,9 +74,16 @@ "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 configures the upstream registry configuration details for an Amazon Elastic Container Registry (Amazon Private ECR) pull-through cache.", + "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": [ @@ -70,7 +91,8 @@ "ecr:CreatePullThroughCacheRule", "ecr:DeletePullThroughCacheRule", "iam:CreateServiceLinkedRole", - "secretsmanager:GetSecretValue" + "secretsmanager:GetSecretValue", + "iam:PassRole" ] }, "delete": { @@ -95,7 +117,8 @@ "ecr:CreatePullThroughCacheRule", "ecr:DeletePullThroughCacheRule", "iam:CreateServiceLinkedRole", - "secretsmanager:GetSecretValue" + "secretsmanager:GetSecretValue", + "iam:PassRole" ] } }, @@ -104,26 +127,28 @@ ], "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" + "$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": { - "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" + "$ref": "#/definitions/EcrRepositoryPrefix", + "description": "The Amazon ECR repository prefix associated with the pull through cache rule." }, "UpstreamRegistry": { - "description": "The name of the upstream registry.", - "type": "string" + "$ref": "#/definitions/UpstreamRegistry", + "description": "The name of the upstream source registry associated with the pull through cache rule." }, "UpstreamRegistryUrl": { - "description": "The upstreamRegistryUrl is the endpoint of upstream registry url of the public repository to be cached", - "type": "string" + "$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", @@ -133,6 +158,7 @@ "typeName": "AWS::ECR::PullThroughCacheRule", "writeOnlyProperties": [ "/properties/CredentialArn", - "/properties/UpstreamRegistry" + "/properties/UpstreamRegistry", + "/properties/CustomRoleArn" ] } diff --git a/schema/aws-ecr-registryscanningconfiguration.json b/schema/aws-ecr-registryscanningconfiguration.json new file mode 100644 index 0000000..36442aa --- /dev/null +++ b/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/schema/aws-ecr-replicationconfiguration.json b/schema/aws-ecr-replicationconfiguration.json index 2d205a7..db6a2b8 100644 --- a/schema/aws-ecr-replicationconfiguration.json +++ b/schema/aws-ecr-replicationconfiguration.json @@ -25,10 +25,10 @@ }, "ReplicationConfiguration": { "additionalProperties": false, - "description": "An object representing the replication configuration for a registry.", + "description": "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.", + "description": "An array of objects representing the replication destinations and repository filters for a replication configuration.", "items": { "$ref": "#/definitions/ReplicationRule" }, @@ -44,13 +44,15 @@ }, "ReplicationDestination": { "additionalProperties": false, - "description": "An array of objects representing the details of a replication destination.", + "description": "An array of objects representing the destination for a replication rule.", "properties": { "Region": { - "$ref": "#/definitions/Region" + "$ref": "#/definitions/Region", + "description": "The Region to replicate to." }, "RegistryId": { - "$ref": "#/definitions/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": [ @@ -61,10 +63,10 @@ }, "ReplicationRule": { "additionalProperties": false, - "description": "An array of objects representing the details of a replication destination.", + "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 details of a replication destination.", + "description": "An array of objects representing the destination for a replication rule.", "items": { "$ref": "#/definitions/ReplicationDestination" }, @@ -73,7 +75,7 @@ "type": "array" }, "RepositoryFilters": { - "description": "An array of objects representing the details of a repository filter.", + "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" }, @@ -89,13 +91,15 @@ }, "RepositoryFilter": { "additionalProperties": false, - "description": "An array of objects representing the details of a repository filter.", + "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" + "$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" + "$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": [ @@ -105,7 +109,7 @@ "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", + "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": [ @@ -144,11 +148,12 @@ ], "properties": { "RegistryId": { - "description": "The RegistryId associated with the aws account.", + "description": "", "type": "string" }, "ReplicationConfiguration": { - "$ref": "#/definitions/ReplicationConfiguration" + "$ref": "#/definitions/ReplicationConfiguration", + "description": "The replication configuration for a registry." } }, "readOnlyProperties": [ diff --git a/schema/aws-ecr-repository.json b/schema/aws-ecr-repository.json index e6c596b..538aec3 100644 --- a/schema/aws-ecr-repository.json +++ b/schema/aws-ecr-repository.json @@ -13,11 +13,11 @@ }, "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*.", + "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. 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*." + "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", @@ -148,7 +148,6 @@ "ecr:DescribeRepositories", "ecr:PutLifecyclePolicy", "ecr:SetRepositoryPolicy", - "ecr:ListTagsForResource", "ecr:TagResource", "ecr:UntagResource", "ecr:DeleteLifecyclePolicy", diff --git a/schema/aws-ecr-repositorycreationtemplate.json b/schema/aws-ecr-repositorycreationtemplate.json index 2f9eb8f..d686f7e 100644 --- a/schema/aws-ecr-repositorycreationtemplate.json +++ b/schema/aws-ecr-repositorycreationtemplate.json @@ -14,13 +14,15 @@ }, "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", + "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" + "$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" + "$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": [ @@ -45,16 +47,16 @@ }, "Tag": { "additionalProperties": false, - "description": "An array of key-value pairs to apply to this resource.", + "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": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "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": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "description": "A ``value`` acts as a descriptor within a tag category (key).", "maxLength": 256, "minLength": 0, "type": "string" @@ -67,7 +69,7 @@ "type": "object" } }, - "description": "AWS::ECR::RepositoryCreationTemplate is used to create repository with configuration from a pre-defined template.", + "description": "The details of the repository creation template associated with the request.", "handlers": { "create": { "permissions": [ @@ -111,7 +113,7 @@ ], "properties": { "AppliedFor": { - "description": "A list of enumerable Strings representing the repository creation scenarios that the template will apply towards.", + "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" @@ -120,26 +122,27 @@ "uniqueItems": true }, "CreatedAt": { - "description": "Create timestamp of the template.", + "description": "", "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.", + "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 of the template.", + "description": "The description associated with the repository creation template.", "maxLength": 256, "minLength": 0, "type": "string" }, "EncryptionConfiguration": { - "$ref": "#/definitions/EncryptionConfiguration" + "$ref": "#/definitions/EncryptionConfiguration", + "description": "The encryption configuration associated with the repository creation template." }, "ImageTagMutability": { - "description": "The image tag mutability setting for the repository.", + "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" @@ -147,24 +150,24 @@ "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", + "description": "The lifecycle policy to use for repositories created using the template.", "maxLength": 30720, "minLength": 100, "type": "string" }, "Prefix": { - "description": "The prefix use to match the repository name and apply the template.", + "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": "The JSON repository policy text to apply to the repository. For more information, see https://docs.aws.amazon.com/AmazonECR/latest/userguide/RepositoryPolicyExamples.html", + "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": "An array of key-value pairs to apply to this resource.", + "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" @@ -174,7 +177,7 @@ "uniqueItems": true }, "UpdatedAt": { - "description": "Update timestamp of the template.", + "description": "", "type": "string" } }, diff --git a/schema/aws-ecs-cluster.json b/schema/aws-ecs-cluster.json index 0346c0f..d1babeb 100644 --- a/schema/aws-ecs-cluster.json +++ b/schema/aws-ecs-cluster.json @@ -44,14 +44,14 @@ }, "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.", + "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 ``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).", + "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" } }, @@ -116,11 +116,11 @@ "description": "The managed storage configuration for the cluster.", "properties": { "FargateEphemeralStorageKmsKeyId": { - "description": "Specify the KMSlong key ID for the Fargate ephemeral storage.", + "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.", + "description": "Specify a KMSlong key ID to encrypt the managed storage.\n The key must be a single Region key.", "type": "string" } }, @@ -131,7 +131,7 @@ "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*.", + "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" } }, @@ -218,7 +218,7 @@ "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.", + "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" }, diff --git a/schema/aws-ecs-service.json b/schema/aws-ecs-service.json index e6c55c8..d1924e4 100644 --- a/schema/aws-ecs-service.json +++ b/schema/aws-ecs-service.json @@ -14,7 +14,7 @@ "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 ``ENABLED``.", + "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" @@ -22,14 +22,14 @@ "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.", + "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 per ``awsvpcConfiguration``.\n All specified subnets must be from the same VPC.", + "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" }, @@ -458,10 +458,6 @@ "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" }, - "VolumeInitializationRate": { - "description": "", - "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" @@ -515,7 +511,7 @@ }, "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.", + "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.", @@ -568,7 +564,7 @@ "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.", + "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": [ @@ -624,7 +620,7 @@ "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.", + "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" }, @@ -668,7 +664,7 @@ "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*.", + "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" }, @@ -683,14 +679,14 @@ "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.", + "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.", + "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" }, @@ -734,7 +730,7 @@ "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.", + "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" }, @@ -752,7 +748,7 @@ "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.", + "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" }, diff --git a/schema/aws-ecs-taskdefinition.json b/schema/aws-ecs-taskdefinition.json index 6973294..2db0ee3 100644 --- a/schema/aws-ecs-taskdefinition.json +++ b/schema/aws-ecs-taskdefinition.json @@ -520,19 +520,19 @@ "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.", + "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.", + "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.\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.", + "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.", + "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" } }, @@ -581,7 +581,7 @@ }, "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.", + "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\"``", @@ -1061,7 +1061,7 @@ "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.", + "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": { diff --git a/schema/aws-efs-mounttarget.json b/schema/aws-efs-mounttarget.json index b266687..da4ba6f 100644 --- a/schema/aws-efs-mounttarget.json +++ b/schema/aws-efs-mounttarget.json @@ -66,7 +66,7 @@ "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.", + "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" diff --git a/schema/aws-eks-addon.json b/schema/aws-eks-addon.json index fa23ddb..983f6c6 100644 --- a/schema/aws-eks-addon.json +++ b/schema/aws-eks-addon.json @@ -95,11 +95,11 @@ "eks:UpdateAddon", "eks:DescribeAddon", "eks:DescribeUpdate", - "eks:ListTagsForResource", "eks:TagResource", "eks:UntagResource", "eks:CreatePodIdentityAssociation", - "eks:DeletePodIdentityAssociation" + "eks:DeletePodIdentityAssociation", + "eks:UpdatePodIdentityAssociation" ] } }, diff --git a/schema/aws-eks-cluster.json b/schema/aws-eks-cluster.json index 358149f..35d2773 100644 --- a/schema/aws-eks-cluster.json +++ b/schema/aws-eks-cluster.json @@ -8,8 +8,7 @@ "/properties/AccessConfig/BootstrapClusterCreatorAdminPermissions", "/properties/Name", "/properties/RoleArn", - "/properties/BootstrapSelfManagedAddons", - "/properties/RemoteNetworkConfig" + "/properties/BootstrapSelfManagedAddons" ], "definitions": { "AccessConfig": { @@ -492,6 +491,11 @@ "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" @@ -579,6 +583,7 @@ "typeName": "AWS::EKS::Cluster", "writeOnlyProperties": [ "/properties/AccessConfig/BootstrapClusterCreatorAdminPermissions", - "/properties/BootstrapSelfManagedAddons" + "/properties/BootstrapSelfManagedAddons", + "/properties/Force" ] } diff --git a/schema/aws-eks-fargateprofile.json b/schema/aws-eks-fargateprofile.json index fe793dd..5668169 100644 --- a/schema/aws-eks-fargateprofile.json +++ b/schema/aws-eks-fargateprofile.json @@ -115,7 +115,6 @@ "update": { "permissions": [ "eks:DescribeFargateProfile", - "eks:ListTagsForResource", "eks:TagResource", "eks:UntagResource" ] diff --git a/schema/aws-eks-identityproviderconfig.json b/schema/aws-eks-identityproviderconfig.json index ad6a8fa..1b41d88 100644 --- a/schema/aws-eks-identityproviderconfig.json +++ b/schema/aws-eks-identityproviderconfig.json @@ -190,6 +190,10 @@ "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, diff --git a/schema/aws-elasticloadbalancingv2-listener.json b/schema/aws-elasticloadbalancingv2-listener.json index ae37fe5..aed5546 100644 --- a/schema/aws-elasticloadbalancingv2-listener.json +++ b/schema/aws-elasticloadbalancingv2-listener.json @@ -283,10 +283,10 @@ }, "MutualAuthentication": { "additionalProperties": false, - "description": "Specifies the configuration information for mutual authentication.", + "description": "The mutual authentication configuration information.", "properties": { "AdvertiseTrustStoreCaNames": { - "description": "", + "description": "Indicates whether trust store CA certificate names are advertised.", "type": "string" }, "IgnoreClientCertificateExpiry": { diff --git a/schema/aws-elasticloadbalancingv2-loadbalancer.json b/schema/aws-elasticloadbalancingv2-loadbalancer.json index a793ae1..e2bdf6e 100644 --- a/schema/aws-elasticloadbalancingv2-loadbalancer.json +++ b/schema/aws-elasticloadbalancingv2-loadbalancer.json @@ -92,7 +92,8 @@ "elasticloadbalancing:CreateLoadBalancer", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:ModifyLoadBalancerAttributes", - "elasticloadbalancing:AddTags" + "elasticloadbalancing:AddTags", + "ec2:DescribeIpamPools" ], "timeoutInMinutes": 30 }, @@ -121,6 +122,7 @@ "elasticloadbalancing:ModifyCapacityReservation", "elasticloadbalancing:SetSubnets", "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:ModifyIpPools", "elasticloadbalancing:SetSecurityGroups", "elasticloadbalancing:AddTags", "elasticloadbalancing:RemoveTags" @@ -144,13 +146,17 @@ "type": "string" }, "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { - "description": "Indicates whether to evaluate inbound security group rules for traffic sent to a Network Load Balancer through privatelink.", + "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" diff --git a/schema/aws-emr-step.json b/schema/aws-emr-step.json index 6d316e7..b529808 100644 --- a/schema/aws-emr-step.json +++ b/schema/aws-emr-step.json @@ -58,6 +58,9 @@ }, "delete": { "permissions": [] + }, + "read": { + "permissions": [] } }, "primaryIdentifier": [ diff --git a/schema/aws-emr-studio.json b/schema/aws-emr-studio.json index 26d15de..5cdffa1 100644 --- a/schema/aws-emr-studio.json +++ b/schema/aws-emr-studio.json @@ -234,9 +234,14 @@ ], "tagging": { "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false + "permissions": [ + "elasticmapreduce:AddTags", + "elasticmapreduce:RemoveTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true }, "typeName": "AWS::EMR::Studio" } diff --git a/schema/aws-emrcontainers-virtualcluster.json b/schema/aws-emrcontainers-virtualcluster.json index 4eb49d4..5a4c6b9 100644 --- a/schema/aws-emrcontainers-virtualcluster.json +++ b/schema/aws-emrcontainers-virtualcluster.json @@ -135,6 +135,13 @@ "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, diff --git a/schema/aws-events-apidestination.json b/schema/aws-events-apidestination.json index b622619..ca9925b 100644 --- a/schema/aws-events-apidestination.json +++ b/schema/aws-events-apidestination.json @@ -43,6 +43,11 @@ "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]+$", @@ -82,7 +87,8 @@ } }, "readOnlyProperties": [ - "/properties/Arn" + "/properties/Arn", + "/properties/ArnForPolicy" ], "required": [ "ConnectionArn", diff --git a/schema/aws-events-archive.json b/schema/aws-events-archive.json index a1092b6..76b65b6 100644 --- a/schema/aws-events-archive.json +++ b/schema/aws-events-archive.json @@ -9,7 +9,10 @@ "create": { "permissions": [ "events:DescribeArchive", - "events:CreateArchive" + "events:CreateArchive", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" ] }, "delete": { @@ -25,13 +28,19 @@ }, "read": { "permissions": [ - "events:DescribeArchive" + "events:DescribeArchive", + "kms:Decrypt" ] }, "update": { "permissions": [ "events:DescribeArchive", - "events:UpdateArchive" + "events:UpdateArchive", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt", + "kms:ReEncryptTo", + "kms:ReEncryptFrom" ] } }, @@ -55,6 +64,11 @@ "EventPattern": { "type": "object" }, + "KmsKeyIdentifier": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, "RetentionDays": { "type": "integer" }, diff --git a/schema/aws-events-connection.json b/schema/aws-events-connection.json index fb5ca29..901b188 100644 --- a/schema/aws-events-connection.json +++ b/schema/aws-events-connection.json @@ -215,7 +215,9 @@ "secretsmanager:CreateSecret", "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", - "iam:CreateServiceLinkedRole" + "iam:CreateServiceLinkedRole", + "kms:DescribeKey", + "kms:GenerateDataKey" ] }, "delete": { @@ -231,7 +233,8 @@ }, "read": { "permissions": [ - "events:DescribeConnection" + "events:DescribeConnection", + "kms:Decrypt" ] }, "update": { @@ -241,7 +244,11 @@ "secretsmanager:CreateSecret", "secretsmanager:UpdateSecret", "secretsmanager:GetSecretValue", - "secretsmanager:PutSecretValue" + "secretsmanager:PutSecretValue", + "kms:Decrypt", + "kms:DescribeKey", + "kms:Encrypt", + "kms:GenerateDataKey" ] } }, @@ -254,6 +261,11 @@ "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" }, @@ -283,6 +295,11 @@ ], "type": "object" }, + "KmsKeyIdentifier": { + "maxLength": 2048, + "pattern": "^[a-zA-Z0-9_\\-/:]*$", + "type": "string" + }, "Name": { "description": "Name of the connection.", "maxLength": 64, @@ -298,6 +315,7 @@ }, "readOnlyProperties": [ "/properties/Arn", + "/properties/ArnForPolicy", "/properties/SecretArn", "/properties/AuthParameters/ConnectivityParameters/ResourceParameters/ResourceAssociationArn", "/properties/InvocationConnectivityParameters/ResourceParameters/ResourceAssociationArn" diff --git a/schema/aws-eventschemas-discoverer.json b/schema/aws-eventschemas-discoverer.json index a788d9d..5ac8f46 100644 --- a/schema/aws-eventschemas-discoverer.json +++ b/schema/aws-eventschemas-discoverer.json @@ -114,6 +114,11 @@ ], "tagging": { "cloudFormationSystemTags": false, + "permissions": [ + "schemas:TagResource", + "schemas:UntagResource", + "schemas:ListTagsForResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-eventschemas-registry.json b/schema/aws-eventschemas-registry.json index 5b340f2..2fc5daf 100644 --- a/schema/aws-eventschemas-registry.json +++ b/schema/aws-eventschemas-registry.json @@ -86,6 +86,11 @@ ], "tagging": { "cloudFormationSystemTags": false, + "permissions": [ + "schemas:TagResource", + "schemas:UntagResource", + "schemas:ListTagsForResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-eventschemas-schema.json b/schema/aws-eventschemas-schema.json index dbe0930..7530e2e 100644 --- a/schema/aws-eventschemas-schema.json +++ b/schema/aws-eventschemas-schema.json @@ -132,6 +132,11 @@ "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, diff --git a/schema/aws-fis-experimenttemplate.json b/schema/aws-fis-experimenttemplate.json index aebb0c3..3e75617 100644 --- a/schema/aws-fis-experimenttemplate.json +++ b/schema/aws-fis-experimenttemplate.json @@ -151,7 +151,7 @@ "type": "string" }, "Prefix": { - "maxLength": 1024, + "maxLength": 256, "minLength": 1, "type": "string" } @@ -212,7 +212,7 @@ "type": "string" }, "Prefix": { - "maxLength": 1024, + "maxLength": 700, "minLength": 1, "type": "string" } diff --git a/schema/aws-fms-policy.json b/schema/aws-fms-policy.json index eb79343..c0a2c12 100644 --- a/schema/aws-fms-policy.json +++ b/schema/aws-fms-policy.json @@ -453,6 +453,13 @@ "type": "array", "uniqueItems": true }, + "ResourceTagLogicalOperator": { + "enum": [ + "AND", + "OR" + ], + "type": "string" + }, "ResourceTags": { "insertionOrder": true, "items": { @@ -496,6 +503,17 @@ "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/schema/aws-fms-resourceset.json b/schema/aws-fms-resourceset.json index 06132bc..56fe2d3 100644 --- a/schema/aws-fms-resourceset.json +++ b/schema/aws-fms-resourceset.json @@ -138,6 +138,10 @@ "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, diff --git a/schema/aws-fsx-filesystem.json b/schema/aws-fsx-filesystem.json index d8bf8d8..6f64092 100644 --- a/schema/aws-fsx-filesystem.json +++ b/schema/aws-fsx-filesystem.json @@ -3,7 +3,6 @@ "createOnlyProperties": [ "/properties/KmsKeyId", "/properties/SecurityGroupIds", - "/properties/FileSystemTypeVersion", "/properties/FileSystemType", "/properties/SubnetIds", "/properties/BackupId" diff --git a/schema/aws-gamelift-alias.json b/schema/aws-gamelift-alias.json index caa08af..9981db9 100644 --- a/schema/aws-gamelift-alias.json +++ b/schema/aws-gamelift-alias.json @@ -38,13 +38,37 @@ "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:CreateAlias", + "gamelift:TagResource" ] }, "delete": { @@ -59,12 +83,17 @@ }, "read": { "permissions": [ - "gamelift:DescribeAlias" + "gamelift:DescribeAlias", + "gamelift:ListTagsForResource" ] }, "update": { "permissions": [ - "gamelift:UpdateAlias" + "gamelift:UpdateAlias", + "gamelift:DescribeAlias", + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:UntagResource" ] } }, @@ -72,6 +101,11 @@ "/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" @@ -92,16 +126,38 @@ "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/AliasId", + "/properties/AliasArn" ], "required": [ "Name", "RoutingStrategy" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", - "taggable": true, + "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/schema/aws-gamelift-build.json b/schema/aws-gamelift-build.json index 7fe6416..401cb35 100644 --- a/schema/aws-gamelift-build.json +++ b/schema/aws-gamelift-build.json @@ -33,6 +33,29 @@ "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", @@ -40,7 +63,9 @@ "create": { "permissions": [ "gamelift:DescribeBuild", - "gamelift:CreateBuild" + "gamelift:CreateBuild", + "gamelift:ListTagsForResource", + "gamelift:TagResource" ] }, "delete": { @@ -56,12 +81,17 @@ }, "read": { "permissions": [ - "gamelift:DescribeBuild" + "gamelift:DescribeBuild", + "gamelift:ListTagsForResource" ] }, "update": { "permissions": [ - "gamelift:UpdateBuild" + "gamelift:UpdateBuild", + "gamelift:DescribeBuild", + "gamelift:TagResource", + "gamelift:UntagResource", + "gamelift:ListTagsForResource" ] } }, @@ -69,6 +99,11 @@ "/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" @@ -96,21 +131,38 @@ "$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/BuildId", + "/properties/BuildArn" ], "required": [], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", "tagging": { "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false + "permissions": [ + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true }, "typeName": "AWS::GameLift::Build", "writeOnlyProperties": [ diff --git a/schema/aws-gamelift-containergroupdefinition.json b/schema/aws-gamelift-containergroupdefinition.json index f357210..9b85f46 100644 --- a/schema/aws-gamelift-containergroupdefinition.json +++ b/schema/aws-gamelift-containergroupdefinition.json @@ -390,12 +390,12 @@ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer", - "ecr:DescribeImages" + "ecr:DescribeImages", + "ecr:GetAuthorizationToken" ] }, "delete": { "permissions": [ - "gamelift:DescribeContainerGroupDefinition", "gamelift:DeleteContainerGroupDefinition" ] }, @@ -412,6 +412,7 @@ }, "update": { "permissions": [ + "gamelift:DescribeContainerGroupDefinition", "gamelift:UpdateContainerGroupDefinition", "gamelift:ListTagsForResource", "gamelift:TagResource", @@ -549,5 +550,8 @@ "tagUpdatable": true, "taggable": true }, - "typeName": "AWS::GameLift::ContainerGroupDefinition" + "typeName": "AWS::GameLift::ContainerGroupDefinition", + "writeOnlyProperties": [ + "/properties/SourceVersionNumber" + ] } diff --git a/schema/aws-gamelift-gameservergroup.json b/schema/aws-gamelift-gameservergroup.json index 8dc82eb..d778386 100644 --- a/schema/aws-gamelift-gameservergroup.json +++ b/schema/aws-gamelift-gameservergroup.json @@ -431,7 +431,18 @@ "RoleArn" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", - "taggable": true, + "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", diff --git a/schema/aws-gamelift-gamesessionqueue.json b/schema/aws-gamelift-gamesessionqueue.json index 7032f34..94f122b 100644 --- a/schema/aws-gamelift-gamesessionqueue.json +++ b/schema/aws-gamelift-gamesessionqueue.json @@ -153,7 +153,8 @@ "gamelift:UpdateGameSessionQueue", "gamelift:ListTagsForResource", "gamelift:TagResource", - "gamelift:UntagResource" + "gamelift:UntagResource", + "gamelift:DescribeGameSessionQueues" ] } }, @@ -240,7 +241,14 @@ "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/schema/aws-gamelift-script.json b/schema/aws-gamelift-script.json index da5e4fc..6dc79c4 100644 --- a/schema/aws-gamelift-script.json +++ b/schema/aws-gamelift-script.json @@ -161,7 +161,14 @@ "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/schema/aws-glue-connection.json b/schema/aws-glue-connection.json index 6259c04..2a745bb 100644 --- a/schema/aws-glue-connection.json +++ b/schema/aws-glue-connection.json @@ -4,9 +4,66 @@ "/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" }, @@ -28,6 +85,22 @@ }, "PhysicalConnectionRequirements": { "$ref": "#/definitions/PhysicalConnectionRequirements" + }, + "PythonProperties": { + "type": "object" + }, + "SparkProperties": { + "type": "object" + }, + "ValidateCredentials": { + "type": "boolean" + }, + "ValidateForComputeEnvironments": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false } }, "required": [ @@ -35,6 +108,60 @@ ], "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": { diff --git a/schema/aws-glue-crawler.json b/schema/aws-glue-crawler.json index a781736..7dd3410 100644 --- a/schema/aws-glue-crawler.json +++ b/schema/aws-glue-crawler.json @@ -74,6 +74,37 @@ }, "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.", @@ -266,6 +297,14 @@ "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": { @@ -409,6 +448,10 @@ "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, diff --git a/schema/aws-glue-job.json b/schema/aws-glue-job.json index 6716151..cd3c1a9 100644 --- a/schema/aws-glue-job.json +++ b/schema/aws-glue-job.json @@ -237,6 +237,10 @@ "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, diff --git a/schema/aws-glue-tableoptimizer.json b/schema/aws-glue-tableoptimizer.json index b6d5685..5e6a986 100644 --- a/schema/aws-glue-tableoptimizer.json +++ b/schema/aws-glue-tableoptimizer.json @@ -7,14 +7,53 @@ "/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": [ @@ -22,6 +61,15 @@ "RoleArn" ], "type": "object" + }, + "VpcConfiguration": { + "additionalProperties": false, + "properties": { + "GlueConnectionName": { + "type": "string" + } + }, + "type": "object" } }, "description": "Resource Type definition for AWS::Glue::TableOptimizer", diff --git a/schema/aws-glue-trigger.json b/schema/aws-glue-trigger.json index accc42d..1c8971e 100644 --- a/schema/aws-glue-trigger.json +++ b/schema/aws-glue-trigger.json @@ -203,6 +203,10 @@ "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, diff --git a/schema/aws-groundstation-dataflowendpointgroup.json b/schema/aws-groundstation-dataflowendpointgroup.json index 8b91dbc..3052375 100644 --- a/schema/aws-groundstation-dataflowendpointgroup.json +++ b/schema/aws-groundstation-dataflowendpointgroup.json @@ -1,5 +1,10 @@ { "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EndpointDetails", + "/properties/ContactPrePassDurationSeconds", + "/properties/ContactPostPassDurationSeconds" + ], "definitions": { "AgentStatus": { "description": "The status of AgentEndpoint.", diff --git a/schema/aws-groundstation-missionprofile.json b/schema/aws-groundstation-missionprofile.json index a22d695..fd68a5d 100644 --- a/schema/aws-groundstation-missionprofile.json +++ b/schema/aws-groundstation-missionprofile.json @@ -25,6 +25,11 @@ "required": [ "KmsAliasArn" ] + }, + { + "required": [ + "KmsAliasName" + ] } ], "properties": { @@ -32,6 +37,10 @@ "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" diff --git a/schema/aws-guardduty-publishingdestination.json b/schema/aws-guardduty-publishingdestination.json new file mode 100644 index 0000000..5284f6a --- /dev/null +++ b/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/schema/aws-healthimaging-datastore.json b/schema/aws-healthimaging-datastore.json index eecbee0..b582ce1 100644 --- a/schema/aws-healthimaging-datastore.json +++ b/schema/aws-healthimaging-datastore.json @@ -146,6 +146,11 @@ "required": [], "tagging": { "cloudFormationSystemTags": false, + "permissions": [ + "medical-imaging:TagResource", + "medical-imaging:UntagResource", + "medical-imaging:ListTagsForResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": false, diff --git a/schema/aws-healthlake-fhirdatastore.json b/schema/aws-healthlake-fhirdatastore.json index 159f7cc..bedc2f7 100644 --- a/schema/aws-healthlake-fhirdatastore.json +++ b/schema/aws-healthlake-fhirdatastore.json @@ -78,7 +78,8 @@ "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" + "AWS_AUTH", + "SMART_ON_FHIR" ], "type": "string" }, diff --git a/schema/aws-iam-oidcprovider.json b/schema/aws-iam-oidcprovider.json index 4610f7b..b0e736d 100644 --- a/schema/aws-iam-oidcprovider.json +++ b/schema/aws-iam-oidcprovider.json @@ -44,7 +44,7 @@ }, "list": { "permissions": [ - "iam:ListOpenIDConnectProvider", + "iam:ListOpenIDConnectProviders", "iam:GetOpenIDConnectProvider" ] }, diff --git a/schema/aws-iam-role.json b/schema/aws-iam-role.json index 9e8b283..3fe7dc9 100644 --- a/schema/aws-iam-role.json +++ b/schema/aws-iam-role.json @@ -37,7 +37,7 @@ "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.", + "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" } }, @@ -180,6 +180,11 @@ "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, diff --git a/schema/aws-iam-samlprovider.json b/schema/aws-iam-samlprovider.json index 0720311..1ee2882 100644 --- a/schema/aws-iam-samlprovider.json +++ b/schema/aws-iam-samlprovider.json @@ -1,9 +1,34 @@ { "additionalProperties": false, "createOnlyProperties": [ - "/properties/Name" + "/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.", @@ -67,23 +92,60 @@ "/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": { @@ -94,10 +156,8 @@ } }, "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "SamlMetadataDocument" + "/properties/Arn", + "/properties/SamlProviderUUID" ], "tagging": { "cloudFormationSystemTags": false, @@ -111,5 +171,9 @@ "tagUpdatable": true, "taggable": true }, - "typeName": "AWS::IAM::SAMLProvider" + "typeName": "AWS::IAM::SAMLProvider", + "writeOnlyProperties": [ + "/properties/AddPrivateKey", + "/properties/RemovePrivateKey" + ] } diff --git a/schema/aws-iam-user.json b/schema/aws-iam-user.json index fe7cdfd..cbb5384 100644 --- a/schema/aws-iam-user.json +++ b/schema/aws-iam-user.json @@ -53,7 +53,7 @@ "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.", + "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" } }, @@ -198,6 +198,11 @@ "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, diff --git a/schema/aws-imagebuilder-component.json b/schema/aws-imagebuilder-component.json index 319f83a..27bde0d 100644 --- a/schema/aws-imagebuilder-component.json +++ b/schema/aws-imagebuilder-component.json @@ -164,12 +164,19 @@ ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder", "tagging": { - "taggable": false + "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", - "/properties/Platform" + "/properties/Uri" ] } diff --git a/schema/aws-imagebuilder-containerrecipe.json b/schema/aws-imagebuilder-containerrecipe.json index e65e83d..7fa02c3 100644 --- a/schema/aws-imagebuilder-containerrecipe.json +++ b/schema/aws-imagebuilder-containerrecipe.json @@ -332,7 +332,15 @@ ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder.git", "tagging": { - "taggable": false + "cloudFormationSystemTags": true, + "permissions": [ + "imagebuilder:TagResource", + "imagebuilder:UnTagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true }, "typeName": "AWS::ImageBuilder::ContainerRecipe", "writeOnlyProperties": [ diff --git a/schema/aws-imagebuilder-distributionconfiguration.json b/schema/aws-imagebuilder-distributionconfiguration.json index a0082dd..b1ddf94 100644 --- a/schema/aws-imagebuilder-distributionconfiguration.json +++ b/schema/aws-imagebuilder-distributionconfiguration.json @@ -334,7 +334,11 @@ ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder.git", "tagging": { - "taggable": false + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true }, "typeName": "AWS::ImageBuilder::DistributionConfiguration" } diff --git a/schema/aws-imagebuilder-image.json b/schema/aws-imagebuilder-image.json index d13f99d..ec47873 100644 --- a/schema/aws-imagebuilder-image.json +++ b/schema/aws-imagebuilder-image.json @@ -263,7 +263,15 @@ ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder", "tagging": { - "taggable": false + "cloudFormationSystemTags": true, + "permissions": [ + "imagebuilder:TagResource", + "imagebuilder:UnTagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true }, "typeName": "AWS::ImageBuilder::Image" } diff --git a/schema/aws-imagebuilder-imagepipeline.json b/schema/aws-imagebuilder-imagepipeline.json index 22df985..da97481 100644 --- a/schema/aws-imagebuilder-imagepipeline.json +++ b/schema/aws-imagebuilder-imagepipeline.json @@ -271,7 +271,11 @@ ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder.git", "tagging": { - "taggable": false + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true }, "typeName": "AWS::ImageBuilder::ImagePipeline" } diff --git a/schema/aws-imagebuilder-imagerecipe.json b/schema/aws-imagebuilder-imagerecipe.json index 78f995c..21ec1b3 100644 --- a/schema/aws-imagebuilder-imagerecipe.json +++ b/schema/aws-imagebuilder-imagerecipe.json @@ -256,7 +256,15 @@ ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder.git", "tagging": { - "taggable": false + "cloudFormationSystemTags": true, + "permissions": [ + "imagebuilder:TagResource", + "imagebuilder:UnTagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true }, "typeName": "AWS::ImageBuilder::ImageRecipe" } diff --git a/schema/aws-imagebuilder-infrastructureconfiguration.json b/schema/aws-imagebuilder-infrastructureconfiguration.json index cf6c8ef..36812a6 100644 --- a/schema/aws-imagebuilder-infrastructureconfiguration.json +++ b/schema/aws-imagebuilder-infrastructureconfiguration.json @@ -230,7 +230,11 @@ ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder.git", "tagging": { - "taggable": false + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true }, "typeName": "AWS::ImageBuilder::InfrastructureConfiguration" } diff --git a/schema/aws-imagebuilder-lifecyclepolicy.json b/schema/aws-imagebuilder-lifecyclepolicy.json index c98431e..4687dd5 100644 --- a/schema/aws-imagebuilder-lifecyclepolicy.json +++ b/schema/aws-imagebuilder-lifecyclepolicy.json @@ -337,7 +337,11 @@ ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder.git", "tagging": { - "taggable": false + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true }, "typeName": "AWS::ImageBuilder::LifecyclePolicy" } diff --git a/schema/aws-imagebuilder-workflow.json b/schema/aws-imagebuilder-workflow.json index 1c25795..91e0d19 100644 --- a/schema/aws-imagebuilder-workflow.json +++ b/schema/aws-imagebuilder-workflow.json @@ -140,7 +140,15 @@ ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder", "tagging": { - "taggable": false + "cloudFormationSystemTags": true, + "permissions": [ + "imagebuilder:TagResource", + "imagebuilder:UnTagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true }, "typeName": "AWS::ImageBuilder::Workflow", "writeOnlyProperties": [ diff --git a/schema/aws-iot-accountauditconfiguration.json b/schema/aws-iot-accountauditconfiguration.json index 83f82f7..3adb350 100644 --- a/schema/aws-iot-accountauditconfiguration.json +++ b/schema/aws-iot-accountauditconfiguration.json @@ -31,8 +31,11 @@ "ConflictingClientIdsCheck": { "$ref": "#/definitions/AuditCheckConfiguration" }, + "DeviceCertificateAgeCheck": { + "$ref": "#/definitions/DeviceCertAgeAuditCheckConfiguration" + }, "DeviceCertificateExpiringCheck": { - "$ref": "#/definitions/AuditCheckConfiguration" + "$ref": "#/definitions/DeviceCertExpirationAuditCheckConfiguration" }, "DeviceCertificateKeyQualityCheck": { "$ref": "#/definitions/AuditCheckConfiguration" @@ -100,6 +103,60 @@ } }, "type": "object" + }, + "CertAgeCheckCustomConfiguration": { + "additionalProperties": false, + "description": "A structure containing the configName and corresponding configValue for configuring audit checks.", + "properties": { + "CertAgeThresholdInDays": { + "$ref": "#/definitions/ConfigValue" + } + }, + "type": "object" + }, + "CertExpirationCheckCustomConfiguration": { + "additionalProperties": false, + "description": "A structure containing the configName and corresponding configValue for configuring audit checks.", + "properties": { + "CertExpirationThresholdInDays": { + "$ref": "#/definitions/ConfigValue" + } + }, + "type": "object" + }, + "ConfigValue": { + "description": "The configValue for configuring audit checks.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "DeviceCertAgeAuditCheckConfiguration": { + "additionalProperties": false, + "description": "A structure containing the configName and corresponding configValue for configuring DeviceCertAgeCheck.", + "properties": { + "Configuration": { + "$ref": "#/definitions/CertAgeCheckCustomConfiguration" + }, + "Enabled": { + "description": "True if the check is enabled.", + "type": "boolean" + } + }, + "type": "object" + }, + "DeviceCertExpirationAuditCheckConfiguration": { + "additionalProperties": false, + "description": "A structure containing the configName and corresponding configValue for configuring DeviceCertExpirationCheck.", + "properties": { + "Configuration": { + "$ref": "#/definitions/CertExpirationCheckCustomConfiguration" + }, + "Enabled": { + "description": "True if the check is enabled.", + "type": "boolean" + } + }, + "type": "object" } }, "description": "Configures the Device Defender audit settings for this account. Settings include how audit notifications are sent and which audit checks are enabled or disabled.", diff --git a/schema/aws-iot-billinggroup.json b/schema/aws-iot-billinggroup.json index 08802a5..80e8e16 100644 --- a/schema/aws-iot-billinggroup.json +++ b/schema/aws-iot-billinggroup.json @@ -9,14 +9,14 @@ "description": "A key-value pair to associate with a resource.", "properties": { "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "description": "Tag key (1-128 chars). No 'aws:' prefix. Allows: [A-Za-z0-9 _.:/=+-]", "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 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "description": "Tag value (1-256 chars). No 'aws:' prefix. Allows: [A-Za-z0-9 _.:/=+-]", "maxLength": 256, "minLength": 1, "type": "string" @@ -111,6 +111,11 @@ ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "iot:ListTagsForResource", + "iot:TagResource", + "iot:UntagResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-iot-custommetric.json b/schema/aws-iot-custommetric.json index ba1cfef..ddf32f6 100644 --- a/schema/aws-iot-custommetric.json +++ b/schema/aws-iot-custommetric.json @@ -113,5 +113,17 @@ "MetricType" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iot.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iot:TagResource", + "iot:UntagResource", + "iot:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, "typeName": "AWS::IoT::CustomMetric" } diff --git a/schema/aws-iot-dimension.json b/schema/aws-iot-dimension.json index 198da11..cc9224e 100644 --- a/schema/aws-iot-dimension.json +++ b/schema/aws-iot-dimension.json @@ -117,5 +117,17 @@ "StringValues" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iot.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iot:TagResource", + "iot:UntagResource", + "iot:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, "typeName": "AWS::IoT::Dimension" } diff --git a/schema/aws-iot-jobtemplate.json b/schema/aws-iot-jobtemplate.json index bab4480..ac3b527 100644 --- a/schema/aws-iot-jobtemplate.json +++ b/schema/aws-iot-jobtemplate.json @@ -10,10 +10,10 @@ "/properties/JobExecutionsRolloutConfig", "/properties/AbortConfig", "/properties/PresignedUrlConfig", - "/properties/Tags", "/properties/DestinationPackageVersions", "/properties/JobExecutionsRetryConfig", - "/properties/MaintenanceWindows" + "/properties/MaintenanceWindows", + "/properties/Tags" ], "definitions": { "AbortCriteria": { @@ -214,7 +214,7 @@ "type": "number" } }, - "description": "Job templates enable you to preconfigure jobs so that you can deploy them to multiple sets of target devices.", + "description": "Resource Type definition for AWS::IoT::JobTemplate. Job templates enable you to preconfigure jobs so that you can deploy them to multiple sets of target devices.", "documentationUrl": "https://docs.aws.amazon.com/iot/latest/developerguide/job-templates.html", "handlers": { "create": { @@ -237,7 +237,8 @@ }, "read": { "permissions": [ - "iot:DescribeJobTemplate" + "iot:DescribeJobTemplate", + "iot:ListTagsForResource" ] } }, @@ -385,11 +386,21 @@ "Description" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iot.git", - "taggable": true, + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "iot:TagResource", + "iot:UntagResource", + "iot:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, "typeName": "AWS::IoT::JobTemplate", "writeOnlyProperties": [ "/properties/JobArn", - "/properties/Tags", "/properties/Document", "/properties/DocumentSource", "/properties/TimeoutConfig", diff --git a/schema/aws-iot-scheduledaudit.json b/schema/aws-iot-scheduledaudit.json index 161b3a1..7830624 100644 --- a/schema/aws-iot-scheduledaudit.json +++ b/schema/aws-iot-scheduledaudit.json @@ -137,5 +137,17 @@ "TargetCheckNames" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iot.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iot:TagResource", + "iot:UntagResource", + "iot:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, "typeName": "AWS::IoT::ScheduledAudit" } diff --git a/schema/aws-iot-securityprofile.json b/schema/aws-iot-securityprofile.json index 2fc7b48..c943eba 100644 --- a/schema/aws-iot-securityprofile.json +++ b/schema/aws-iot-securityprofile.json @@ -423,5 +423,17 @@ ], "required": [], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iot.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iot:TagResource", + "iot:UntagResource", + "iot:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, "typeName": "AWS::IoT::SecurityProfile" } diff --git a/schema/aws-iot-softwarepackage.json b/schema/aws-iot-softwarepackage.json index 3a69777..1380be6 100644 --- a/schema/aws-iot-softwarepackage.json +++ b/schema/aws-iot-softwarepackage.json @@ -108,7 +108,12 @@ "/properties/PackageArn" ], "tagging": { - "cloudFormationSystemTags": true, + "cloudFormationSystemTags": false, + "permissions": [ + "iot:TagResource", + "iot:UntagResource", + "iot:ListTagsForResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-iot-softwarepackageversion.json b/schema/aws-iot-softwarepackageversion.json index d4303cc..8e260fa 100644 --- a/schema/aws-iot-softwarepackageversion.json +++ b/schema/aws-iot-softwarepackageversion.json @@ -5,6 +5,19 @@ "/properties/VersionName" ], "definitions": { + "PackageVersionArtifact": { + "additionalProperties": false, + "description": "The artifact location of the package version", + "properties": { + "S3Location": { + "$ref": "#/definitions/S3Location" + } + }, + "required": [ + "S3Location" + ], + "type": "object" + }, "PackageVersionStatus": { "enum": [ "DRAFT", @@ -24,6 +37,55 @@ }, "type": "object" }, + "S3Location": { + "additionalProperties": false, + "description": "The Amazon S3 location", + "properties": { + "Bucket": { + "description": "The S3 bucket", + "minLength": 1, + "type": "string" + }, + "Key": { + "description": "The S3 key", + "minLength": 1, + "type": "string" + }, + "Version": { + "description": "The S3 version", + "type": "string" + } + }, + "required": [ + "Bucket", + "Key", + "Version" + ], + "type": "object" + }, + "Sbom": { + "additionalProperties": false, + "description": "The sbom zip archive location of the package version", + "properties": { + "S3Location": { + "$ref": "#/definitions/S3Location" + } + }, + "required": [ + "S3Location" + ], + "type": "object" + }, + "SbomValidationStatus": { + "description": "The validation status of the Sbom file", + "enum": [ + "IN_PROGRESS", + "FAILED", + "SUCCEEDED", + "" + ], + "type": "string" + }, "Tag": { "additionalProperties": false, "description": "A key-value pair to associate with a resource.", @@ -55,8 +117,11 @@ "permissions": [ "iot:CreatePackageVersion", "iot:GetPackageVersion", + "iot:ListTagsForResource", "iot:TagResource", - "iot:GetIndexingConfiguration" + "iot:GetIndexingConfiguration", + "s3:GetObjectVersion", + "iot:AssociateSbomWithPackageVersion" ] }, "delete": { @@ -68,6 +133,16 @@ ] }, "list": { + "handlerSchema": { + "properties": { + "PackageName": { + "$ref": "resource-schema.json#/properties/PackageName" + } + }, + "required": [ + "PackageName" + ] + }, "permissions": [ "iot:ListPackageVersions" ] @@ -85,7 +160,10 @@ "iot:ListTagsForResource", "iot:TagResource", "iot:UntagResource", - "iot:GetIndexingConfiguration" + "iot:GetIndexingConfiguration", + "s3:GetObjectVersion", + "iot:AssociateSbomWithPackageVersion", + "iot:DisassociateSbomFromPackageVersion" ] } }, @@ -94,6 +172,9 @@ "/properties/VersionName" ], "properties": { + "Artifact": { + "$ref": "#/definitions/PackageVersionArtifact" + }, "Attributes": { "$ref": "#/definitions/ResourceAttributes" }, @@ -116,6 +197,16 @@ "pattern": "^arn:[!-~]+$", "type": "string" }, + "Recipe": { + "description": "The inline json job document associated with a software package version", + "type": "string" + }, + "Sbom": { + "$ref": "#/definitions/Sbom" + }, + "SbomValidationStatus": { + "$ref": "#/definitions/SbomValidationStatus" + }, "Status": { "$ref": "#/definitions/PackageVersionStatus" }, @@ -139,13 +230,15 @@ "readOnlyProperties": [ "/properties/ErrorReason", "/properties/PackageVersionArn", - "/properties/Status" + "/properties/Status", + "/properties/SbomValidationStatus" ], "required": [ "PackageName" ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iot", "tagging": { - "cloudFormationSystemTags": true, + "cloudFormationSystemTags": false, "permissions": [ "iot:TagResource", "iot:UntagResource", diff --git a/schema/aws-iot-thinggroup.json b/schema/aws-iot-thinggroup.json index 5d1b609..d81db63 100644 --- a/schema/aws-iot-thinggroup.json +++ b/schema/aws-iot-thinggroup.json @@ -25,14 +25,14 @@ "description": "A key-value pair to associate with a resource.", "properties": { "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "description": "Tag key (1-128 chars). No 'aws:' prefix. Allows: [A-Za-z0-9 _.:/=+-]", "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 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "description": "Tag value (1-256 chars). No 'aws:' prefix. Allows: [A-Za-z0-9 _.:/=+-]", "maxLength": 256, "minLength": 1, "type": "string" @@ -144,6 +144,11 @@ ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "iot:ListTagsForResource", + "iot:TagResource", + "iot:UntagResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-iot-thingtype.json b/schema/aws-iot-thingtype.json index 7bb42ba..4bf1775 100644 --- a/schema/aws-iot-thingtype.json +++ b/schema/aws-iot-thingtype.json @@ -167,6 +167,11 @@ ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "iot:ListTagsForResource", + "iot:TagResource", + "iot:UntagResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-iotfleetwise-decodermanifest.json b/schema/aws-iotfleetwise-decodermanifest.json index 98234c7..c556ce9 100644 --- a/schema/aws-iotfleetwise-decodermanifest.json +++ b/schema/aws-iotfleetwise-decodermanifest.json @@ -98,6 +98,9 @@ "string" ] }, + "SignalValueType": { + "$ref": "#/definitions/SignalValueType" + }, "StartBit": { "type": [ "integer", @@ -343,6 +346,12 @@ "string" ] }, + "IsSigned": { + "type": [ + "boolean", + "string" + ] + }, "Offset": { "type": [ "number", @@ -373,6 +382,9 @@ "string" ] }, + "SignalValueType": { + "$ref": "#/definitions/SignalValueType" + }, "StartByte": { "type": [ "integer", @@ -422,6 +434,13 @@ ], "type": "object" }, + "SignalValueType": { + "enum": [ + "INTEGER", + "FLOATING_POINT" + ], + "type": "string" + }, "Tag": { "additionalProperties": false, "properties": { diff --git a/schema/aws-iotfleetwise-statetemplate.json b/schema/aws-iotfleetwise-statetemplate.json index e338f84..327548f 100644 --- a/schema/aws-iotfleetwise-statetemplate.json +++ b/schema/aws-iotfleetwise-statetemplate.json @@ -96,6 +96,12 @@ "pattern": "^[^\\u0000-\\u001F\\u007F]+$", "type": "string" }, + "Id": { + "maxLength": 26, + "minLength": 26, + "pattern": "^[A-Z0-9]+$", + "type": "string" + }, "LastModificationTime": { "format": "date-time", "type": "string" @@ -146,6 +152,7 @@ }, "readOnlyProperties": [ "/properties/Arn", + "/properties/Id", "/properties/CreationTime", "/properties/LastModificationTime" ], diff --git a/schema/aws-iotfleetwise-vehicle.json b/schema/aws-iotfleetwise-vehicle.json index 490cf4d..3ec85dd 100644 --- a/schema/aws-iotfleetwise-vehicle.json +++ b/schema/aws-iotfleetwise-vehicle.json @@ -4,6 +4,69 @@ "/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": { @@ -24,6 +87,32 @@ ], "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", @@ -115,6 +204,16 @@ "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": { diff --git a/schema/aws-iotsitewise-dashboard.json b/schema/aws-iotsitewise-dashboard.json index 6a1440a..875b90f 100644 --- a/schema/aws-iotsitewise-dashboard.json +++ b/schema/aws-iotsitewise-dashboard.json @@ -50,6 +50,8 @@ "list": { "permissions": [ "iotsitewise:ListDashboards", + "iotsitewise:ListPortals", + "iotsitewise:ListProjects", "iotsitewise:ListTagsForResource" ] }, diff --git a/schema/aws-iotsitewise-dataset.json b/schema/aws-iotsitewise-dataset.json new file mode 100644 index 0000000..49a69b6 --- /dev/null +++ b/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/schema/aws-iotsitewise-gateway.json b/schema/aws-iotsitewise-gateway.json index c63f1a7..3143b91 100644 --- a/schema/aws-iotsitewise-gateway.json +++ b/schema/aws-iotsitewise-gateway.json @@ -1,7 +1,8 @@ { "additionalProperties": false, "createOnlyProperties": [ - "/properties/GatewayPlatform" + "/properties/GatewayPlatform", + "/properties/GatewayVersion" ], "definitions": { "CapabilityConfiguration": { @@ -32,11 +33,6 @@ "additionalProperties": false, "description": "Contains a gateway's platform information.", "oneOf": [ - { - "required": [ - "Greengrass" - ] - }, { "required": [ "GreengrassV2" @@ -49,10 +45,6 @@ } ], "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." @@ -64,24 +56,23 @@ }, "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" + "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" @@ -134,10 +125,8 @@ "iotsitewise:UpdateGatewayCapabilityConfiguration", "iam:PassRole", "iam:GetRole", - "greengrass:GetCoreDevice", "iotsitewise:ListTagsForResource", - "iotsitewise:TagResource", - "iot:DescribeThing" + "iotsitewise:TagResource" ] }, "delete": { @@ -197,6 +186,10 @@ "$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, diff --git a/schema/aws-iotsitewise-project.json b/schema/aws-iotsitewise-project.json index 6470e66..a27d85d 100644 --- a/schema/aws-iotsitewise-project.json +++ b/schema/aws-iotsitewise-project.json @@ -46,6 +46,7 @@ }, "list": { "permissions": [ + "iotsitewise:ListPortals", "iotsitewise:ListProjects", "iotsitewise:ListTagsForResource" ] diff --git a/schema/aws-ivs-channel.json b/schema/aws-ivs-channel.json index c077928..61b8a35 100644 --- a/schema/aws-ivs-channel.json +++ b/schema/aws-ivs-channel.json @@ -1,17 +1,47 @@ { "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": 1, + "minLength": 0, "type": "string" } }, @@ -74,6 +104,15 @@ "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" @@ -92,6 +131,9 @@ ], "type": "string" }, + "MultitrackInputConfiguration": { + "$ref": "#/definitions/MultitrackInputConfiguration" + }, "Name": { "default": "-", "description": "Channel", diff --git a/schema/aws-ivs-ingestconfiguration.json b/schema/aws-ivs-ingestconfiguration.json index ac7c2c0..ff7e3bc 100644 --- a/schema/aws-ivs-ingestconfiguration.json +++ b/schema/aws-ivs-ingestconfiguration.json @@ -11,13 +11,15 @@ "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": 1, + "minLength": 0, "type": "string" } }, diff --git a/schema/aws-ivs-playbackkeypair.json b/schema/aws-ivs-playbackkeypair.json index 9030e94..45b7cb8 100644 --- a/schema/aws-ivs-playbackkeypair.json +++ b/schema/aws-ivs-playbackkeypair.json @@ -15,7 +15,7 @@ }, "Value": { "maxLength": 256, - "minLength": 1, + "minLength": 0, "type": "string" } }, @@ -83,7 +83,7 @@ "type": "string" }, "PublicKeyMaterial": { - "description": "The public portion of a customer-generated key pair.", + "description": "The public portion of a customer-generated key pair. This field is required to create the AWS::IVS::PlaybackKeyPair resource.", "type": "string" }, "Tags": { diff --git a/schema/aws-ivs-publickey.json b/schema/aws-ivs-publickey.json index bd7ec30..97636e4 100644 --- a/schema/aws-ivs-publickey.json +++ b/schema/aws-ivs-publickey.json @@ -15,7 +15,7 @@ }, "Value": { "maxLength": 256, - "minLength": 1, + "minLength": 0, "type": "string" } }, @@ -83,7 +83,7 @@ "type": "string" }, "PublicKeyMaterial": { - "description": "The public portion of a customer-generated key pair.", + "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" }, diff --git a/schema/aws-ivs-recordingconfiguration.json b/schema/aws-ivs-recordingconfiguration.json index 63f3580..5baa67c 100644 --- a/schema/aws-ivs-recordingconfiguration.json +++ b/schema/aws-ivs-recordingconfiguration.json @@ -82,13 +82,15 @@ "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": 1, + "minLength": 0, "type": "string" } }, diff --git a/schema/aws-ivs-stage.json b/schema/aws-ivs-stage.json index 7d8ca13..3ee310d 100644 --- a/schema/aws-ivs-stage.json +++ b/schema/aws-ivs-stage.json @@ -40,13 +40,15 @@ "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": 1, + "minLength": 0, "type": "string" } }, @@ -129,6 +131,7 @@ "items": { "$ref": "#/definitions/Tag" }, + "maxItems": 50, "type": "array", "uniqueItems": true } diff --git a/schema/aws-ivs-storageconfiguration.json b/schema/aws-ivs-storageconfiguration.json index 0bf90f5..3f160a7 100644 --- a/schema/aws-ivs-storageconfiguration.json +++ b/schema/aws-ivs-storageconfiguration.json @@ -27,13 +27,15 @@ "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": 1, + "minLength": 0, "type": "string" } }, diff --git a/schema/aws-ivs-streamkey.json b/schema/aws-ivs-streamkey.json index 16b27c9..793dace 100644 --- a/schema/aws-ivs-streamkey.json +++ b/schema/aws-ivs-streamkey.json @@ -8,13 +8,15 @@ "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": 1, + "minLength": 0, "type": "string" } }, diff --git a/schema/aws-ivschat-loggingconfiguration.json b/schema/aws-ivschat-loggingconfiguration.json index 48d2a35..2f3a77d 100644 --- a/schema/aws-ivschat-loggingconfiguration.json +++ b/schema/aws-ivschat-loggingconfiguration.json @@ -216,6 +216,11 @@ "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, diff --git a/schema/aws-kafkaconnect-connector.json b/schema/aws-kafkaconnect-connector.json index 7afcde7..24dafeb 100644 --- a/schema/aws-kafkaconnect-connector.json +++ b/schema/aws-kafkaconnect-connector.json @@ -452,7 +452,6 @@ "update": { "permissions": [ "kafkaconnect:UpdateConnector", - "kafkaconnect:UpdateConnectorConfiguration", "kafkaconnect:DescribeConnector", "kafkaconnect:DescribeConnectorOperation", "kafkaconnect:TagResource", diff --git a/schema/aws-kendra-datasource.json b/schema/aws-kendra-datasource.json index 726f749..a991e2a 100644 --- a/schema/aws-kendra-datasource.json +++ b/schema/aws-kendra-datasource.json @@ -1779,5 +1779,17 @@ "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/schema/aws-kendra-faq.json b/schema/aws-kendra-faq.json index a273faf..4ceccd6 100644 --- a/schema/aws-kendra-faq.json +++ b/schema/aws-kendra-faq.json @@ -204,5 +204,17 @@ "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/schema/aws-kendra-index.json b/schema/aws-kendra-index.json index dfd8623..0d9d7b7 100644 --- a/schema/aws-kendra-index.json +++ b/schema/aws-kendra-index.json @@ -441,5 +441,17 @@ "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/schema/aws-kinesis-stream.json b/schema/aws-kinesis-stream.json index ab07e90..3b72e02 100644 --- a/schema/aws-kinesis-stream.json +++ b/schema/aws-kinesis-stream.json @@ -5,6 +5,21 @@ "/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.", @@ -142,6 +157,16 @@ "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, diff --git a/schema/aws-kinesisanalyticsv2-application.json b/schema/aws-kinesisanalyticsv2-application.json index 559c2fa..614370c 100644 --- a/schema/aws-kinesisanalyticsv2-application.json +++ b/schema/aws-kinesisanalyticsv2-application.json @@ -987,6 +987,11 @@ "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, diff --git a/schema/aws-kinesisfirehose-deliverystream.json b/schema/aws-kinesisfirehose-deliverystream.json index 1ede7bb..2e81495 100644 --- a/schema/aws-kinesisfirehose-deliverystream.json +++ b/schema/aws-kinesisfirehose-deliverystream.json @@ -8,8 +8,9 @@ "/properties/AmazonOpenSearchServerlessDestinationConfiguration/VpcConfiguration", "/properties/DatabaseSourceConfiguration", "/properties/KinesisStreamSourceConfiguration", + "/properties/DirectPutSourceConfiguration", "/properties/MSKSourceConfiguration", - "/properties/IcebergDestinationConfiguration", + "/properties/IcebergDestinationConfiguration/CatalogConfiguration", "/properties/SnowflakeDestinationConfiguration/SnowflakeVpcConfiguration" ], "definitions": { @@ -565,6 +566,17 @@ }, "type": "array" }, + "DirectPutSourceConfiguration": { + "additionalProperties": false, + "properties": { + "ThroughputHintInMBs": { + "maximum": 100, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, "DocumentIdOptions": { "additionalProperties": false, "properties": { @@ -942,6 +954,9 @@ "IcebergDestinationConfiguration": { "additionalProperties": false, "properties": { + "AppendOnly": { + "type": "boolean" + }, "BufferingHints": { "$ref": "#/definitions/BufferingHints" }, @@ -1873,6 +1888,9 @@ ], "type": "string" }, + "DirectPutSourceConfiguration": { + "$ref": "#/definitions/DirectPutSourceConfiguration" + }, "ElasticsearchDestinationConfiguration": { "$ref": "#/definitions/ElasticsearchDestinationConfiguration" }, diff --git a/schema/aws-kinesisvideo-signalingchannel.json b/schema/aws-kinesisvideo-signalingchannel.json index 259219b..eab9b7d 100644 --- a/schema/aws-kinesisvideo-signalingchannel.json +++ b/schema/aws-kinesisvideo-signalingchannel.json @@ -33,7 +33,8 @@ "create": { "permissions": [ "kinesisvideo:CreateSignalingChannel", - "kinesisvideo:DescribeSignalingChannel" + "kinesisvideo:DescribeSignalingChannel", + "kinesisvideo:TagResource" ] }, "delete": { @@ -42,15 +43,24 @@ "kinesisvideo:DescribeSignalingChannel" ] }, + "list": { + "permissions": [ + "kinesisvideo:ListSignalingChannels" + ] + }, "read": { "permissions": [ - "kinesisvideo:DescribeSignalingChannel" + "kinesisvideo:DescribeSignalingChannel", + "kinesisvideo:ListTagsForResource" ] }, "update": { "permissions": [ "kinesisvideo:UpdateSignalingChannel", - "kinesisvideo:DescribeSignalingChannel" + "kinesisvideo:DescribeSignalingChannel", + "kinesisvideo:TagResource", + "kinesisvideo:UntagResource", + "kinesisvideo:ListTagsForResource" ] } }, @@ -99,5 +109,16 @@ ], "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/schema/aws-kinesisvideo-stream.json b/schema/aws-kinesisvideo-stream.json index e547f48..8aeddbf 100644 --- a/schema/aws-kinesisvideo-stream.json +++ b/schema/aws-kinesisvideo-stream.json @@ -33,7 +33,8 @@ "create": { "permissions": [ "kinesisvideo:DescribeStream", - "kinesisvideo:CreateStream" + "kinesisvideo:CreateStream", + "kinesisvideo:TagStream" ] }, "delete": { @@ -42,16 +43,25 @@ "kinesisvideo:DeleteStream" ] }, + "list": { + "permissions": [ + "kinesisvideo:ListStreams" + ] + }, "read": { "permissions": [ - "kinesisvideo:DescribeStream" + "kinesisvideo:DescribeStream", + "kinesisvideo:ListTagsForStream" ] }, "update": { "permissions": [ "kinesisvideo:DescribeStream", "kinesisvideo:UpdateStream", - "kinesisvideo:UpdateDataRetention" + "kinesisvideo:UpdateDataRetention", + "kinesisvideo:TagStream", + "kinesisvideo:UntagStream", + "kinesisvideo:ListTagsForStream" ] } }, @@ -114,5 +124,16 @@ ], "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/schema/aws-kms-alias.json b/schema/aws-kms-alias.json index c56a6ad..4dba0f0 100644 --- a/schema/aws-kms-alias.json +++ b/schema/aws-kms-alias.json @@ -3,7 +3,7 @@ "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.", + "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": [ @@ -43,7 +43,7 @@ "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).", + "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" diff --git a/schema/aws-kms-key.json b/schema/aws-kms-key.json index 4d0382e..4815ba1 100644 --- a/schema/aws-kms-key.json +++ b/schema/aws-kms-key.json @@ -25,7 +25,7 @@ "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.", + "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": [ @@ -91,7 +91,7 @@ "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*.", + "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": { @@ -104,7 +104,7 @@ }, "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``", + "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" @@ -112,7 +112,7 @@ }, "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)", + "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", @@ -143,12 +143,12 @@ }, "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.", + "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.", + "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" @@ -156,7 +156,7 @@ "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*.", + "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" @@ -185,6 +185,11 @@ "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, diff --git a/schema/aws-kms-replicakey.json b/schema/aws-kms-replicakey.json index a19029f..59bfbd6 100644 --- a/schema/aws-kms-replicakey.json +++ b/schema/aws-kms-replicakey.json @@ -130,6 +130,11 @@ "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, diff --git a/schema/aws-lambda-codesigningconfig.json b/schema/aws-lambda-codesigningconfig.json index 0f8455e..db9ae0e 100644 --- a/schema/aws-lambda-codesigningconfig.json +++ b/schema/aws-lambda-codesigningconfig.json @@ -144,6 +144,11 @@ ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "lambda:ListTags", + "lambda:TagResource", + "lambda:UntagResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-lambda-eventsourcemapping.json b/schema/aws-lambda-eventsourcemapping.json index e6e880a..3683cf9 100644 --- a/schema/aws-lambda-eventsourcemapping.json +++ b/schema/aws-lambda-eventsourcemapping.json @@ -295,7 +295,6 @@ "permissions": [ "lambda:UpdateEventSourceMapping", "lambda:GetEventSourceMapping", - "lambda:ListTags", "lambda:TagResource", "lambda:UntagResource", "kms:DescribeKey", @@ -319,7 +318,7 @@ "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.", + "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": { @@ -505,6 +504,11 @@ ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "lambda:ListTags", + "lambda:TagResource", + "lambda:UntagResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-lambda-function.json b/schema/aws-lambda-function.json index 113927b..9ade73d 100644 --- a/schema/aws-lambda-function.json +++ b/schema/aws-lambda-function.json @@ -1,12 +1,13 @@ { "additionalProperties": false, "createOnlyProperties": [ - "/properties/FunctionName" + "/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 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.", + "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.", @@ -32,12 +33,12 @@ "type": "string" }, "SourceKMSKeyArn": { - "description": "", + "description": "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's .zip deployment package. 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).", "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", "type": "string" }, "ZipFile": { - "description": "(Node.js and Python) The source code of your Lambda function. If you include your function source inline with this parameter, CFN places it in a file named ``index`` and zips it to create a [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html). This zip file cannot exceed 4MB. For the ``Handler`` property, the first part of the handler identifier must be ``index``. For example, ``index.handler``.\n For JSON, you must escape quotes and special characters such as newline (``\\n``) with a backslash.\n If you specify a function that interacts with an AWS CloudFormation custom resource, you don't have to write your own functions to send responses to the custom resource that invoked the function. AWS CloudFormation provides a response module ([cfn-response](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html)) that simplifies sending responses. See [Using Lambda with CloudFormation](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudformation.html) for details.", + "description": "(Node.js and Python) The source code of your Lambda function. If you include your function source inline with this parameter, CFN places it in a file named ``index`` and zips it to create a [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html). This zip file cannot exceed 4MB. For the ``Handler`` property, the first part of the handler identifier must be ``index``. For example, ``index.handler``.\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 For JSON, you must escape quotes and special characters such as newline (``\\n``) with a backslash.\n If you specify a function that interacts with an AWS CloudFormation custom resource, you don't have to write your own functions to send responses to the custom resource that invoked the function. AWS CloudFormation provides a response module ([cfn-response](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html)) that simplifies sending responses. See [Using Lambda with CloudFormation](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudformation.html) for details.", "type": "string" } }, @@ -374,7 +375,6 @@ "lambda:DeleteFunctionConcurrency", "lambda:GetFunction", "lambda:PutFunctionConcurrency", - "lambda:ListTags", "lambda:TagResource", "lambda:UntagResource", "lambda:UpdateFunctionConfiguration", @@ -472,7 +472,7 @@ "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.", + "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" }, @@ -565,6 +565,11 @@ ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "lambda:ListTags", + "lambda:TagResource", + "lambda:UntagResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, @@ -574,7 +579,6 @@ "writeOnlyProperties": [ "/properties/SnapStart", "/properties/SnapStart/ApplyOn", - "/properties/Code", "/properties/Code/ImageUri", "/properties/Code/S3Bucket", "/properties/Code/S3Key", diff --git a/schema/aws-lambda-layerversion.json b/schema/aws-lambda-layerversion.json index 8cbace9..7a5c195 100644 --- a/schema/aws-lambda-layerversion.json +++ b/schema/aws-lambda-layerversion.json @@ -100,6 +100,9 @@ "type": "string" } }, + "propertyTransform": { + "/properties/LayerName": "$split(LayerName, \":\")[-1] $OR LayerName" + }, "readOnlyProperties": [ "/properties/LayerVersionArn" ], diff --git a/schema/aws-launchwizard-deployment.json b/schema/aws-launchwizard-deployment.json index a5ec5f8..7c0cbea 100644 --- a/schema/aws-launchwizard-deployment.json +++ b/schema/aws-launchwizard-deployment.json @@ -232,11 +232,15 @@ "required": [ "DeploymentPatternName", "Name", - "Specifications", "WorkloadName" ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "launchwizard:ListTagsForResource", + "launchwizard:TagResource", + "launchwizard:UntagResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-lex-bot.json b/schema/aws-lex-bot.json index 62f160f..3264e5e 100644 --- a/schema/aws-lex-bot.json +++ b/schema/aws-lex-bot.json @@ -3,7 +3,6 @@ "definitions": { "AdvancedRecognitionSetting": { "additionalProperties": false, - "description": "Provides settings that enable advanced recognition settings for slot values.", "properties": { "AudioRecognitionStrategy": { "$ref": "#/definitions/AudioRecognitionStrategy" @@ -13,14 +12,11 @@ }, "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" } }, @@ -42,7 +38,6 @@ }, "AudioAndDTMFInputSpecification": { "additionalProperties": false, - "description": "Specifies the audio and DTMF input specification.", "properties": { "AudioSpecification": { "$ref": "#/definitions/AudioSpecification" @@ -51,7 +46,6 @@ "$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" } @@ -63,7 +57,6 @@ }, "AudioLogDestination": { "additionalProperties": false, - "description": "The location of audio log files collected when conversation logging is enabled for a bot.", "properties": { "S3Bucket": { "$ref": "#/definitions/S3BucketLogDestination" @@ -76,13 +69,11 @@ }, "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" } }, @@ -93,7 +84,6 @@ "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" @@ -103,7 +93,6 @@ "uniqueItems": true }, "AudioRecognitionStrategy": { - "description": "Enables using slot values as a custom vocabulary when recognizing user utterances.", "enum": [ "UseSlotValuesAsCustomVocabulary" ], @@ -111,15 +100,12 @@ }, "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" } @@ -130,15 +116,95 @@ ], "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, - "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" } }, @@ -149,13 +215,11 @@ }, "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" @@ -168,7 +232,6 @@ "type": "object" }, "BotAliasLocaleSettingsList": { - "description": "A list of bot alias locale settings to add to the bot alias.", "insertionOrder": false, "items": { "$ref": "#/definitions/BotAliasLocaleSettingsItem" @@ -185,7 +248,6 @@ }, "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" @@ -194,7 +256,6 @@ "$ref": "#/definitions/Description" }, "Intents": { - "description": "List of intents", "insertionOrder": false, "items": { "$ref": "#/definitions/Intent" @@ -210,7 +271,6 @@ "$ref": "#/definitions/ConfidenceThreshold" }, "SlotTypes": { - "description": "List of SlotTypes", "insertionOrder": false, "items": { "$ref": "#/definitions/SlotType" @@ -231,16 +291,13 @@ }, "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" @@ -256,13 +313,11 @@ "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" @@ -276,7 +331,6 @@ }, "CodeHookSpecification": { "additionalProperties": false, - "description": "Contains information about code hooks that Amazon Lex calls during a conversation.", "properties": { "LambdaCodeHook": { "$ref": "#/definitions/LambdaCodeHook" @@ -287,13 +341,27 @@ ], "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, - "description": "Provides an expression that evaluates to true or false.", "properties": { "ExpressionString": { - "$ref": "#/definitions/ConditionExpression", - "description": "The expression string that is evaluated." + "$ref": "#/definitions/ConditionExpression" } }, "required": [ @@ -302,14 +370,12 @@ "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" @@ -326,23 +392,18 @@ }, "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." + "$ref": "#/definitions/Condition" }, "Name": { - "$ref": "#/definitions/Name", - "description": "The name of the branch." + "$ref": "#/definitions/Name" }, "NextStep": { - "$ref": "#/definitions/DialogState", - "description": "The next step in the conversation." + "$ref": "#/definitions/DialogState" }, "Response": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." + "$ref": "#/definitions/ResponseSpecification" } }, "required": [ @@ -353,7 +414,6 @@ "type": "object" }, "ConditionalBranches": { - "description": "A list of 1 to 4 conditional branches to fork the conversation flow.", "insertionOrder": true, "items": { "$ref": "#/definitions/ConditionalBranch" @@ -364,18 +424,14 @@ }, "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." + "$ref": "#/definitions/ConditionalBranches" }, "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." + "$ref": "#/definitions/DefaultConditionalBranch" }, "IsActive": { - "description": "Determines whether a conditional branch is active. When active is false, the conditions are not evaluated.", "type": "boolean" } }, @@ -387,26 +443,22 @@ "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" @@ -419,10 +471,8 @@ }, "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" @@ -435,7 +485,6 @@ }, "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" @@ -448,22 +497,18 @@ }, "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" @@ -485,25 +530,20 @@ }, "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" @@ -519,10 +559,8 @@ }, "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" } }, @@ -533,15 +571,12 @@ }, "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." + "$ref": "#/definitions/DialogState" }, "Response": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." + "$ref": "#/definitions/ResponseSpecification" } }, "type": "object" @@ -553,19 +588,15 @@ }, "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." + "$ref": "#/definitions/Name" }, "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." + "$ref": "#/definitions/DialogActionType" } }, "required": [ @@ -574,7 +605,6 @@ "type": "object" }, "DialogActionType": { - "description": "The possible values of actions that the conversation can take.", "enum": [ "CloseIntent", "ConfirmIntent", @@ -590,23 +620,18 @@ }, "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." + "$ref": "#/definitions/Name" }, "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." + "$ref": "#/definitions/PostDialogCodeHookInvocationSpecification" } }, "required": [ @@ -618,7 +643,6 @@ }, "DialogCodeHookSetting": { "additionalProperties": false, - "description": "Settings that determine the Lambda function that Amazon Lex uses for processing user responses.", "properties": { "Enabled": { "type": "boolean" @@ -631,18 +655,14 @@ }, "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." + "$ref": "#/definitions/DialogAction" }, "Intent": { - "$ref": "#/definitions/IntentOverride", - "description": "Override settings to configure the intent state." + "$ref": "#/definitions/IntentOverride" }, "SessionAttributes": { - "description": "List of session attributes to be applied when the conversation reaches this step.", "insertionOrder": false, "items": { "$ref": "#/definitions/SessionAttribute" @@ -654,15 +674,12 @@ }, "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." + "$ref": "#/definitions/Name" } }, "required": [ @@ -672,7 +689,6 @@ }, "ExternalSourceSetting": { "additionalProperties": false, - "description": "Provides information about the external source of the slot type's definition.", "properties": { "GrammarSlotTypeSetting": { "$ref": "#/definitions/GrammarSlotTypeSetting" @@ -682,7 +698,6 @@ }, "FulfillmentCodeHookSetting": { "additionalProperties": false, - "description": "Settings that determine if a Lambda function should be invoked to fulfill a specific intent.", "properties": { "Enabled": { "type": "boolean" @@ -691,7 +706,6 @@ "$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": { @@ -705,14 +719,11 @@ }, "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" @@ -729,14 +740,11 @@ }, "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" @@ -753,17 +761,14 @@ }, "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" @@ -779,7 +784,6 @@ }, "GrammarSlotTypeSetting": { "additionalProperties": false, - "description": "Settings required for a slot type based on a grammar that you provide.", "properties": { "Source": { "$ref": "#/definitions/GrammarSlotTypeSource" @@ -789,22 +793,18 @@ }, "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." + "$ref": "#/definitions/S3BucketName" }, "S3ObjectKey": { - "$ref": "#/definitions/S3ObjectKey", - "description": "The path to the grammar in the S3 bucket." + "$ref": "#/definitions/S3ObjectKey" } }, "required": [ @@ -814,24 +814,20 @@ "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" @@ -840,16 +836,13 @@ "type": "array" }, "ImageUrl": { - "$ref": "#/definitions/AttachmentUrl", - "description": "The URL of an image to display on the response card." + "$ref": "#/definitions/AttachmentUrl" }, "Subtitle": { - "$ref": "#/definitions/AttachmentTitle", - "description": "The subtitle to display on the response card." + "$ref": "#/definitions/AttachmentTitle" }, "Title": { - "$ref": "#/definitions/AttachmentTitle", - "description": "The title to display on the response card." + "$ref": "#/definitions/AttachmentTitle" } }, "required": [ @@ -859,34 +852,27 @@ }, "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." + "$ref": "#/definitions/DialogCodeHookInvocationSetting" }, "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." + "$ref": "#/definitions/ConditionalSpecification" }, "InitialResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." + "$ref": "#/definitions/ResponseSpecification" }, "NextStep": { - "$ref": "#/definitions/DialogState", - "description": "The next step in the conversation." + "$ref": "#/definitions/DialogState" } }, "type": "object" }, "InputContext": { "additionalProperties": false, - "description": "InputContext specified for the intent.", "properties": { "Name": { - "$ref": "#/definitions/Name", - "description": "The name of the context." + "$ref": "#/definitions/Name" } }, "required": [ @@ -895,7 +881,6 @@ "type": "object" }, "InputContextsList": { - "description": "The list of input contexts specified for the intent.", "insertionOrder": false, "items": { "$ref": "#/definitions/InputContext" @@ -905,8 +890,10 @@ }, "Intent": { "additionalProperties": false, - "description": "Represents an action that the user wants to perform.", "properties": { + "BedrockAgentIntentConfiguration": { + "$ref": "#/definitions/BedrockAgentIntentConfiguration" + }, "Description": { "$ref": "#/definitions/Description", "description": "Description of thr intent." @@ -918,8 +905,7 @@ "$ref": "#/definitions/FulfillmentCodeHookSetting" }, "InitialResponseSetting": { - "$ref": "#/definitions/InitialResponseSetting", - "description": "Configuration setting for a response sent to the user before Amazon Lex starts eliciting slots." + "$ref": "#/definitions/InitialResponseSetting" }, "InputContexts": { "$ref": "#/definitions/InputContextsList" @@ -934,8 +920,7 @@ "$ref": "#/definitions/KendraConfiguration" }, "Name": { - "$ref": "#/definitions/Name", - "description": "The name of the intent." + "$ref": "#/definitions/Name" }, "OutputContexts": { "$ref": "#/definitions/OutputContextsList" @@ -943,15 +928,19 @@ "ParentIntentSignature": { "$ref": "#/definitions/ParentIntentSignature" }, + "QInConnectIntentConfiguration": { + "$ref": "#/definitions/QInConnectIntentConfiguration" + }, + "QnAIntentConfiguration": { + "$ref": "#/definitions/QnAIntentConfiguration" + }, "SampleUtterances": { - "$ref": "#/definitions/SampleUtterancesList", - "description": "A sample utterance that invokes an intent or respond to a slot elicitation prompt." + "$ref": "#/definitions/SampleUtterancesList" }, "SlotPriorities": { "$ref": "#/definitions/SlotPrioritiesList" }, "Slots": { - "description": "List of slots", "insertionOrder": false, "items": { "$ref": "#/definitions/Slot" @@ -968,82 +957,63 @@ }, "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." + "$ref": "#/definitions/ResponseSpecification" }, "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." + "$ref": "#/definitions/ConditionalSpecification" }, "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." + "$ref": "#/definitions/DialogState" } }, "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." + "$ref": "#/definitions/DialogCodeHookInvocationSetting" }, "ConfirmationConditional": { - "$ref": "#/definitions/ConditionalSpecification", - "description": "A list of conditional branches to evaluate after the intent is closed." + "$ref": "#/definitions/ConditionalSpecification" }, "ConfirmationNextStep": { - "$ref": "#/definitions/DialogState", - "description": "Specifies the next step that the bot executes when the customer confirms the intent." + "$ref": "#/definitions/DialogState" }, "ConfirmationResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." + "$ref": "#/definitions/ResponseSpecification" }, "DeclinationConditional": { - "$ref": "#/definitions/ConditionalSpecification", - "description": "A list of conditional branches to evaluate after the intent is declined." + "$ref": "#/definitions/ConditionalSpecification" }, "DeclinationNextStep": { - "$ref": "#/definitions/DialogState", - "description": "Specifies the next step that the bot executes when the customer declines the intent." + "$ref": "#/definitions/DialogState" }, "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." + "$ref": "#/definitions/ResponseSpecification" }, "ElicitationCodeHook": { - "$ref": "#/definitions/ElicitationCodeHookInvocationSetting", - "description": "The DialogCodeHookInvocationSetting used when the code hook is invoked during confirmation prompt retries." + "$ref": "#/definitions/ElicitationCodeHookInvocationSetting" }, "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." + "$ref": "#/definitions/ConditionalSpecification" }, "FailureNextStep": { - "$ref": "#/definitions/DialogState", - "description": "The next step to take in the conversation if the confirmation step fails." + "$ref": "#/definitions/DialogState" }, "FailureResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." + "$ref": "#/definitions/ResponseSpecification" }, "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." + "$ref": "#/definitions/PromptSpecification" } }, "required": [ @@ -1053,14 +1023,11 @@ }, "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." + "$ref": "#/definitions/Name" }, "Slots": { - "description": "A map of all of the slot value overrides for the intent.", "insertionOrder": false, "items": { "$ref": "#/definitions/SlotValueOverrideMap" @@ -1072,7 +1039,6 @@ }, "KendraConfiguration": { "additionalProperties": false, - "description": "Configuration for searching a Amazon Kendra index specified for the intent.", "properties": { "KendraIndex": { "$ref": "#/definitions/KendraIndexArn" @@ -1081,7 +1047,6 @@ "$ref": "#/definitions/QueryFilterString" }, "QueryFilterStringEnabled": { - "description": "Determines whether the AMAZON.KendraSearchIntent intent uses a custom query string to query the Amazon Kendra index.", "type": "boolean" } }, @@ -1091,7 +1056,6 @@ "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_-]*$", @@ -1099,16 +1063,13 @@ }, "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" @@ -1121,12 +1082,10 @@ "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" @@ -1146,13 +1105,11 @@ }, "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" @@ -1167,7 +1124,6 @@ "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" @@ -1177,7 +1133,6 @@ "type": "array" }, "MessageSelectionStrategy": { - "description": "Indicates how a message is selected from a message group among retries.", "enum": [ "Random", "Ordered" @@ -1186,7 +1141,6 @@ }, "MultipleValuesSetting": { "additionalProperties": false, - "description": "Indicates whether a slot can return multiple values.", "properties": { "AllowMultipleValues": { "type": "boolean" @@ -1196,7 +1150,6 @@ "type": "object" }, "Name": { - "description": "Unique name for a resource.", "maxLength": 100, "minLength": 1, "pattern": "^([0-9a-zA-Z][_-]?)+$", @@ -1204,10 +1157,8 @@ }, "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" @@ -1222,7 +1173,6 @@ }, "OutputContext": { "additionalProperties": false, - "description": "A session context that is activated when an intent is fulfilled.", "properties": { "Name": { "$ref": "#/definitions/Name" @@ -1242,7 +1192,6 @@ "type": "object" }, "OutputContextsList": { - "description": "A list of contexts that the intent activates when it is fulfilled.", "insertionOrder": false, "items": { "$ref": "#/definitions/OutputContext" @@ -1251,19 +1200,15 @@ "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" @@ -1276,103 +1221,80 @@ }, "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." + "$ref": "#/definitions/ConditionalSpecification" }, "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." + "$ref": "#/definitions/DialogState" }, "FailureResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." + "$ref": "#/definitions/ResponseSpecification" }, "SuccessConditional": { - "$ref": "#/definitions/ConditionalSpecification", - "description": "A list of conditional branches to evaluate after the dialog code hook finishes successfully." + "$ref": "#/definitions/ConditionalSpecification" }, "SuccessNextStep": { - "$ref": "#/definitions/DialogState", - "description": "Specifics the next step the bot runs after the dialog code hook finishes successfully." + "$ref": "#/definitions/DialogState" }, "SuccessResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." + "$ref": "#/definitions/ResponseSpecification" }, "TimeoutConditional": { - "$ref": "#/definitions/ConditionalSpecification", - "description": "A list of conditional branches to evaluate if the code hook times out." + "$ref": "#/definitions/ConditionalSpecification" }, "TimeoutNextStep": { - "$ref": "#/definitions/DialogState", - "description": "Specifies the next step that the bot runs when the code hook times out." + "$ref": "#/definitions/DialogState" }, "TimeoutResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." + "$ref": "#/definitions/ResponseSpecification" } }, "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." + "$ref": "#/definitions/ConditionalSpecification" }, "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." + "$ref": "#/definitions/DialogState" }, "FailureResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." + "$ref": "#/definitions/ResponseSpecification" }, "SuccessConditional": { - "$ref": "#/definitions/ConditionalSpecification", - "description": "A list of conditional branches to evaluate after the fulfillment code hook finishes successfully." + "$ref": "#/definitions/ConditionalSpecification" }, "SuccessNextStep": { - "$ref": "#/definitions/DialogState", - "description": "Specifies the next step in the conversation that Amazon Lex invokes when the fulfillment code hook completes successfully." + "$ref": "#/definitions/DialogState" }, "SuccessResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." + "$ref": "#/definitions/ResponseSpecification" }, "TimeoutConditional": { - "$ref": "#/definitions/ConditionalSpecification", - "description": "A list of conditional branches to evaluate if the fulfillment code hook times out." + "$ref": "#/definitions/ConditionalSpecification" }, "TimeoutNextStep": { - "$ref": "#/definitions/DialogState", - "description": "Specifies the next step that the bot runs when the fulfillment code hook times out." + "$ref": "#/definitions/DialogState" }, "TimeoutResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." + "$ref": "#/definitions/ResponseSpecification" } }, "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": { @@ -1391,17 +1313,14 @@ "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": { @@ -1415,7 +1334,6 @@ }, "PromptAttemptsSpecification": { "additionalProperties": false, - "description": "Specifies the advanced settings on each attempt of the prompt.", "patternProperties": { "^(Initial|Retry1|Retry2|Retry3|Retry4|Retry5)$": { "$ref": "#/definitions/PromptAttemptSpecification" @@ -1430,8 +1348,146 @@ ], "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": { - "description": "A query filter that Amazon Lex sends to Amazon Kendra to filter the response from a query.", "maxLength": 5000, "minLength": 1, "type": "string" @@ -1444,10 +1500,8 @@ }, "Replication": { "additionalProperties": false, - "description": "Parameter used to create a replication of the source bot in the secondary region.", "properties": { "ReplicaRegions": { - "description": "List of secondary regions for bot replication.", "insertionOrder": false, "items": { "$ref": "#/definitions/ReplicaRegion" @@ -1465,10 +1519,8 @@ }, "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": { @@ -1481,7 +1533,6 @@ "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/.*$", @@ -1489,23 +1540,19 @@ }, "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]$", @@ -1526,18 +1573,14 @@ }, "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." + "$ref": "#/definitions/S3BucketName" }, "S3ObjectKey": { - "$ref": "#/definitions/S3ObjectKey", - "description": "The Amazon S3 key of the deployment package." + "$ref": "#/definitions/S3ObjectKey" }, "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" @@ -1557,10 +1600,8 @@ }, "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" @@ -1573,7 +1614,6 @@ }, "SampleUtterance": { "additionalProperties": false, - "description": "A sample utterance that invokes an intent or respond to a slot elicitation prompt.", "properties": { "Utterance": { "$ref": "#/definitions/Utterance" @@ -1585,7 +1625,6 @@ "type": "object" }, "SampleUtterancesList": { - "description": "An array of sample utterances", "insertionOrder": false, "items": { "$ref": "#/definitions/SampleUtterance" @@ -1594,10 +1633,8 @@ }, "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" @@ -1610,7 +1647,6 @@ }, "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, @@ -1630,7 +1666,6 @@ }, "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" @@ -1660,39 +1695,30 @@ }, "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." + "$ref": "#/definitions/ConditionalSpecification" }, "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." + "$ref": "#/definitions/DialogState" }, "CaptureResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." + "$ref": "#/definitions/ResponseSpecification" }, "CodeHook": { - "$ref": "#/definitions/DialogCodeHookInvocationSetting", - "description": "Code hook called after Amazon Lex successfully captures a slot value." + "$ref": "#/definitions/DialogCodeHookInvocationSetting" }, "ElicitationCodeHook": { - "$ref": "#/definitions/ElicitationCodeHookInvocationSetting", - "description": "Code hook called when Amazon Lex doesn't capture a slot value." + "$ref": "#/definitions/ElicitationCodeHookInvocationSetting" }, "FailureConditional": { - "$ref": "#/definitions/ConditionalSpecification", - "description": "A list of conditional branches to evaluate when the slot value isn't captured." + "$ref": "#/definitions/ConditionalSpecification" }, "FailureNextStep": { - "$ref": "#/definitions/DialogState", - "description": "Specifies the next step that the bot runs when the slot value code is not recognized." + "$ref": "#/definitions/DialogState" }, "FailureResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." + "$ref": "#/definitions/ResponseSpecification" } }, "type": "object" @@ -1706,10 +1732,8 @@ }, "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" @@ -1722,10 +1746,8 @@ }, "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" @@ -1740,7 +1762,6 @@ "type": "object" }, "SlotPrioritiesList": { - "description": "List for slot priorities", "insertionOrder": false, "items": { "$ref": "#/definitions/SlotPriority" @@ -1749,14 +1770,12 @@ }, "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." + "$ref": "#/definitions/Name" } }, "required": [ @@ -1766,7 +1785,6 @@ "type": "object" }, "SlotShape": { - "description": "The different shapes that a slot can be in during a conversation.", "enum": [ "Scalar", "List" @@ -1775,8 +1793,10 @@ }, "SlotType": { "additionalProperties": false, - "description": "A custom, extended built-in or a grammar slot type.", "properties": { + "CompositeSlotTypeSetting": { + "$ref": "#/definitions/CompositeSlotTypeSetting" + }, "Description": { "$ref": "#/definitions/Description" }, @@ -1802,12 +1822,10 @@ "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" @@ -1822,7 +1840,6 @@ "type": "object" }, "SlotTypeValues": { - "description": "A List of slot type values", "insertionOrder": false, "items": { "$ref": "#/definitions/SlotTypeValue" @@ -1832,10 +1849,8 @@ }, "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" @@ -1845,31 +1860,24 @@ }, "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." + "$ref": "#/definitions/SlotDefaultValueSpecification" }, "PromptSpecification": { - "$ref": "#/definitions/PromptSpecification", - "description": "The prompt that Amazon Lex uses to elicit the slot value from the user." + "$ref": "#/definitions/PromptSpecification" }, "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." + "$ref": "#/definitions/SampleUtterancesList" }, "SlotCaptureSetting": { - "$ref": "#/definitions/SlotCaptureSetting", - "description": "Specifies the next stage in the conversation after capturing the slot." + "$ref": "#/definitions/SlotCaptureSetting" }, "SlotConstraint": { - "$ref": "#/definitions/SlotConstraint", - "description": "Specifies whether the slot is required or optional." + "$ref": "#/definitions/SlotConstraint" }, "WaitAndContinueSpecification": { - "$ref": "#/definitions/WaitAndContinueSpecification", - "description": "Specifies the prompts that Amazon Lex uses while a bot is waiting for customer input." + "$ref": "#/definitions/WaitAndContinueSpecification" } }, "required": [ @@ -1879,26 +1887,21 @@ }, "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." + "$ref": "#/definitions/SlotShape" }, "Value": { - "$ref": "#/definitions/SlotValue", - "description": "The current value of the slot." + "$ref": "#/definitions/SlotValue" }, "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.\"" + "$ref": "#/definitions/SlotValues" } }, "type": "object" }, "SlotValueOverrideMap": { "additionalProperties": false, - "description": "A map of slot names and their overridden values.", "properties": { "SlotName": { "$ref": "#/definitions/Name" @@ -1911,10 +1914,8 @@ }, "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" @@ -1928,13 +1929,13 @@ "SlotValueResolutionStrategy": { "enum": [ "ORIGINAL_VALUE", - "TOP_RESOLUTION" + "TOP_RESOLUTION", + "CONCATENATION" ], "type": "string" }, "SlotValueSelectionSetting": { "additionalProperties": false, - "description": "Contains settings used by Amazon Lex to select a slot value.", "properties": { "AdvancedRecognitionSetting": { "$ref": "#/definitions/AdvancedRecognitionSetting" @@ -1952,24 +1953,21 @@ "type": "object" }, "SlotValues": { - "description": "An array of values that slots should be set to", + "insertionOrder": false, "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": { @@ -1990,13 +1988,33 @@ "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" }, + "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": { - "description": "Additional values related to the slot type entry.", "insertionOrder": false, "items": { "$ref": "#/definitions/SampleValue" @@ -2006,16 +2024,13 @@ }, "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" @@ -2029,7 +2044,6 @@ }, "TestBotAliasSettings": { "additionalProperties": false, - "description": "Configuring the test bot alias settings for a given bot", "properties": { "BotAliasLocaleSettings": { "$ref": "#/definitions/BotAliasLocaleSettingsList" @@ -2042,10 +2056,8 @@ }, "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" } }, @@ -2059,10 +2071,8 @@ }, "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" } @@ -2074,7 +2084,6 @@ }, "TextLogDestination": { "additionalProperties": false, - "description": "Defines the Amazon CloudWatch Logs destination log group for conversation text logs.", "properties": { "CloudWatch": { "$ref": "#/definitions/CloudWatchLogGroupLogDestination" @@ -2087,13 +2096,11 @@ }, "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" } }, @@ -2104,7 +2111,6 @@ "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" @@ -2114,23 +2120,21 @@ "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" + "neural", + "long-form", + "generative" ], "type": "string" }, "VoiceId": { - "description": "The Amazon Polly voice ID that Amazon Lex uses for voice interaction with the user.", "type": "string" } }, @@ -2141,23 +2145,18 @@ }, "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." + "$ref": "#/definitions/ResponseSpecification" }, "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." + "$ref": "#/definitions/StillWaitingResponseSpecification" }, "WaitingResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "The response that Amazon Lex sends to indicate that the bot is waiting for the conversation to continue." + "$ref": "#/definitions/ResponseSpecification" } }, "required": [ @@ -2283,14 +2282,12 @@ "$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" @@ -2299,7 +2296,6 @@ "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" @@ -2310,10 +2306,8 @@ }, "DataPrivacy": { "additionalProperties": false, - "description": "Data privacy setting of the Bot.", "properties": { "ChildDirected": { - "description": "", "type": "boolean" } }, @@ -2329,7 +2323,6 @@ "$ref": "#/definitions/Id" }, "IdleSessionTTLInSeconds": { - "description": "IdleSessionTTLInSeconds of the resource", "maximum": 86400, "minimum": 60, "type": "integer" @@ -2347,7 +2340,6 @@ "$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" diff --git a/schema/aws-location-apikey.json b/schema/aws-location-apikey.json index f0fafb1..317a4d0 100644 --- a/schema/aws-location-apikey.json +++ b/schema/aws-location-apikey.json @@ -86,6 +86,10 @@ }, "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$", diff --git a/schema/aws-logs-delivery.json b/schema/aws-logs-delivery.json index 5cd37ff..c38a2fc 100644 --- a/schema/aws-logs-delivery.json +++ b/schema/aws-logs-delivery.json @@ -79,7 +79,8 @@ "logs:GetDelivery", "logs:ListTagsForResource", "logs:TagResource", - "logs:UntagResource" + "logs:UntagResource", + "logs:UpdateDeliveryConfiguration" ] } }, @@ -161,6 +162,11 @@ "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, diff --git a/schema/aws-logs-deliverydestination.json b/schema/aws-logs-deliverydestination.json index c427465..f00eff7 100644 --- a/schema/aws-logs-deliverydestination.json +++ b/schema/aws-logs-deliverydestination.json @@ -164,6 +164,11 @@ "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, diff --git a/schema/aws-logs-deliverysource.json b/schema/aws-logs-deliverysource.json index 5a42cfe..37b77d5 100644 --- a/schema/aws-logs-deliverysource.json +++ b/schema/aws-logs-deliverysource.json @@ -138,6 +138,11 @@ "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, diff --git a/schema/aws-logs-loggroup.json b/schema/aws-logs-loggroup.json index 54eceac..e6f2d08 100644 --- a/schema/aws-logs-loggroup.json +++ b/schema/aws-logs-loggroup.json @@ -85,6 +85,7 @@ "logs:DeleteRetentionPolicy", "logs:TagResource", "logs:UntagResource", + "logs:ListTagsForResource", "logs:GetDataProtectionPolicy", "logs:PutDataProtectionPolicy", "logs:CreateLogDelivery", @@ -128,7 +129,8 @@ "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" + "INFREQUENT_ACCESS", + "DELIVERY" ], "type": "string" }, @@ -183,6 +185,11 @@ "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, diff --git a/schema/aws-m2-application.json b/schema/aws-m2-application.json index 7edc636..68a3e95 100644 --- a/schema/aws-m2-application.json +++ b/schema/aws-m2-application.json @@ -158,7 +158,13 @@ ], "tagging": { "cloudFormationSystemTags": false, + "permissions": [ + "m2:TagResource", + "m2:UntagResource", + "m2:ListTagsForResource" + ], "tagOnCreate": true, + "tagProperty": "/properties/Tags", "tagUpdatable": true, "taggable": true }, diff --git a/schema/aws-m2-environment.json b/schema/aws-m2-environment.json index 364597d..bc03f0d 100644 --- a/schema/aws-m2-environment.json +++ b/schema/aws-m2-environment.json @@ -285,7 +285,13 @@ ], "tagging": { "cloudFormationSystemTags": false, + "permissions": [ + "m2:TagResource", + "m2:UntagResource", + "m2:ListTagsForResource" + ], "tagOnCreate": true, + "tagProperty": "/properties/Tags", "tagUpdatable": true, "taggable": true }, diff --git a/schema/aws-macie-session.json b/schema/aws-macie-session.json index 1865aff..88e5387 100644 --- a/schema/aws-macie-session.json +++ b/schema/aws-macie-session.json @@ -5,7 +5,8 @@ "create": { "permissions": [ "macie2:GetMacieSession", - "macie2:EnableMacie" + "macie2:EnableMacie", + "macie2:ListAutomatedDiscoveryAccounts" ] }, "delete": { @@ -15,18 +16,21 @@ }, "list": { "permissions": [ - "macie2:GetMacieSession" + "macie2:GetMacieSession", + "macie2:ListAutomatedDiscoveryAccounts" ] }, "read": { "permissions": [ - "macie2:GetMacieSession" + "macie2:GetMacieSession", + "macie2:ListAutomatedDiscoveryAccounts" ] }, "update": { "permissions": [ "macie2:GetMacieSession", - "macie2:UpdateMacieSession" + "macie2:UpdateMacieSession", + "macie2:ListAutomatedDiscoveryAccounts" ] } }, @@ -34,6 +38,14 @@ "/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" @@ -64,7 +76,8 @@ }, "readOnlyProperties": [ "/properties/AwsAccountId", - "/properties/ServiceRole" + "/properties/ServiceRole", + "/properties/AutomatedDiscoveryStatus" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-macie.git", "tagging": { diff --git a/schema/aws-mediaconnect-bridge.json b/schema/aws-mediaconnect-bridge.json index 45b6b54..5964eec 100644 --- a/schema/aws-mediaconnect-bridge.json +++ b/schema/aws-mediaconnect-bridge.json @@ -252,13 +252,17 @@ "create": { "permissions": [ "mediaconnect:CreateBridge", - "mediaconnect:DescribeBridge" + "mediaconnect:DescribeBridge", + "mediaconnect:AddBridgeOutputs", + "mediaconnect:AddBridgeSources" ] }, "delete": { "permissions": [ "mediaconnect:DescribeBridge", - "mediaconnect:DeleteBridge" + "mediaconnect:DeleteBridge", + "mediaconnect:RemoveBridgeOutput", + "mediaconnect:RemoveBridgeSource" ] }, "list": { diff --git a/schema/aws-mediaconnect-flow.json b/schema/aws-mediaconnect-flow.json index 76cb4cc..b202c82 100644 --- a/schema/aws-mediaconnect-flow.json +++ b/schema/aws-mediaconnect-flow.json @@ -6,6 +6,35 @@ "/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.", @@ -168,6 +197,25 @@ }, "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.", @@ -350,6 +398,75 @@ ], "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.", @@ -463,6 +580,21 @@ "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": [ @@ -470,11 +602,28 @@ "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" } }, - "required": [ - "ThumbnailState" - ], "type": "object" }, "VpcInterface": { @@ -541,13 +690,21 @@ "create": { "permissions": [ "mediaconnect:CreateFlow", + "mediaconnect:AddFlowMediaStreams", + "mediaconnect:AddFlowSources", + "mediaconnect:AddFlowVpcInterfaces", "iam:PassRole" ] }, "delete": { "permissions": [ "mediaconnect:DescribeFlow", - "mediaconnect:DeleteFlow" + "mediaconnect:DeleteFlow", + "mediaconnect:RemoveFlowMediaStream", + "mediaconnect:RemoveFlowOutput", + "mediaconnect:RemoveFlowSource", + "mediaconnect:RemoveFlowVpcInterface", + "mediaconnect:RevokeFlowEntitlement" ] }, "list": { @@ -593,6 +750,18 @@ "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." @@ -608,6 +777,10 @@ "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." @@ -636,7 +809,8 @@ "/properties/Source/SourceIngestPort", "/properties/VpcInterfaces/*/NetworkInterfaceIds", "/properties/MediaStreams/*/Fmt", - "/properties/EgressIp" + "/properties/EgressIp", + "/properties/FlowNdiMachineName" ], "required": [ "Name", diff --git a/schema/aws-mediaconnect-flowentitlement.json b/schema/aws-mediaconnect-flowentitlement.json index 601667b..ce4c6e7 100644 --- a/schema/aws-mediaconnect-flowentitlement.json +++ b/schema/aws-mediaconnect-flowentitlement.json @@ -79,7 +79,8 @@ }, "list": { "permissions": [ - "mediaconnect:DescribeFlow" + "mediaconnect:DescribeFlow", + "mediaconnect:ListFlows" ] }, "read": { diff --git a/schema/aws-mediaconnect-flowoutput.json b/schema/aws-mediaconnect-flowoutput.json index c850629..95cbccc 100644 --- a/schema/aws-mediaconnect-flowoutput.json +++ b/schema/aws-mediaconnect-flowoutput.json @@ -165,7 +165,8 @@ }, "list": { "permissions": [ - "mediaconnect:DescribeFlow" + "mediaconnect:DescribeFlow", + "mediaconnect:ListFlows" ] }, "read": { @@ -226,6 +227,14 @@ "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" @@ -254,7 +263,8 @@ "srt-listener", "srt-caller", "st2110-jpegxs", - "cdi" + "cdi", + "ndi-speed-hq" ], "type": "string" }, diff --git a/schema/aws-mediaconnect-flowsource.json b/schema/aws-mediaconnect-flowsource.json index bad2d09..d1fe211 100644 --- a/schema/aws-mediaconnect-flowsource.json +++ b/schema/aws-mediaconnect-flowsource.json @@ -109,7 +109,8 @@ }, "list": { "permissions": [ - "mediaconnect:DescribeFlow" + "mediaconnect:DescribeFlow", + "mediaconnect:ListFlows" ] }, "read": { diff --git a/schema/aws-medialive-channel.json b/schema/aws-medialive-channel.json index 72a9546..d2300c3 100644 --- a/schema/aws-medialive-channel.json +++ b/schema/aws-medialive-channel.json @@ -789,15 +789,42 @@ }, "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" }, @@ -1576,6 +1603,9 @@ "ColorSpaceSettings": { "$ref": "#/definitions/H265ColorSpaceSettings" }, + "Deblocking": { + "type": "string" + }, "FilterSettings": { "$ref": "#/definitions/H265FilterSettings" }, @@ -2392,8 +2422,14 @@ "MediaPackageOutputDestinationSettings": { "additionalProperties": false, "properties": { + "ChannelGroup": { + "type": "string" + }, "ChannelId": { "type": "string" + }, + "ChannelName": { + "type": "string" } }, "type": "object" @@ -3468,6 +3504,9 @@ "ChannelClass": { "type": "string" }, + "ChannelEngineVersion": { + "$ref": "#/definitions/ChannelEngineVersionRequest" + }, "Destinations": { "items": { "$ref": "#/definitions/OutputDestination" @@ -3475,6 +3514,9 @@ "type": "array", "uniqueItems": false }, + "DryRun": { + "type": "boolean" + }, "EncoderSettings": { "$ref": "#/definitions/EncoderSettings" }, diff --git a/schema/aws-medialive-cloudwatchalarmtemplate.json b/schema/aws-medialive-cloudwatchalarmtemplate.json index 5894bfd..794be78 100644 --- a/schema/aws-medialive-cloudwatchalarmtemplate.json +++ b/schema/aws-medialive-cloudwatchalarmtemplate.json @@ -35,6 +35,7 @@ "MEDIAPACKAGE_CHANNEL", "MEDIAPACKAGE_ORIGIN_ENDPOINT", "MEDIACONNECT_FLOW", + "MEDIATAILOR_PLAYBACK_CONFIGURATION", "S3_BUCKET" ], "type": "string" @@ -202,7 +203,6 @@ "required": [ "ComparisonOperator", "EvaluationPeriods", - "GroupIdentifier", "MetricName", "Name", "Period", diff --git a/schema/aws-medialive-eventbridgeruletemplate.json b/schema/aws-medialive-eventbridgeruletemplate.json index 0c0f66b..4081129 100644 --- a/schema/aws-medialive-eventbridgeruletemplate.json +++ b/schema/aws-medialive-eventbridgeruletemplate.json @@ -164,7 +164,6 @@ ], "required": [ "EventType", - "GroupIdentifier", "Name" ], "tagging": { diff --git a/schema/aws-medialive-inputsecuritygroup.json b/schema/aws-medialive-inputsecuritygroup.json index 089370b..6ce9954 100644 --- a/schema/aws-medialive-inputsecuritygroup.json +++ b/schema/aws-medialive-inputsecuritygroup.json @@ -1,5 +1,8 @@ { "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tags" + ], "definitions": { "InputWhitelistRuleCidr": { "additionalProperties": false, @@ -34,8 +37,8 @@ } }, "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id" + "/properties/Id", + "/properties/Arn" ], "typeName": "AWS::MediaLive::InputSecurityGroup" } diff --git a/schema/aws-medialive-signalmap.json b/schema/aws-medialive-signalmap.json index 89915de..1d558c8 100644 --- a/schema/aws-medialive-signalmap.json +++ b/schema/aws-medialive-signalmap.json @@ -27,7 +27,7 @@ "Name": { "description": "The logical name of an AWS media resource.", "maxLength": 256, - "minLength": 1, + "minLength": 0, "type": "string" }, "Sources": { @@ -63,7 +63,7 @@ "Name": { "description": "The logical name of an AWS media resource.", "maxLength": 256, - "minLength": 1, + "minLength": 0, "type": "string" } }, @@ -79,13 +79,13 @@ "DetailsUri": { "description": "URI associated with a signal map's monitor deployment.", "maxLength": 2048, - "minLength": 1, + "minLength": 0, "type": "string" }, "ErrorMessage": { "description": "Error message associated with a failed monitor deployment of a signal map.", "maxLength": 2048, - "minLength": 1, + "minLength": 0, "type": "string" }, "Status": { @@ -135,7 +135,7 @@ "DetailsUri": { "description": "URI associated with a signal map's monitor deployment.", "maxLength": 2048, - "minLength": 1, + "minLength": 0, "type": "string" }, "Status": { @@ -310,7 +310,7 @@ "ErrorMessage": { "description": "Error message associated with a failed creation or failed update attempt of a signal map.", "maxLength": 2048, - "minLength": 1, + "minLength": 0, "type": "string" }, "EventBridgeRuleTemplateGroupIdentifiers": { diff --git a/schema/aws-mediapackagev2-channel.json b/schema/aws-mediapackagev2-channel.json index 2b0fe40..178a977 100644 --- a/schema/aws-mediapackagev2-channel.json +++ b/schema/aws-mediapackagev2-channel.json @@ -27,6 +27,17 @@ }, "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", @@ -34,6 +45,17 @@ ], "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": { @@ -134,6 +156,9 @@ }, "type": "array" }, + "InputSwitchConfiguration": { + "$ref": "#/definitions/InputSwitchConfiguration" + }, "InputType": { "$ref": "#/definitions/InputType" }, @@ -142,6 +167,9 @@ "format": "date-time", "type": "string" }, + "OutputHeaderConfiguration": { + "$ref": "#/definitions/OutputHeaderConfiguration" + }, "Tags": { "insertionOrder": false, "items": { diff --git a/schema/aws-mediapackagev2-originendpoint.json b/schema/aws-mediapackagev2-originendpoint.json index f172e0b..eba923e 100644 --- a/schema/aws-mediapackagev2-originendpoint.json +++ b/schema/aws-mediapackagev2-originendpoint.json @@ -263,7 +263,7 @@ "description": "

The failover settings for the endpoint.

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

The failover settings for the endpoint. The options are:

\n ", + "description": "

The failover conditions for the endpoint. The options are:

\n ", "items": { "$ref": "#/definitions/EndpointErrorCondition" }, @@ -298,7 +298,7 @@ "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.

", + "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": { @@ -310,6 +310,10 @@ "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": [ @@ -343,7 +347,7 @@ "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.

", + "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": { @@ -355,6 +359,10 @@ "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": [ diff --git a/schema/aws-memorydb-acl.json b/schema/aws-memorydb-acl.json index d622166..fb0b282 100644 --- a/schema/aws-memorydb-acl.json +++ b/schema/aws-memorydb-acl.json @@ -36,7 +36,8 @@ "memorydb:CreateACL", "memorydb:DescribeACLs", "memorydb:TagResource", - "memorydb:ListTags" + "memorydb:ListTags", + "iam:CreateServiceLinkedRole" ] }, "delete": { diff --git a/schema/aws-memorydb-cluster.json b/schema/aws-memorydb-cluster.json index f4e6359..1791b73 100644 --- a/schema/aws-memorydb-cluster.json +++ b/schema/aws-memorydb-cluster.json @@ -9,7 +9,8 @@ "/properties/SubnetGroupName", "/properties/SnapshotArns", "/properties/MultiRegionClusterName", - "/properties/SnapshotName" + "/properties/SnapshotName", + "/properties/NetworkType" ], "definitions": { "DataTieringStatus": { @@ -33,6 +34,21 @@ }, "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.", @@ -68,8 +84,10 @@ "memorydb:CreateCluster", "memorydb:DescribeClusters", "memorydb:TagResource", - "memorydb:ListTags" - ] + "memorydb:ListTags", + "iam:CreateServiceLinkedRole" + ], + "timeoutInMinutes": 720 }, "delete": { "permissions": [ @@ -146,6 +164,11 @@ "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" @@ -158,6 +181,11 @@ "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" diff --git a/schema/aws-memorydb-multiregioncluster.json b/schema/aws-memorydb-multiregioncluster.json index 44b2e38..63e430c 100644 --- a/schema/aws-memorydb-multiregioncluster.json +++ b/schema/aws-memorydb-multiregioncluster.json @@ -40,7 +40,8 @@ "memorydb:CreateMultiRegionCluster", "memorydb:DescribeMultiRegionClusters", "memorydb:TagResource", - "memorydb:ListTags" + "memorydb:ListTags", + "iam:CreateServiceLinkedRole" ], "timeoutInMinutes": 2160 }, diff --git a/schema/aws-memorydb-parametergroup.json b/schema/aws-memorydb-parametergroup.json index 913d3a3..569392e 100644 --- a/schema/aws-memorydb-parametergroup.json +++ b/schema/aws-memorydb-parametergroup.json @@ -39,7 +39,8 @@ "memorydb:CreateParameterGroup", "memorydb:DescribeParameterGroups", "memorydb:TagResource", - "memorydb:ListTags" + "memorydb:ListTags", + "iam:CreateServiceLinkedRole" ] }, "delete": { diff --git a/schema/aws-memorydb-subnetgroup.json b/schema/aws-memorydb-subnetgroup.json index 0cabd95..a5827cd 100644 --- a/schema/aws-memorydb-subnetgroup.json +++ b/schema/aws-memorydb-subnetgroup.json @@ -37,7 +37,8 @@ "memorydb:CreateSubnetGroup", "memorydb:DescribeSubnetGroups", "memorydb:TagResource", - "memorydb:ListTags" + "memorydb:ListTags", + "iam:CreateServiceLinkedRole" ] }, "delete": { @@ -93,6 +94,15 @@ "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, @@ -105,7 +115,8 @@ } }, "readOnlyProperties": [ - "/properties/ARN" + "/properties/ARN", + "/properties/SupportedNetworkTypes" ], "required": [ "SubnetGroupName", diff --git a/schema/aws-memorydb-user.json b/schema/aws-memorydb-user.json index 5912649..7577261 100644 --- a/schema/aws-memorydb-user.json +++ b/schema/aws-memorydb-user.json @@ -36,7 +36,8 @@ "memorydb:CreateUser", "memorydb:DescribeUsers", "memorydb:TagResource", - "memorydb:ListTags" + "memorydb:ListTags", + "iam:CreateServiceLinkedRole" ] }, "delete": { diff --git a/schema/aws-msk-replicator.json b/schema/aws-msk-replicator.json index 606e9a7..b6ea7d4 100644 --- a/schema/aws-msk-replicator.json +++ b/schema/aws-msk-replicator.json @@ -390,7 +390,8 @@ } }, "readOnlyProperties": [ - "/properties/ReplicatorArn" + "/properties/ReplicatorArn", + "/properties/CurrentVersion" ], "required": [ "ReplicatorName", diff --git a/schema/aws-msk-serverlesscluster.json b/schema/aws-msk-serverlesscluster.json index c5acdc8..4f24ff7 100644 --- a/schema/aws-msk-serverlesscluster.json +++ b/schema/aws-msk-serverlesscluster.json @@ -149,6 +149,11 @@ ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "kafka:TagResource", + "kafka:UntagResource", + "kafka:ListTagsForResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": false, diff --git a/schema/aws-mwaa-environment.json b/schema/aws-mwaa-environment.json index f56fe31..b96676d 100644 --- a/schema/aws-mwaa-environment.json +++ b/schema/aws-mwaa-environment.json @@ -368,12 +368,40 @@ "handlers": { "create": { "permissions": [ - "airflow:CreateEnvironment" + "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" ] }, @@ -389,9 +417,23 @@ }, "update": { "permissions": [ + "airflow:GetEnvironment", "airflow:UpdateEnvironment", "airflow:TagResource", - "airflow:UntagResource" + "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 } @@ -510,7 +552,7 @@ ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mwaa.git", "tagging": { - "cloudFormationSystemTags": false, + "cloudFormationSystemTags": true, "permissions": [ "airflow:UntagResource", "airflow:TagResource" diff --git a/schema/aws-neptune-dbcluster.json b/schema/aws-neptune-dbcluster.json index 0d2fb9c..1750055 100644 --- a/schema/aws-neptune-dbcluster.json +++ b/schema/aws-neptune-dbcluster.json @@ -320,6 +320,11 @@ "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, diff --git a/schema/aws-neptune-dbclusterparametergroup.json b/schema/aws-neptune-dbclusterparametergroup.json index 93eb530..74dcc78 100644 --- a/schema/aws-neptune-dbclusterparametergroup.json +++ b/schema/aws-neptune-dbclusterparametergroup.json @@ -1,63 +1,129 @@ { "additionalProperties": false, "createOnlyProperties": [ - "/properties/Family", + "/properties/Name", "/properties/Description", - "/properties/Name" + "/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": [ - "Value", - "Key" + "Key", + "Value" ], "type": "object" } }, - "description": "Resource Type definition for AWS::Neptune::DBClusterParameterGroup", + "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/Id" + "/properties/Name" ], "properties": { "Description": { + "description": "Provides the customer-specified description for this DB cluster parameter group.", "type": "string" }, "Family": { - "type": "string" - }, - "Id": { + "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", - "uniqueItems": false + "type": "array" } }, - "readOnlyProperties": [ - "/properties/Id" - ], + "propertyTransform": { + "/properties/Name": "$lowercase(Name)" + }, "required": [ - "Family", "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/schema/aws-neptune-dbparametergroup.json b/schema/aws-neptune-dbparametergroup.json index 11f30ea..a202295 100644 --- a/schema/aws-neptune-dbparametergroup.json +++ b/schema/aws-neptune-dbparametergroup.json @@ -1,49 +1,101 @@ { "additionalProperties": false, "createOnlyProperties": [ - "/properties/Family", + "/properties/Name", "/properties/Description", - "/properties/Name" + "/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": [ - "Value", - "Key" + "Key", + "Value" ], "type": "object" } }, - "description": "Resource Type definition for AWS::Neptune::DBParameterGroup", + "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/Id" + "/properties/Name" ], "properties": { "Description": { + "description": "Provides the customer-specified description for this DB parameter group.", "type": "string" }, "Family": { - "type": "string" - }, - "Id": { + "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" }, @@ -51,13 +103,26 @@ "uniqueItems": false } }, - "readOnlyProperties": [ - "/properties/Id" - ], + "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/schema/aws-neptune-dbsubnetgroup.json b/schema/aws-neptune-dbsubnetgroup.json index 3f81a2a..ddaa0ad 100644 --- a/schema/aws-neptune-dbsubnetgroup.json +++ b/schema/aws-neptune-dbsubnetgroup.json @@ -6,36 +6,79 @@ "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": [ - "Value", - "Key" + "Key", + "Value" ], "type": "object" } }, - "description": "Resource Type definition for AWS::Neptune::DBSubnetGroup", + "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/Id" + "/properties/DBSubnetGroupName" ], "properties": { "DBSubnetGroupDescription": { + "description": "The description for the DB subnet group.", "type": "string" }, "DBSubnetGroupName": { - "type": "string" - }, - "Id": { + "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" }, @@ -43,6 +86,7 @@ "uniqueItems": false }, "Tags": { + "description": "An optional array of key-value pairs to apply to this DB subnet group.", "items": { "$ref": "#/definitions/Tag" }, @@ -50,12 +94,25 @@ "uniqueItems": false } }, - "readOnlyProperties": [ - "/properties/Id" - ], + "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/schema/aws-neptunegraph-privategraphendpoint.json b/schema/aws-neptunegraph-privategraphendpoint.json index ab50fd9..bbb71ba 100644 --- a/schema/aws-neptunegraph-privategraphendpoint.json +++ b/schema/aws-neptunegraph-privategraphendpoint.json @@ -51,7 +51,8 @@ "list": { "permissions": [ "neptune-graph:GetPrivateGraphEndpoint", - "neptune-graph:ListPrivateGraphEndpoints" + "neptune-graph:ListPrivateGraphEndpoints", + "neptune-graph:ListGraphs" ], "timeoutInMinutes": 2160 }, diff --git a/schema/aws-networkfirewall-firewall.json b/schema/aws-networkfirewall-firewall.json index 6a73a76..6dadf45 100644 --- a/schema/aws-networkfirewall-firewall.json +++ b/schema/aws-networkfirewall-firewall.json @@ -132,6 +132,14 @@ "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": { diff --git a/schema/aws-networkmanager-sitetositevpnattachment.json b/schema/aws-networkmanager-sitetositevpnattachment.json index b153fc4..8313c46 100644 --- a/schema/aws-networkmanager-sitetositevpnattachment.json +++ b/schema/aws-networkmanager-sitetositevpnattachment.json @@ -88,7 +88,7 @@ "ec2:DescribeRegions", "networkmanager:TagResource" ], - "timeoutInMinutes": 40 + "timeoutInMinutes": 120 }, "delete": { "permissions": [ diff --git a/schema/aws-nimblestudio-launchprofile.json b/schema/aws-nimblestudio-launchprofile.json deleted file mode 100644 index 9c94614..0000000 --- a/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/schema/aws-nimblestudio-streamingimage.json b/schema/aws-nimblestudio-streamingimage.json deleted file mode 100644 index 52a1eab..0000000 --- a/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/schema/aws-nimblestudio-studio.json b/schema/aws-nimblestudio-studio.json deleted file mode 100644 index a5bf2b0..0000000 --- a/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/schema/aws-nimblestudio-studiocomponent.json b/schema/aws-nimblestudio-studiocomponent.json deleted file mode 100644 index 3610d51..0000000 --- a/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/schema/aws-notificationscontacts-emailcontact.json b/schema/aws-notificationscontacts-emailcontact.json index 6a98634..680353b 100644 --- a/schema/aws-notificationscontacts-emailcontact.json +++ b/schema/aws-notificationscontacts-emailcontact.json @@ -90,6 +90,8 @@ "permissions": [ "notifications-contacts:CreateEmailContact", "notifications-contacts:GetEmailContact", + "notifications-contacts:SendActivationCode", + "notifications-contacts:ListEmailContacts", "notifications-contacts:TagResource", "notifications-contacts:UntagResource", "notifications-contacts:ListTagsForResource" diff --git a/schema/aws-oam-link.json b/schema/aws-oam-link.json index d7a1a32..adc5f8c 100644 --- a/schema/aws-oam-link.json +++ b/schema/aws-oam-link.json @@ -37,7 +37,9 @@ "AWS::Logs::LogGroup", "AWS::XRay::Trace", "AWS::ApplicationInsights::Application", - "AWS::InternetMonitor::Monitor" + "AWS::InternetMonitor::Monitor", + "AWS::ApplicationSignals::Service", + "AWS::ApplicationSignals::ServiceLevelObjective" ], "type": "string" } @@ -54,7 +56,8 @@ "logs:Link", "xray:Link", "applicationinsights:Link", - "internetmonitor:Link" + "internetmonitor:Link", + "application-signals:Link" ] }, "delete": { @@ -83,6 +86,7 @@ "xray:Link", "applicationinsights:Link", "internetmonitor:Link", + "application-signals:Link", "oam:TagResource", "oam:UntagResource", "oam:ListTagsForResource" diff --git a/schema/aws-omics-referencestore.json b/schema/aws-omics-referencestore.json index b2e2e24..0bc9149 100644 --- a/schema/aws-omics-referencestore.json +++ b/schema/aws-omics-referencestore.json @@ -133,8 +133,5 @@ "tagUpdatable": false, "taggable": true }, - "typeName": "AWS::Omics::ReferenceStore", - "writeOnlyProperties": [ - "/properties/Tags" - ] + "typeName": "AWS::Omics::ReferenceStore" } diff --git a/schema/aws-omics-sequencestore.json b/schema/aws-omics-sequencestore.json index 20eb593..d4e0092 100644 --- a/schema/aws-omics-sequencestore.json +++ b/schema/aws-omics-sequencestore.json @@ -1,19 +1,34 @@ { "additionalProperties": false, "createOnlyProperties": [ - "/properties/Description", - "/properties/Name", - "/properties/FallbackLocation", - "/properties/SseConfig", - "/properties/Tags" + "/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.", @@ -46,11 +61,15 @@ "type": "object" } }, - "description": "Definition of AWS::Omics::SequenceStore Resource Type", + "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" ] @@ -67,15 +86,33 @@ }, "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, @@ -95,10 +132,13 @@ "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", "type": "string" }, + "ETagAlgorithmFamily": { + "$ref": "#/definitions/ETagAlgorithmFamily" + }, "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})\\/)?$", + "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": { @@ -108,6 +148,33 @@ "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, @@ -117,14 +184,34 @@ "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/SequenceStoreId" + "/properties/S3AccessPointArn", + "/properties/S3Uri", + "/properties/SequenceStoreId", + "/properties/Status", + "/properties/StatusMessage", + "/properties/UpdateTime" ], "required": [ "Name" @@ -133,15 +220,13 @@ "cloudFormationSystemTags": true, "permissions": [ "omics:TagResource", - "omics:ListTagsForResource" + "omics:ListTagsForResource", + "omics:UntagResource" ], "tagOnCreate": true, "tagProperty": "/properties/Tags", - "tagUpdatable": false, + "tagUpdatable": true, "taggable": true }, - "typeName": "AWS::Omics::SequenceStore", - "writeOnlyProperties": [ - "/properties/Tags" - ] + "typeName": "AWS::Omics::SequenceStore" } diff --git a/schema/aws-opensearchserverless-index.json b/schema/aws-opensearchserverless-index.json new file mode 100644 index 0000000..781e76e --- /dev/null +++ b/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/schema/aws-opensearchserverless-securityconfig.json b/schema/aws-opensearchserverless-securityconfig.json index 6fd6cb6..283c730 100644 --- a/schema/aws-opensearchserverless-securityconfig.json +++ b/schema/aws-opensearchserverless-securityconfig.json @@ -75,6 +75,13 @@ "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" diff --git a/schema/aws-organizations-account.json b/schema/aws-organizations-account.json index fe3f3bc..497e616 100644 --- a/schema/aws-organizations-account.json +++ b/schema/aws-organizations-account.json @@ -34,6 +34,7 @@ "organizations:CreateAccount", "organizations:DescribeCreateAccountStatus", "organizations:MoveAccount", + "organizations:ListAccounts", "organizations:ListParents", "organizations:TagResource", "organizations:DescribeAccount", diff --git a/schema/aws-organizations-organizationalunit.json b/schema/aws-organizations-organizationalunit.json index 08d6919..1acd386 100644 --- a/schema/aws-organizations-organizationalunit.json +++ b/schema/aws-organizations-organizationalunit.json @@ -35,6 +35,7 @@ "organizations:CreateOrganizationalUnit", "organizations:DescribeOrganizationalUnit", "organizations:ListParents", + "organizations:ListOrganizationalUnitsForParent", "organizations:ListTagsForResource", "organizations:TagResource" ] diff --git a/schema/aws-organizations-policy.json b/schema/aws-organizations-policy.json index 1fe6f54..c4b79f5 100644 --- a/schema/aws-organizations-policy.json +++ b/schema/aws-organizations-policy.json @@ -37,6 +37,7 @@ "organizations:CreatePolicy", "organizations:DescribePolicy", "organizations:AttachPolicy", + "organizations:ListPolicies", "organizations:ListTagsForResource", "organizations:ListTargetsForPolicy", "organizations:TagResource" diff --git a/schema/aws-panorama-applicationinstance.json b/schema/aws-panorama-applicationinstance.json index d3bbfbe..baa5a0c 100644 --- a/schema/aws-panorama-applicationinstance.json +++ b/schema/aws-panorama-applicationinstance.json @@ -312,7 +312,18 @@ "DefaultRuntimeContextDevice" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "taggable": true, + "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/schema/aws-panorama-package.json b/schema/aws-panorama-package.json index 681961a..12387b8 100644 --- a/schema/aws-panorama-package.json +++ b/schema/aws-panorama-package.json @@ -186,6 +186,17 @@ "PackageName" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "taggable": true, + "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/schema/aws-panorama-packageversion.json b/schema/aws-panorama-packageversion.json index f9afd3a..47bc8ca 100644 --- a/schema/aws-panorama-packageversion.json +++ b/schema/aws-panorama-packageversion.json @@ -172,7 +172,6 @@ "PatchVersion" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-panorama.git", - "taggable": false, "typeName": "AWS::Panorama::PackageVersion", "writeOnlyProperties": [ "/properties/UpdatedLatestPatchVersion" diff --git a/schema/aws-paymentcryptography-key.json b/schema/aws-paymentcryptography-key.json index c7f13a9..82a9158 100644 --- a/schema/aws-paymentcryptography-key.json +++ b/schema/aws-paymentcryptography-key.json @@ -1,6 +1,30 @@ { "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", @@ -8,11 +32,16 @@ "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_P384", + "ECC_NIST_P521" ], "type": "string" }, @@ -43,7 +72,8 @@ "KeyCheckValueAlgorithm": { "enum": [ "CMAC", - "ANSI_X9_24" + "ANSI_X9_24", + "HMAC" ], "type": "string" }, @@ -206,6 +236,9 @@ "/properties/KeyIdentifier" ], "properties": { + "DeriveKeyUsage": { + "$ref": "#/definitions/DeriveKeyUsage" + }, "Enabled": { "type": "boolean" }, diff --git a/schema/aws-pcaconnectorad-connector.json b/schema/aws-pcaconnectorad-connector.json index 2a43aab..125afed 100644 --- a/schema/aws-pcaconnectorad-connector.json +++ b/schema/aws-pcaconnectorad-connector.json @@ -15,9 +15,20 @@ }, "type": "object" }, + "Unit": { + "additionalProperties": false, + "type": "object" + }, "VpcInformation": { "additionalProperties": false, "properties": { + "IpAddressType": { + "enum": [ + "IPV4", + "DUALSTACK" + ], + "type": "string" + }, "SecurityGroupIds": { "items": { "maxLength": 20, @@ -37,7 +48,7 @@ "type": "object" } }, - "description": "Definition of AWS::PCAConnectorAD::Connector Resource Type", + "description": "Represents a Connector that connects AWS PrivateCA and your directory", "handlers": { "create": { "permissions": [ @@ -89,13 +100,13 @@ "CertificateAuthorityArn": { "maxLength": 200, "minLength": 5, - "pattern": "^arn:[\\w-]+:acm-pca:[\\w-]+:[0-9]+:certificate-authority(\\/[\\w-]+)$", + "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(\\/[\\w-]+)$", + "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": { diff --git a/schema/aws-pcs-cluster.json b/schema/aws-pcs-cluster.json index 3c3fb38..dc26e86 100644 --- a/schema/aws-pcs-cluster.json +++ b/schema/aws-pcs-cluster.json @@ -202,7 +202,6 @@ }, "Name": { "description": "The name that identifies the cluster.", - "pattern": "^(?!pcs_)^(?![A-Za-z0-9]{10}$)[A-Za-z][A-Za-z0-9-]+$", "type": "string" }, "Networking": { diff --git a/schema/aws-pcs-computenodegroup.json b/schema/aws-pcs-computenodegroup.json index e32f78a..4766986 100644 --- a/schema/aws-pcs-computenodegroup.json +++ b/schema/aws-pcs-computenodegroup.json @@ -170,7 +170,7 @@ "additionalProperties": false, "description": "An Amazon EC2 launch template AWS PCS uses to launch compute nodes.", "properties": { - "Id": { + "TemplateId": { "description": "The ID of the EC2 launch template to use to provision instances.", "type": "string" }, @@ -180,7 +180,6 @@ } }, "required": [ - "Id", "Version" ], "type": "object" @@ -212,7 +211,6 @@ }, "Name": { "description": "The name that identifies the compute node group.", - "pattern": "^(?!pcs_)^(?![A-Za-z0-9]{10}$)[A-Za-z][A-Za-z0-9-]+$", "type": "string" }, "PurchaseOption": { diff --git a/schema/aws-pcs-queue.json b/schema/aws-pcs-queue.json index d4659f0..4333d8b 100644 --- a/schema/aws-pcs-queue.json +++ b/schema/aws-pcs-queue.json @@ -126,7 +126,6 @@ }, "Name": { "description": "The name that identifies the queue.", - "pattern": "^(?!pcs_)^(?![A-Za-z0-9]{10}$)[A-Za-z][A-Za-z0-9-]+$", "type": "string" }, "Status": { diff --git a/schema/aws-proton-servicetemplate.json b/schema/aws-proton-servicetemplate.json index c552c1a..473f38d 100644 --- a/schema/aws-proton-servicetemplate.json +++ b/schema/aws-proton-servicetemplate.json @@ -129,7 +129,8 @@ }, "list": { "permissions": [ - "proton:ListServiceTemplates" + "proton:ListServiceTemplates", + "proton:ListTagsForResource" ] }, "read": { diff --git a/schema/aws-qbusiness-datasource.json b/schema/aws-qbusiness-datasource.json index 2aabee6..bc8a2ba 100644 --- a/schema/aws-qbusiness-datasource.json +++ b/schema/aws-qbusiness-datasource.json @@ -11,6 +11,25 @@ ], "type": "string" }, + "AudioExtractionConfiguration": { + "additionalProperties": false, + "properties": { + "AudioExtractionStatus": { + "$ref": "#/definitions/AudioExtractionStatus" + } + }, + "required": [ + "AudioExtractionStatus" + ], + "type": "object" + }, + "AudioExtractionStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, "DataSourceStatus": { "enum": [ "PENDING_CREATION", @@ -268,8 +287,14 @@ "MediaExtractionConfiguration": { "additionalProperties": false, "properties": { + "AudioExtractionConfiguration": { + "$ref": "#/definitions/AudioExtractionConfiguration" + }, "ImageExtractionConfiguration": { "$ref": "#/definitions/ImageExtractionConfiguration" + }, + "VideoExtractionConfiguration": { + "$ref": "#/definitions/VideoExtractionConfiguration" } }, "type": "object" @@ -293,6 +318,25 @@ "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", @@ -453,6 +497,15 @@ ], "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/schema/aws-qbusiness-index.json b/schema/aws-qbusiness-index.json index bf712ab..5d4cb29 100644 --- a/schema/aws-qbusiness-index.json +++ b/schema/aws-qbusiness-index.json @@ -246,6 +246,15 @@ ], "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/schema/aws-qbusiness-retriever.json b/schema/aws-qbusiness-retriever.json index d2dfb5d..a45d2a5 100644 --- a/schema/aws-qbusiness-retriever.json +++ b/schema/aws-qbusiness-retriever.json @@ -227,6 +227,15 @@ ], "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/schema/aws-qbusiness-webexperience.json b/schema/aws-qbusiness-webexperience.json index b91d3b1..af1aedb 100644 --- a/schema/aws-qbusiness-webexperience.json +++ b/schema/aws-qbusiness-webexperience.json @@ -4,6 +4,32 @@ "/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": { @@ -209,6 +235,9 @@ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", "type": "string" }, + "BrowserExtensionConfiguration": { + "$ref": "#/definitions/BrowserExtensionConfiguration" + }, "CreatedAt": { "format": "date-time", "type": "string" @@ -302,6 +331,15 @@ ], "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/schema/aws-quicksight-analysis.json b/schema/aws-quicksight-analysis.json index 4e1b84a..2a8a678 100644 --- a/schema/aws-quicksight-analysis.json +++ b/schema/aws-quicksight-analysis.json @@ -538,6 +538,9 @@ "FieldWells": { "$ref": "#/definitions/BarChartFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -724,6 +727,9 @@ "PageBreakConfiguration": { "$ref": "#/definitions/SectionPageBreakConfiguration" }, + "RepeatConfiguration": { + "$ref": "#/definitions/BodySectionRepeatConfiguration" + }, "SectionId": { "maxLength": 512, "minLength": 1, @@ -749,6 +755,105 @@ }, "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": { @@ -786,6 +891,9 @@ "FieldWells": { "$ref": "#/definitions/BoxPlotFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -1394,6 +1502,9 @@ "FieldWells": { "$ref": "#/definitions/ComboChartFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -1738,6 +1849,15 @@ ], "type": "object" }, + "ContextMenuOption": { + "additionalProperties": false, + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, "ContributionAnalysisDefault": { "additionalProperties": false, "properties": { @@ -1897,6 +2017,9 @@ }, "ImageScaling": { "$ref": "#/definitions/CustomContentImageScalingConfiguration" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" } }, "type": "object" @@ -2087,6 +2210,13 @@ ], "type": "object" }, + "DashboardBehavior": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, "DataBarsOptions": { "additionalProperties": false, "properties": { @@ -2551,11 +2681,17 @@ "DateTimePickerControlDisplayOptions": { "additionalProperties": false, "properties": { + "DateIconVisibility": { + "$ref": "#/definitions/Visibility" + }, "DateTimeFormat": { "maxLength": 128, "minLength": 1, "type": "string" }, + "HelperTextVisibility": { + "$ref": "#/definitions/Visibility" + }, "InfoIconLabelOptions": { "$ref": "#/definitions/SheetControlInfoIconLabelOptions" }, @@ -2943,6 +3079,13 @@ }, "type": "object" }, + "DigitGroupingStyle": { + "enum": [ + "DEFAULT", + "LAKHS" + ], + "type": "string" + }, "DimensionField": { "additionalProperties": false, "properties": { @@ -3282,6 +3425,9 @@ "FieldWells": { "$ref": "#/definitions/FilledMapFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -3894,6 +4040,9 @@ "FontDecoration": { "$ref": "#/definitions/FontDecoration" }, + "FontFamily": { + "type": "string" + }, "FontSize": { "$ref": "#/definitions/FontSize" }, @@ -4232,6 +4381,9 @@ "FieldWells": { "$ref": "#/definitions/FunnelChartFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "SortConfiguration": { "$ref": "#/definitions/FunnelChartSortConfiguration" }, @@ -4365,6 +4517,20 @@ }, "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": { @@ -4394,6 +4560,9 @@ "GaugeChartConfiguration": { "additionalProperties": false, "properties": { + "ColorConfiguration": { + "$ref": "#/definitions/GaugeChartColorConfiguration" + }, "DataLabels": { "$ref": "#/definitions/DataLabelOptions" }, @@ -4403,6 +4572,9 @@ "GaugeChartOptions": { "$ref": "#/definitions/GaugeChartOptions" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "TooltipOptions": { "$ref": "#/definitions/TooltipOptions" }, @@ -4820,7 +4992,9 @@ "GeospatialLayerMapConfiguration": { "additionalProperties": false, "properties": { - "Interactions": {}, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -4926,7 +5100,9 @@ "FieldWells": { "$ref": "#/definitions/GeospatialMapFieldWells" }, - "Interactions": {}, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -5430,6 +5606,9 @@ "FieldWells": { "$ref": "#/definitions/HeatMapFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -5579,6 +5758,9 @@ "FieldWells": { "$ref": "#/definitions/HistogramFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Tooltip": { "$ref": "#/definitions/TooltipOptions" }, @@ -5754,7 +5936,9 @@ "ImageMenuOption": { "additionalProperties": false, "properties": { - "AvailabilityStatus": {} + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } }, "type": "object" }, @@ -5798,6 +5982,9 @@ }, "CustomNarrative": { "$ref": "#/definitions/CustomNarrativeOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" } }, "type": "object" @@ -6007,6 +6194,9 @@ "FieldWells": { "$ref": "#/definitions/KPIFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "KPIOptions": { "$ref": "#/definitions/KPIOptions" }, @@ -6469,6 +6659,9 @@ "minItems": 0, "type": "array" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -7056,7 +7249,9 @@ "THOUSANDS", "MILLIONS", "BILLIONS", - "TRILLIONS" + "TRILLIONS", + "LAKHS", + "CRORES" ], "type": "string" }, @@ -7912,6 +8107,9 @@ "FieldWells": { "$ref": "#/definitions/PieChartFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -8140,6 +8338,9 @@ "FieldWells": { "$ref": "#/definitions/PivotTableFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "PaginatedReportOptions": { "$ref": "#/definitions/PivotTablePaginatedReportOptions" }, @@ -8809,6 +9010,9 @@ "FieldWells": { "$ref": "#/definitions/RadarChartFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -9342,6 +9546,9 @@ "FieldWells": { "$ref": "#/definitions/SankeyDiagramFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "SortConfiguration": { "$ref": "#/definitions/SankeyDiagramSortConfiguration" } @@ -9469,9 +9676,15 @@ "FieldWells": { "$ref": "#/definitions/ScatterPlotFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, + "SortConfiguration": { + "$ref": "#/definitions/ScatterPlotSortConfiguration" + }, "Tooltip": { "$ref": "#/definitions/TooltipOptions" }, @@ -9505,6 +9718,15 @@ }, "type": "object" }, + "ScatterPlotSortConfiguration": { + "additionalProperties": false, + "properties": { + "ScatterPlotLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + } + }, + "type": "object" + }, "ScatterPlotUnaggregatedFieldWells": { "additionalProperties": false, "properties": { @@ -9810,14 +10032,6 @@ "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": { - "Images": { - "items": { - "$ref": "#/definitions/SheetImage" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, "Name": { "description": "

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

", "maxLength": 2048, @@ -10711,6 +10925,9 @@ "FieldWells": { "$ref": "#/definitions/TableFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "PaginatedReportOptions": { "$ref": "#/definitions/TablePaginatedReportOptions" }, @@ -10853,6 +11070,14 @@ "maxItems": 100, "minItems": 0, "type": "array" + }, + "TransposedTableOptions": { + "items": { + "$ref": "#/definitions/TransposedTableOption" + }, + "maxItems": 10001, + "minItems": 0, + "type": "array" } }, "type": "object" @@ -11170,6 +11395,9 @@ "ThousandSeparatorOptions": { "additionalProperties": false, "properties": { + "GroupingStyle": { + "$ref": "#/definitions/DigitGroupingStyle" + }, "Symbol": { "$ref": "#/definitions/NumericSeparatorSymbol" }, @@ -11607,6 +11835,34 @@ }, "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": { @@ -11655,6 +11911,9 @@ "GroupLabelOptions": { "$ref": "#/definitions/ChartAxisLabelOptions" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -11995,6 +12254,27 @@ ], "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": { @@ -12094,6 +12374,9 @@ "FieldWells": { "$ref": "#/definitions/WaterfallChartFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -12292,6 +12575,9 @@ "FieldWells": { "$ref": "#/definitions/WordCloudFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "SortConfiguration": { "$ref": "#/definitions/WordCloudSortConfiguration" }, @@ -12631,6 +12917,18 @@ "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", diff --git a/schema/aws-quicksight-dashboard.json b/schema/aws-quicksight-dashboard.json index 03ca3df..a89117e 100644 --- a/schema/aws-quicksight-dashboard.json +++ b/schema/aws-quicksight-dashboard.json @@ -402,6 +402,9 @@ "FieldWells": { "$ref": "#/definitions/BarChartFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -588,6 +591,9 @@ "PageBreakConfiguration": { "$ref": "#/definitions/SectionPageBreakConfiguration" }, + "RepeatConfiguration": { + "$ref": "#/definitions/BodySectionRepeatConfiguration" + }, "SectionId": { "maxLength": 512, "minLength": 1, @@ -613,6 +619,105 @@ }, "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": { @@ -650,6 +755,9 @@ "FieldWells": { "$ref": "#/definitions/BoxPlotFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -1258,6 +1366,9 @@ "FieldWells": { "$ref": "#/definitions/ComboChartFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -1602,6 +1713,15 @@ ], "type": "object" }, + "ContextMenuOption": { + "additionalProperties": false, + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, "ContributionAnalysisDefault": { "additionalProperties": false, "properties": { @@ -1761,6 +1881,9 @@ }, "ImageScaling": { "$ref": "#/definitions/CustomContentImageScalingConfiguration" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" } }, "type": "object" @@ -2028,7 +2151,9 @@ "VisualAxisSortOption": { "$ref": "#/definitions/VisualAxisSortOption" }, - "VisualMenuOption": {}, + "VisualMenuOption": { + "$ref": "#/definitions/VisualMenuOption" + }, "VisualPublishOptions": { "$ref": "#/definitions/DashboardVisualPublishOptions" } @@ -2714,11 +2839,17 @@ "DateTimePickerControlDisplayOptions": { "additionalProperties": false, "properties": { + "DateIconVisibility": { + "$ref": "#/definitions/Visibility" + }, "DateTimeFormat": { "maxLength": 128, "minLength": 1, "type": "string" }, + "HelperTextVisibility": { + "$ref": "#/definitions/Visibility" + }, "InfoIconLabelOptions": { "$ref": "#/definitions/SheetControlInfoIconLabelOptions" }, @@ -3106,6 +3237,13 @@ }, "type": "object" }, + "DigitGroupingStyle": { + "enum": [ + "DEFAULT", + "LAKHS" + ], + "type": "string" + }, "DimensionField": { "additionalProperties": false, "properties": { @@ -3475,6 +3613,9 @@ "FieldWells": { "$ref": "#/definitions/FilledMapFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -4087,6 +4228,9 @@ "FontDecoration": { "$ref": "#/definitions/FontDecoration" }, + "FontFamily": { + "type": "string" + }, "FontSize": { "$ref": "#/definitions/FontSize" }, @@ -4425,6 +4569,9 @@ "FieldWells": { "$ref": "#/definitions/FunnelChartFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "SortConfiguration": { "$ref": "#/definitions/FunnelChartSortConfiguration" }, @@ -4558,6 +4705,20 @@ }, "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": { @@ -4587,6 +4748,9 @@ "GaugeChartConfiguration": { "additionalProperties": false, "properties": { + "ColorConfiguration": { + "$ref": "#/definitions/GaugeChartColorConfiguration" + }, "DataLabels": { "$ref": "#/definitions/DataLabelOptions" }, @@ -4596,6 +4760,9 @@ "GaugeChartOptions": { "$ref": "#/definitions/GaugeChartOptions" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "TooltipOptions": { "$ref": "#/definitions/TooltipOptions" }, @@ -5013,7 +5180,9 @@ "GeospatialLayerMapConfiguration": { "additionalProperties": false, "properties": { - "Interactions": {}, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -5119,7 +5288,9 @@ "FieldWells": { "$ref": "#/definitions/GeospatialMapFieldWells" }, - "Interactions": {}, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -5623,6 +5794,9 @@ "FieldWells": { "$ref": "#/definitions/HeatMapFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -5772,6 +5946,9 @@ "FieldWells": { "$ref": "#/definitions/HistogramFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Tooltip": { "$ref": "#/definitions/TooltipOptions" }, @@ -5993,6 +6170,9 @@ }, "CustomNarrative": { "$ref": "#/definitions/CustomNarrativeOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" } }, "type": "object" @@ -6202,6 +6382,9 @@ "FieldWells": { "$ref": "#/definitions/KPIFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "KPIOptions": { "$ref": "#/definitions/KPIOptions" }, @@ -6664,6 +6847,9 @@ "minItems": 0, "type": "array" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -7265,7 +7451,9 @@ "THOUSANDS", "MILLIONS", "BILLIONS", - "TRILLIONS" + "TRILLIONS", + "LAKHS", + "CRORES" ], "type": "string" }, @@ -8121,6 +8309,9 @@ "FieldWells": { "$ref": "#/definitions/PieChartFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -8349,6 +8540,9 @@ "FieldWells": { "$ref": "#/definitions/PivotTableFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "PaginatedReportOptions": { "$ref": "#/definitions/PivotTablePaginatedReportOptions" }, @@ -9002,6 +9196,9 @@ "FieldWells": { "$ref": "#/definitions/RadarChartFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -9535,6 +9732,9 @@ "FieldWells": { "$ref": "#/definitions/SankeyDiagramFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "SortConfiguration": { "$ref": "#/definitions/SankeyDiagramSortConfiguration" } @@ -9662,9 +9862,15 @@ "FieldWells": { "$ref": "#/definitions/ScatterPlotFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, + "SortConfiguration": { + "$ref": "#/definitions/ScatterPlotSortConfiguration" + }, "Tooltip": { "$ref": "#/definitions/TooltipOptions" }, @@ -9698,6 +9904,15 @@ }, "type": "object" }, + "ScatterPlotSortConfiguration": { + "additionalProperties": false, + "properties": { + "ScatterPlotLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + } + }, + "type": "object" + }, "ScatterPlotUnaggregatedFieldWells": { "additionalProperties": false, "properties": { @@ -10003,14 +10218,6 @@ "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": { - "Images": { - "items": { - "$ref": "#/definitions/SheetImage" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, "Name": { "description": "

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

", "maxLength": 2048, @@ -10924,6 +11131,9 @@ "FieldWells": { "$ref": "#/definitions/TableFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "PaginatedReportOptions": { "$ref": "#/definitions/TablePaginatedReportOptions" }, @@ -11066,6 +11276,14 @@ "maxItems": 100, "minItems": 0, "type": "array" + }, + "TransposedTableOptions": { + "items": { + "$ref": "#/definitions/TransposedTableOption" + }, + "maxItems": 10001, + "minItems": 0, + "type": "array" } }, "type": "object" @@ -11383,6 +11601,9 @@ "ThousandSeparatorOptions": { "additionalProperties": false, "properties": { + "GroupingStyle": { + "$ref": "#/definitions/DigitGroupingStyle" + }, "Symbol": { "$ref": "#/definitions/NumericSeparatorSymbol" }, @@ -11820,6 +12041,34 @@ }, "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": { @@ -11868,6 +12117,9 @@ "GroupLabelOptions": { "$ref": "#/definitions/ChartAxisLabelOptions" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -12217,6 +12469,18 @@ ], "type": "string" }, + "VisualInteractionOptions": { + "additionalProperties": false, + "properties": { + "ContextMenuOption": { + "$ref": "#/definitions/ContextMenuOption" + }, + "VisualMenuOption": { + "$ref": "#/definitions/VisualMenuOption" + } + }, + "type": "object" + }, "VisualMenuOption": { "additionalProperties": false, "properties": { @@ -12325,6 +12589,9 @@ "FieldWells": { "$ref": "#/definitions/WaterfallChartFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -12523,6 +12790,9 @@ "FieldWells": { "$ref": "#/definitions/WordCloudFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "SortConfiguration": { "$ref": "#/definitions/WordCloudSortConfiguration" }, @@ -12864,6 +13134,18 @@ "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", diff --git a/schema/aws-quicksight-dataset.json b/schema/aws-quicksight-dataset.json index fca7232..705c942 100644 --- a/schema/aws-quicksight-dataset.json +++ b/schema/aws-quicksight-dataset.json @@ -157,13 +157,10 @@ "$ref": "#/definitions/CalculatedColumn" }, "maxItems": 128, - "minItems": 1, + "minItems": 0, "type": "array" } }, - "required": [ - "Columns" - ], "type": "object" }, "CustomSql": { @@ -214,6 +211,9 @@ "additionalProperties": false, "description": "

The refresh properties of a dataset.

", "properties": { + "FailureConfiguration": { + "$ref": "#/definitions/RefreshFailureConfiguration" + }, "RefreshConfiguration": { "$ref": "#/definitions/RefreshConfiguration" } @@ -237,6 +237,12 @@ }, "type": "object" }, + "DataSetUseAs": { + "enum": [ + "RLS_RULES" + ], + "type": "string" + }, "DatasetParameter": { "additionalProperties": false, "description": "

A dataset parameter.

", @@ -902,7 +908,7 @@ "type": "string" }, "maxItems": 2000, - "minItems": 1, + "minItems": 0, "type": "array" } }, @@ -924,6 +930,31 @@ ], "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.

", @@ -984,8 +1015,7 @@ } }, "required": [ - "ColumnName", - "NewColumnName" + "ColumnName" ], "type": "object" }, @@ -1148,11 +1178,12 @@ "minItems": 1, "type": "array" }, - "UploadSettings": {} + "UploadSettings": { + "$ref": "#/definitions/UploadSettings" + } }, "required": [ - "DataSourceArn", - "InputColumns" + "DataSourceArn" ], "type": "object" }, @@ -1582,6 +1613,9 @@ "maxItems": 200, "minItems": 1, "type": "array" + }, + "UseAs": { + "$ref": "#/definitions/DataSetUseAs" } }, "readOnlyProperties": [ @@ -1593,6 +1627,11 @@ ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-quicksight-datasource.json b/schema/aws-quicksight-datasource.json index c034a36..e3e43d5 100644 --- a/schema/aws-quicksight-datasource.json +++ b/schema/aws-quicksight-datasource.json @@ -1158,6 +1158,18 @@ "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", diff --git a/schema/aws-quicksight-template.json b/schema/aws-quicksight-template.json index ea982ea..5104466 100644 --- a/schema/aws-quicksight-template.json +++ b/schema/aws-quicksight-template.json @@ -388,6 +388,9 @@ "FieldWells": { "$ref": "#/definitions/BarChartFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -574,6 +577,9 @@ "PageBreakConfiguration": { "$ref": "#/definitions/SectionPageBreakConfiguration" }, + "RepeatConfiguration": { + "$ref": "#/definitions/BodySectionRepeatConfiguration" + }, "SectionId": { "maxLength": 512, "minLength": 1, @@ -599,6 +605,105 @@ }, "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": { @@ -636,6 +741,9 @@ "FieldWells": { "$ref": "#/definitions/BoxPlotFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -1284,6 +1392,9 @@ "FieldWells": { "$ref": "#/definitions/ComboChartFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -1628,6 +1739,15 @@ ], "type": "object" }, + "ContextMenuOption": { + "additionalProperties": false, + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, "ContributionAnalysisDefault": { "additionalProperties": false, "properties": { @@ -1787,6 +1907,9 @@ }, "ImageScaling": { "$ref": "#/definitions/CustomContentImageScalingConfiguration" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" } }, "type": "object" @@ -1977,6 +2100,13 @@ ], "type": "object" }, + "DashboardBehavior": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, "DataBarsOptions": { "additionalProperties": false, "properties": { @@ -2427,11 +2557,13 @@ "DateTimePickerControlDisplayOptions": { "additionalProperties": false, "properties": { + "DateIconVisibility": {}, "DateTimeFormat": { "maxLength": 128, "minLength": 1, "type": "string" }, + "HelperTextVisibility": {}, "InfoIconLabelOptions": { "$ref": "#/definitions/SheetControlInfoIconLabelOptions" }, @@ -2795,6 +2927,13 @@ }, "type": "object" }, + "DigitGroupingStyle": { + "enum": [ + "DEFAULT", + "LAKHS" + ], + "type": "string" + }, "DimensionField": { "additionalProperties": false, "properties": { @@ -3126,6 +3265,9 @@ "FieldWells": { "$ref": "#/definitions/FilledMapFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -3738,6 +3880,9 @@ "FontDecoration": { "$ref": "#/definitions/FontDecoration" }, + "FontFamily": { + "type": "string" + }, "FontSize": { "$ref": "#/definitions/FontSize" }, @@ -3760,6 +3905,10 @@ "FontSize": { "additionalProperties": false, "properties": { + "Absolute": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, "Relative": { "$ref": "#/definitions/RelativeFontSize" } @@ -4066,6 +4215,9 @@ "FieldWells": { "$ref": "#/definitions/FunnelChartFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "SortConfiguration": { "$ref": "#/definitions/FunnelChartSortConfiguration" }, @@ -4193,6 +4345,20 @@ }, "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": { @@ -4222,6 +4388,9 @@ "GaugeChartConfiguration": { "additionalProperties": false, "properties": { + "ColorConfiguration": { + "$ref": "#/definitions/GaugeChartColorConfiguration" + }, "DataLabels": { "$ref": "#/definitions/DataLabelOptions" }, @@ -4231,6 +4400,9 @@ "GaugeChartOptions": { "$ref": "#/definitions/GaugeChartOptions" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "TooltipOptions": { "$ref": "#/definitions/TooltipOptions" }, @@ -4897,6 +5069,9 @@ "FieldWells": { "$ref": "#/definitions/HeatMapFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -5046,6 +5221,9 @@ "FieldWells": { "$ref": "#/definitions/HistogramFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Tooltip": { "$ref": "#/definitions/TooltipOptions" }, @@ -5221,7 +5399,9 @@ "ImageMenuOption": { "additionalProperties": false, "properties": { - "AvailabilityStatus": {} + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } }, "type": "object" }, @@ -5265,6 +5445,9 @@ }, "CustomNarrative": { "$ref": "#/definitions/CustomNarrativeOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" } }, "type": "object" @@ -5450,6 +5633,9 @@ "FieldWells": { "$ref": "#/definitions/KPIFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "KPIOptions": { "$ref": "#/definitions/KPIOptions" }, @@ -5902,6 +6088,9 @@ "minItems": 0, "type": "array" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -6475,7 +6664,9 @@ "THOUSANDS", "MILLIONS", "BILLIONS", - "TRILLIONS" + "TRILLIONS", + "LAKHS", + "CRORES" ], "type": "string" }, @@ -7280,6 +7471,9 @@ "FieldWells": { "$ref": "#/definitions/PieChartFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -7508,6 +7702,9 @@ "FieldWells": { "$ref": "#/definitions/PivotTableFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "PaginatedReportOptions": { "$ref": "#/definitions/PivotTablePaginatedReportOptions" }, @@ -8153,6 +8350,9 @@ "FieldWells": { "$ref": "#/definitions/RadarChartFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -8684,6 +8884,9 @@ "FieldWells": { "$ref": "#/definitions/SankeyDiagramFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "SortConfiguration": { "$ref": "#/definitions/SankeyDiagramSortConfiguration" } @@ -8811,9 +9014,15 @@ "FieldWells": { "$ref": "#/definitions/ScatterPlotFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, + "SortConfiguration": { + "$ref": "#/definitions/ScatterPlotSortConfiguration" + }, "Tooltip": { "$ref": "#/definitions/TooltipOptions" }, @@ -8847,6 +9056,15 @@ }, "type": "object" }, + "ScatterPlotSortConfiguration": { + "additionalProperties": false, + "properties": { + "ScatterPlotLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + } + }, + "type": "object" + }, "ScatterPlotUnaggregatedFieldWells": { "additionalProperties": false, "properties": { @@ -9148,14 +9366,6 @@ "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": { - "Images": { - "items": { - "$ref": "#/definitions/SheetImage" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, "Name": { "description": "

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

", "maxLength": 2048, @@ -10016,6 +10226,9 @@ "FieldWells": { "$ref": "#/definitions/TableFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "PaginatedReportOptions": { "$ref": "#/definitions/TablePaginatedReportOptions" }, @@ -10156,6 +10369,14 @@ "maxItems": 100, "minItems": 0, "type": "array" + }, + "TransposedTableOptions": { + "items": { + "$ref": "#/definitions/TransposedTableOption" + }, + "maxItems": 10001, + "minItems": 0, + "type": "array" } }, "type": "object" @@ -10676,6 +10897,9 @@ "ThousandSeparatorOptions": { "additionalProperties": false, "properties": { + "GroupingStyle": { + "$ref": "#/definitions/DigitGroupingStyle" + }, "Symbol": { "$ref": "#/definitions/NumericSeparatorSymbol" }, @@ -11107,6 +11331,34 @@ }, "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": { @@ -11155,6 +11407,9 @@ "GroupLabelOptions": { "$ref": "#/definitions/ChartAxisLabelOptions" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -11490,6 +11745,27 @@ ], "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": { @@ -11585,6 +11861,9 @@ "FieldWells": { "$ref": "#/definitions/WaterfallChartFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "Legend": { "$ref": "#/definitions/LegendOptions" }, @@ -11783,6 +12062,9 @@ "FieldWells": { "$ref": "#/definitions/WordCloudFieldWells" }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, "SortConfiguration": { "$ref": "#/definitions/WordCloudSortConfiguration" }, @@ -12074,6 +12356,18 @@ "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", diff --git a/schema/aws-quicksight-theme.json b/schema/aws-quicksight-theme.json index 2df8683..8f35348 100644 --- a/schema/aws-quicksight-theme.json +++ b/schema/aws-quicksight-theme.json @@ -517,10 +517,17 @@ "Name" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-quicksight", - "typeName": "AWS::QuickSight::Theme", - "writeOnlyProperties": [ - "/properties/BaseThemeId", - "/properties/Configuration", - "/properties/VersionDescription" - ] + "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/schema/aws-quicksight-topic.json b/schema/aws-quicksight-topic.json index 0f76d13..3b91c33 100644 --- a/schema/aws-quicksight-topic.json +++ b/schema/aws-quicksight-topic.json @@ -2,6 +2,7 @@ "additionalProperties": false, "createOnlyProperties": [ "/properties/AwsAccountId", + "/properties/FolderArns", "/properties/TopicId" ], "definitions": { @@ -390,7 +391,9 @@ "THOUSANDS", "MILLIONS", "BILLIONS", - "TRILLIONS" + "TRILLIONS", + "LAKHS", + "CRORES" ], "type": "string" }, @@ -684,6 +687,16 @@ ], "type": "object" }, + "TopicConfigOptions": { + "additionalProperties": false, + "description": "Model for configuration of a Topic", + "properties": { + "QBusinessInsightsEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, "TopicDateRangeFilter": { "additionalProperties": false, "properties": { @@ -700,6 +713,9 @@ "TopicDetails": { "additionalProperties": false, "properties": { + "ConfigOptions": { + "$ref": "#/definitions/TopicConfigOptions" + }, "DataSets": { "items": { "$ref": "#/definitions/DatasetMetadata" @@ -983,6 +999,9 @@ "pattern": "^[0-9]{12}$", "type": "string" }, + "ConfigOptions": { + "$ref": "#/definitions/TopicConfigOptions" + }, "DataSets": { "items": { "$ref": "#/definitions/DatasetMetadata" @@ -994,6 +1013,14 @@ "minLength": 0, "type": "string" }, + "FolderArns": { + "items": { + "type": "string" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, "Name": { "maxLength": 128, "minLength": 1, @@ -1018,5 +1045,8 @@ "tagUpdatable": false, "taggable": false }, - "typeName": "AWS::QuickSight::Topic" + "typeName": "AWS::QuickSight::Topic", + "writeOnlyProperties": [ + "/properties/FolderArns" + ] } diff --git a/schema/aws-quicksight-vpcconnection.json b/schema/aws-quicksight-vpcconnection.json index 2e0f38b..b5dc487 100644 --- a/schema/aws-quicksight-vpcconnection.json +++ b/schema/aws-quicksight-vpcconnection.json @@ -249,6 +249,11 @@ ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-ram-permission.json b/schema/aws-ram-permission.json index c6126c8..9c9dfa3 100644 --- a/schema/aws-ram-permission.json +++ b/schema/aws-ram-permission.json @@ -121,7 +121,12 @@ "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 }, diff --git a/schema/aws-rds-dbcluster.json b/schema/aws-rds-dbcluster.json index 20a38cc..2bd3711 100644 --- a/schema/aws-rds-dbcluster.json +++ b/schema/aws-rds-dbcluster.json @@ -306,7 +306,7 @@ "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 only", + "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": { @@ -423,7 +423,7 @@ "type": "string" }, "PerformanceInsightsRetentionPeriod": { - "description": "The number of days to retain Performance Insights data.\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.", + "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": { @@ -435,7 +435,7 @@ "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", + "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": { @@ -444,7 +444,7 @@ }, "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``." + "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", @@ -535,6 +535,7 @@ "/properties/Endpoint", "/properties/Endpoint/Address", "/properties/Endpoint/Port", + "/properties/ReadEndpoint", "/properties/ReadEndpoint/Address", "/properties/MasterUserSecret/SecretArn", "/properties/StorageThroughput" diff --git a/schema/aws-rds-dbinstance.json b/schema/aws-rds-dbinstance.json index 7abf315..005e539 100644 --- a/schema/aws-rds-dbinstance.json +++ b/schema/aws-rds-dbinstance.json @@ -234,6 +234,7 @@ "rds:DescribeDBEngineVersions", "rds:DescribeDBInstances", "rds:DescribeDBParameterGroups", + "rds:DescribeDBInstanceAutomatedBackups", "rds:DescribeEvents", "rds:ModifyDBInstance", "rds:PromoteReadReplica", @@ -261,6 +262,10 @@ "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": { @@ -280,6 +285,11 @@ "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" @@ -295,7 +305,7 @@ }, "CertificateDetails": { "$ref": "#/definitions/CertificateDetails", - "description": "The details of the DB instance's server certificate." + "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.", @@ -353,11 +363,11 @@ "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.", + "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 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.", + "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": { @@ -428,7 +438,7 @@ }, "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``." + "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``", @@ -506,7 +516,7 @@ "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.", + "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": { @@ -519,7 +529,7 @@ "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.", + "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": { @@ -572,11 +582,11 @@ "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.", + "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, ``gp2``.", + "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": { @@ -639,15 +649,16 @@ "/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", - "/properties/DatabaseInsightsMode" + "/properties/CertificateDetails/ValidTill" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", "tagging": { @@ -676,6 +687,7 @@ "/properties/SourceRegion", "/properties/TdeCredentialPassword", "/properties/UseDefaultProcessorFeatures", - "/properties/UseLatestRestorableTime" + "/properties/UseLatestRestorableTime", + "/properties/ApplyImmediately" ] } diff --git a/schema/aws-rds-dbparametergroup.json b/schema/aws-rds-dbparametergroup.json index f472e98..c397df7 100644 --- a/schema/aws-rds-dbparametergroup.json +++ b/schema/aws-rds-dbparametergroup.json @@ -93,7 +93,7 @@ "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.", + "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": { diff --git a/schema/aws-rds-dbproxy.json b/schema/aws-rds-dbproxy.json index be20059..84cfb40 100644 --- a/schema/aws-rds-dbproxy.json +++ b/schema/aws-rds-dbproxy.json @@ -195,6 +195,11 @@ "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, diff --git a/schema/aws-rds-dbproxyendpoint.json b/schema/aws-rds-dbproxyendpoint.json index 8db2f30..efd2899 100644 --- a/schema/aws-rds-dbproxyendpoint.json +++ b/schema/aws-rds-dbproxyendpoint.json @@ -139,6 +139,11 @@ "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, diff --git a/schema/aws-rds-globalcluster.json b/schema/aws-rds-globalcluster.json index 3e0e94c..958180e 100644 --- a/schema/aws-rds-globalcluster.json +++ b/schema/aws-rds-globalcluster.json @@ -153,6 +153,9 @@ "propertyTransform": { "/properties/GlobalClusterIdentifier": "$lowercase(GlobalClusterIdentifier)" }, + "readOnlyProperties": [ + "/properties/GlobalEndpoint" + ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", "tagging": { "cloudFormationSystemTags": true, diff --git a/schema/aws-redshift-cluster.json b/schema/aws-redshift-cluster.json index e699ac0..5e0195d 100644 --- a/schema/aws-redshift-cluster.json +++ b/schema/aws-redshift-cluster.json @@ -388,7 +388,7 @@ "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", + "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": { diff --git a/schema/aws-redshift-clusterparametergroup.json b/schema/aws-redshift-clusterparametergroup.json index 6ba4f11..83ae82b 100644 --- a/schema/aws-redshift-clusterparametergroup.json +++ b/schema/aws-redshift-clusterparametergroup.json @@ -73,6 +73,7 @@ "delete": { "permissions": [ "redshift:DescribeTags", + "redshift:DeleteTags", "redshift:DescribeClusterParameterGroups", "redshift:DeleteClusterParameterGroup", "redshift:DescribeClusterParameters", @@ -147,12 +148,16 @@ "ParameterGroupFamily" ], "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "redshift:DescribeTags", + "redshift:CreateTags", + "redshift:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, "taggable": true }, - "typeName": "AWS::Redshift::ClusterParameterGroup", - "writeOnlyProperties": [ - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" - ] + "typeName": "AWS::Redshift::ClusterParameterGroup" } diff --git a/schema/aws-redshift-clustersubnetgroup.json b/schema/aws-redshift-clustersubnetgroup.json index 5aaadeb..840ee55 100644 --- a/schema/aws-redshift-clustersubnetgroup.json +++ b/schema/aws-redshift-clustersubnetgroup.json @@ -159,7 +159,7 @@ ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift", "tagging": { - "taggable": true + "taggable": false }, "typeName": "AWS::Redshift::ClusterSubnetGroup", "writeOnlyProperties": [ diff --git a/schema/aws-redshift-eventsubscription.json b/schema/aws-redshift-eventsubscription.json index 8cc1cfb..1018e93 100644 --- a/schema/aws-redshift-eventsubscription.json +++ b/schema/aws-redshift-eventsubscription.json @@ -188,7 +188,7 @@ ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift", "tagging": { - "taggable": true + "taggable": false }, "typeName": "AWS::Redshift::EventSubscription", "writeOnlyProperties": [ diff --git a/schema/aws-redshiftserverless-namespace.json b/schema/aws-redshiftserverless-namespace.json index e2fadee..e53f887 100644 --- a/schema/aws-redshiftserverless-namespace.json +++ b/schema/aws-redshiftserverless-namespace.json @@ -1,8 +1,7 @@ { "additionalProperties": false, "createOnlyProperties": [ - "/properties/NamespaceName", - "/properties/Tags" + "/properties/NamespaceName" ], "definitions": { "LogExport": { diff --git a/schema/aws-redshiftserverless-workgroup.json b/schema/aws-redshiftserverless-workgroup.json index 46813cc..43cafa8 100644 --- a/schema/aws-redshiftserverless-workgroup.json +++ b/schema/aws-redshiftserverless-workgroup.json @@ -179,6 +179,12 @@ }, "type": "array" }, + "TrackName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_]+$", + "type": "string" + }, "WorkgroupArn": { "type": "string" }, @@ -220,7 +226,9 @@ "redshift-serverless:GetWorkgroup", "redshift-serverless:GetNamespace", "redshift-serverless:ListTagsForResource", - "redshift-serverless:TagResource" + "redshift-serverless:TagResource", + "redshift-serverless:RestoreFromSnapshot", + "redshift-serverless:RestoreFromRecoveryPoint" ] }, "delete": { @@ -281,7 +289,9 @@ "redshift-serverless:UpdateWorkgroup", "redshift-serverless:ListTagsForResource", "redshift-serverless:TagResource", - "redshift-serverless:UntagResource" + "redshift-serverless:UntagResource", + "redshift-serverless:RestoreFromSnapshot", + "redshift-serverless:RestoreFromRecoveryPoint" ] } }, @@ -333,6 +343,10 @@ "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, @@ -346,6 +360,18 @@ "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, @@ -369,6 +395,12 @@ "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" @@ -382,7 +414,6 @@ } }, "readOnlyProperties": [ - "/properties/Workgroup", "/properties/Workgroup/WorkgroupId", "/properties/Workgroup/WorkgroupArn", "/properties/Workgroup/WorkgroupName", @@ -394,6 +425,7 @@ "/properties/Workgroup/ConfigParameters/*/ParameterValue", "/properties/Workgroup/SecurityGroupIds", "/properties/Workgroup/SubnetIds", + "/properties/Workgroup/TrackName", "/properties/Workgroup/Status", "/properties/Workgroup/Endpoint/Address", "/properties/Workgroup/Endpoint/Port", @@ -424,10 +456,12 @@ }, "typeName": "AWS::RedshiftServerless::Workgroup", "writeOnlyProperties": [ - "/properties/BaseCapacity", - "/properties/MaxCapacity", "/properties/ConfigParameters", "/properties/SecurityGroupIds", - "/properties/SubnetIds" + "/properties/SubnetIds", + "/properties/SnapshotArn", + "/properties/SnapshotName", + "/properties/SnapshotOwnerAccount", + "/properties/RecoveryPointId" ] } diff --git a/schema/aws-resiliencehub-app.json b/schema/aws-resiliencehub-app.json index b7ec92a..14c2706 100644 --- a/schema/aws-resiliencehub-app.json +++ b/schema/aws-resiliencehub-app.json @@ -290,11 +290,6 @@ "PermissionModel": { "$ref": "#/definitions/PermissionModel" }, - "RegulatoryPolicyArn": { - "description": "Amazon Resource Name (ARN) of the Regulatory 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" - }, "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}$", diff --git a/schema/aws-resourcegroups-group.json b/schema/aws-resourcegroups-group.json index 31a7592..4d940f1 100644 --- a/schema/aws-resourcegroups-group.json +++ b/schema/aws-resourcegroups-group.json @@ -202,7 +202,8 @@ "cloudFormationSystemTags": true, "permissions": [ "resource-groups:Tag", - "resource-groups:Untag" + "resource-groups:Untag", + "resource-groups:GetTags" ], "tagOnCreate": true, "tagProperty": "/properties/Tags", diff --git a/schema/aws-rolesanywhere-crl.json b/schema/aws-rolesanywhere-crl.json index 1809412..3274bf4 100644 --- a/schema/aws-rolesanywhere-crl.json +++ b/schema/aws-rolesanywhere-crl.json @@ -27,8 +27,7 @@ "create": { "permissions": [ "rolesanywhere:ImportCrl", - "rolesanywhere:TagResource", - "rolesanywhere:ListTagsForResource" + "rolesanywhere:TagResource" ] }, "delete": { diff --git a/schema/aws-rolesanywhere-profile.json b/schema/aws-rolesanywhere-profile.json index 9142746..d20423d 100644 --- a/schema/aws-rolesanywhere-profile.json +++ b/schema/aws-rolesanywhere-profile.json @@ -73,7 +73,6 @@ "iam:PassRole", "rolesanywhere:CreateProfile", "rolesanywhere:TagResource", - "rolesanywhere:ListTagsForResource", "rolesanywhere:PutAttributeMapping", "rolesanywhere:DeleteAttributeMapping" ] diff --git a/schema/aws-rolesanywhere-trustanchor.json b/schema/aws-rolesanywhere-trustanchor.json index 6c38cae..e2f5f9e 100644 --- a/schema/aws-rolesanywhere-trustanchor.json +++ b/schema/aws-rolesanywhere-trustanchor.json @@ -115,8 +115,7 @@ "permissions": [ "iam:CreateServiceLinkedRole", "rolesanywhere:CreateTrustAnchor", - "rolesanywhere:TagResource", - "rolesanywhere:ListTagsForResource" + "rolesanywhere:TagResource" ] }, "delete": { diff --git a/schema/aws-route53-cidrcollection.json b/schema/aws-route53-cidrcollection.json index 27866ce..0567d1f 100644 --- a/schema/aws-route53-cidrcollection.json +++ b/schema/aws-route53-cidrcollection.json @@ -30,7 +30,7 @@ "type": "object" } }, - "description": "Resource schema for AWS::Route53::CidrCollection.", + "description": "Resource Type definition for AWS::Route53::CidrCollection.", "handlers": { "create": { "permissions": [ diff --git a/schema/aws-route53recoverycontrol-cluster.json b/schema/aws-route53recoverycontrol-cluster.json index d10ecce..ad2e9a3 100644 --- a/schema/aws-route53recoverycontrol-cluster.json +++ b/schema/aws-route53recoverycontrol-cluster.json @@ -67,6 +67,13 @@ "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": [ @@ -94,6 +101,14 @@ "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": [ diff --git a/schema/aws-route53recoveryreadiness-readinesscheck.json b/schema/aws-route53recoveryreadiness-readinesscheck.json index fbd0149..2ad4494 100644 --- a/schema/aws-route53recoveryreadiness-readinesscheck.json +++ b/schema/aws-route53recoveryreadiness-readinesscheck.json @@ -103,7 +103,7 @@ "permissions": [ "route53-recovery-readiness:TagResource", "route53-recovery-readiness:UntagResource", - "route53-recovery-readiness:ListTagsForResource" + "route53-recovery-readiness:ListTagsForResources" ], "tagOnCreate": true, "tagProperty": "/properties/Tags", diff --git a/schema/aws-route53resolver-outpostresolver.json b/schema/aws-route53resolver-outpostresolver.json index c89198f..fd5f578 100644 --- a/schema/aws-route53resolver-outpostresolver.json +++ b/schema/aws-route53resolver-outpostresolver.json @@ -34,6 +34,7 @@ "permissions": [ "route53resolver:CreateOutpostResolver", "route53resolver:GetOutpostResolver", + "route53resolver:ListOutpostResolvers", "route53resolver:ListTagsForResource", "outposts:GetOutpost", "route53resolver:TagResource" diff --git a/schema/aws-route53resolver-resolverqueryloggingconfig.json b/schema/aws-route53resolver-resolverqueryloggingconfig.json index b6dbbc5..e3f8ffc 100644 --- a/schema/aws-route53resolver-resolverqueryloggingconfig.json +++ b/schema/aws-route53resolver-resolverqueryloggingconfig.json @@ -2,8 +2,34 @@ "additionalProperties": false, "createOnlyProperties": [ "/properties/Name", - "/properties/DestinationArn" + "/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": { @@ -20,7 +46,10 @@ "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups", - "iam:CreateServiceLinkedRole" + "iam:CreateServiceLinkedRole", + "route53resolver:ListTagsForResource", + "route53resolver:TagResource", + "route53resolver:ListResolverQueryLogConfigs" ] }, "delete": { @@ -28,19 +57,24 @@ "resolverquerylogging:DeleteConfig", "resolverquerylogging:ListConfig", "route53resolver:DeleteResolverQueryLogConfig", - "route53resolver:ListResolverQueryLogConfigs" + "route53resolver:ListResolverQueryLogConfigs", + "route53resolver:UntagResource", + "route53resolver:ListTagsForResource" ] }, "list": { "permissions": [ "resolverquerylogging:ListConfig", - "route53resolver:ListResolverQueryLogConfigs" + "route53resolver:ListResolverQueryLogConfigs", + "route53resolver:ListTagsForResource" ] }, "read": { "permissions": [ "resolverquerylogging:GetConfig", - "route53resolver:GetResolverQueryLogConfig" + "route53resolver:GetResolverQueryLogConfig", + "route53resolver:ListTagsForResource", + "route53resolver:ListResolverQueryLogConfigs" ] } }, @@ -113,6 +147,15 @@ "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": [ @@ -125,6 +168,16 @@ "/properties/CreationTime", "/properties/Id" ], - "taggable": false, + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "route53resolver:TagResource", + "route53resolver:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, "typeName": "AWS::Route53Resolver::ResolverQueryLoggingConfig" } diff --git a/schema/aws-route53resolver-resolverqueryloggingconfigassociation.json b/schema/aws-route53resolver-resolverqueryloggingconfigassociation.json index aac1c0e..eb268fa 100644 --- a/schema/aws-route53resolver-resolverqueryloggingconfigassociation.json +++ b/schema/aws-route53resolver-resolverqueryloggingconfigassociation.json @@ -98,5 +98,8 @@ "/properties/CreationTime", "/properties/Id" ], + "tagging": { + "taggable": false + }, "typeName": "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation" } diff --git a/schema/aws-route53resolver-resolverruleassociation.json b/schema/aws-route53resolver-resolverruleassociation.json index 0c26a4d..0f7c3dc 100644 --- a/schema/aws-route53resolver-resolverruleassociation.json +++ b/schema/aws-route53resolver-resolverruleassociation.json @@ -22,7 +22,8 @@ }, "list": { "permissions": [ - "route53resolver:ListResolverRuleAssociations" + "route53resolver:ListResolverRuleAssociations", + "ec2:DescribeVpcs" ] }, "read": { diff --git a/schema/aws-rum-appmonitor.json b/schema/aws-rum-appmonitor.json index 92e1dd0..84d89ae 100644 --- a/schema/aws-rum-appmonitor.json +++ b/schema/aws-rum-appmonitor.json @@ -95,6 +95,36 @@ ], "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, @@ -209,6 +239,26 @@ "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.", @@ -287,7 +337,9 @@ "rum:PutRumMetricsDestination", "rum:BatchCreateRumMetricDefinitions", "rum:ListRumMetricsDestinations", - "rum:BatchGetRumMetricDefinitions" + "rum:BatchGetRumMetricDefinitions", + "rum:GetResourcePolicy", + "rum:PutResourcePolicy" ] }, "delete": { @@ -304,7 +356,10 @@ "rum:DeleteRumMetricsDestination", "rum:BatchDeleteRumMetricDefinitions", "rum:ListRumMetricsDestinations", - "rum:BatchGetRumMetricDefinitions" + "rum:BatchGetRumMetricDefinitions", + "rum:GetResourcePolicy", + "rum:PutResourcePolicy", + "rum:DeleteResourcePolicy" ] }, "list": { @@ -331,7 +386,8 @@ "s3:GetObjectAcl", "rum:ListTagsForResource", "rum:ListRumMetricsDestinations", - "rum:BatchGetRumMetricDefinitions" + "rum:BatchGetRumMetricDefinitions", + "rum:GetResourcePolicy" ] }, "update": { @@ -366,10 +422,25 @@ "rum:BatchCreateRumMetricDefinitions", "rum:BatchDeleteRumMetricDefinitions", "rum:BatchGetRumMetricDefinitions", - "rum:UpdateRumMetricDefinition" + "rum:UpdateRumMetricDefinition", + "rum:GetResourcePolicy", + "rum:PutResourcePolicy", + "rum:DeleteResourcePolicy" ] } }, + "oneOf": [ + { + "required": [ + "Domain" + ] + }, + { + "required": [ + "DomainList" + ] + } + ], "primaryIdentifier": [ "/properties/Name" ], @@ -384,13 +455,28 @@ "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.", + "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, @@ -405,6 +491,9 @@ "pattern": "[\\.\\-_/#A-Za-z0-9]+", "type": "string" }, + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + }, "Tags": { "$ref": "#/definitions/TagDef" } @@ -413,11 +502,19 @@ "/properties/Id" ], "required": [ - "Name", - "Domain" + "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/schema/aws-s3-accessgrantsinstance.json b/schema/aws-s3-accessgrantsinstance.json index f07bc10..004684e 100644 --- a/schema/aws-s3-accessgrantsinstance.json +++ b/schema/aws-s3-accessgrantsinstance.json @@ -34,12 +34,15 @@ "create": { "permissions": [ "s3:CreateAccessGrantsInstance", + "s3:AssociateAccessGrantsIdentityCenter", "s3:TagResource" ] }, "delete": { "permissions": [ - "s3:DeleteAccessGrantsInstance" + "s3:GetAccessGrantsInstance", + "s3:DeleteAccessGrantsInstance", + "s3:DissociateAccessGrantsIdentityCenter" ] }, "list": { @@ -109,8 +112,5 @@ "tagUpdatable": true, "taggable": true }, - "typeName": "AWS::S3::AccessGrantsInstance", - "writeOnlyProperties": [ - "/properties/Tags" - ] + "typeName": "AWS::S3::AccessGrantsInstance" } diff --git a/schema/aws-s3-accesspoint.json b/schema/aws-s3-accesspoint.json index fc82dcc..da63f95 100644 --- a/schema/aws-s3-accesspoint.json +++ b/schema/aws-s3-accesspoint.json @@ -51,6 +51,7 @@ "permissions": [ "s3:CreateAccessPoint", "s3:PutAccessPointPolicy", + "s3:GetAccessPoint", "s3:PutAccessPointPublicAccessBlock" ] }, diff --git a/schema/aws-s3-bucket.json b/schema/aws-s3-bucket.json index b0af9a0..1f1e629 100644 --- a/schema/aws-s3-bucket.json +++ b/schema/aws-s3-bucket.json @@ -485,7 +485,7 @@ "uniqueItems": true }, "TransitionDefaultMinimumObjectSize": { - "description": "", + "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" @@ -517,6 +517,20 @@ }, "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.", @@ -1215,9 +1229,36 @@ ], "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 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.", + "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*.", @@ -1321,7 +1362,7 @@ }, "TagFilter": { "additionalProperties": false, - "description": "Specifies tags to use to identify a subset of objects for an Amazon S3 bucket.", + "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.", @@ -1436,7 +1477,7 @@ "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.", + "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" } }, @@ -1525,7 +1566,15 @@ "s3:PutBucketVersioning", "s3:PutObjectLockConfiguration", "s3:PutBucketOwnershipControls", - "s3:PutIntelligentTieringConfiguration" + "s3:PutIntelligentTieringConfiguration", + "s3:GetBucketMetadataTableConfiguration", + "s3:CreateBucketMetadataTableConfiguration", + "s3tables:CreateNamespace", + "s3tables:CreateTable", + "s3tables:GetTable", + "s3tables:PutTablePolicy", + "s3tables:GetTableMetadataLocation", + "s3tables:UpdateTableMetadataLocation" ] }, "delete": { @@ -1559,6 +1608,7 @@ "s3:GetBucketTagging", "s3:GetBucketOwnershipControls", "s3:GetIntelligentTieringConfiguration", + "s3:GetBucketMetadataTableConfiguration", "s3:ListBucket" ] }, @@ -1576,6 +1626,15 @@ "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", @@ -1639,7 +1698,7 @@ "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.", + "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": { @@ -1686,6 +1745,10 @@ "$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, @@ -1701,7 +1764,7 @@ }, "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)." + "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.", @@ -1762,10 +1825,17 @@ "/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, diff --git a/schema/aws-s3-bucketpolicy.json b/schema/aws-s3-bucketpolicy.json index c20f837..3bc15f7 100644 --- a/schema/aws-s3-bucketpolicy.json +++ b/schema/aws-s3-bucketpolicy.json @@ -3,7 +3,7 @@ "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)", + "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": [ diff --git a/schema/aws-s3-multiregionaccesspoint.json b/schema/aws-s3-multiregionaccesspoint.json index 7d0d746..e3033a1 100644 --- a/schema/aws-s3-multiregionaccesspoint.json +++ b/schema/aws-s3-multiregionaccesspoint.json @@ -122,5 +122,8 @@ "required": [ "Regions" ], + "tagging": { + "taggable": false + }, "typeName": "AWS::S3::MultiRegionAccessPoint" } diff --git a/schema/aws-s3-multiregionaccesspointpolicy.json b/schema/aws-s3-multiregionaccesspointpolicy.json index 40dbfc5..c9494aa 100644 --- a/schema/aws-s3-multiregionaccesspointpolicy.json +++ b/schema/aws-s3-multiregionaccesspointpolicy.json @@ -75,5 +75,8 @@ "Policy", "MrapName" ], + "tagging": { + "taggable": false + }, "typeName": "AWS::S3::MultiRegionAccessPointPolicy" } diff --git a/schema/aws-s3tables-tablebucket.json b/schema/aws-s3tables-tablebucket.json index 20d61ca..2b01ca9 100644 --- a/schema/aws-s3tables-tablebucket.json +++ b/schema/aws-s3tables-tablebucket.json @@ -4,6 +4,25 @@ "/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": [ @@ -49,8 +68,11 @@ "permissions": [ "s3tables:CreateTableBucket", "s3tables:PutTableBucketMaintenanceConfiguration", + "s3tables:PutTableBucketEncryption", "s3tables:GetTableBucket", - "s3tables:GetTableBucketMaintenanceConfiguration" + "s3tables:GetTableBucketMaintenanceConfiguration", + "s3tables:GetTableBucketEncryption", + "kms:DescribeKey" ] }, "delete": { @@ -66,14 +88,18 @@ "read": { "permissions": [ "s3tables:GetTableBucket", - "s3tables:GetTableBucketMaintenanceConfiguration" + "s3tables:GetTableBucketMaintenanceConfiguration", + "s3tables:GetTableBucketEncryption" ] }, "update": { "permissions": [ "s3tables:PutTableBucketMaintenanceConfiguration", + "s3tables:PutTableBucketEncryption", + "s3tables:GetTableBucketMaintenanceConfiguration", + "s3tables:GetTableBucketEncryption", "s3tables:GetTableBucket", - "s3tables:GetTableBucketMaintenanceConfiguration" + "kms:DescribeKey" ] } }, @@ -81,6 +107,9 @@ "/properties/TableBucketARN" ], "properties": { + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration" + }, "TableBucketARN": { "$ref": "#/definitions/TableBucketARN" }, diff --git a/schema/aws-sagemaker-dataqualityjobdefinition.json b/schema/aws-sagemaker-dataqualityjobdefinition.json index edc6d1c..0747107 100644 --- a/schema/aws-sagemaker-dataqualityjobdefinition.json +++ b/schema/aws-sagemaker-dataqualityjobdefinition.json @@ -493,6 +493,7 @@ "sagemaker:CreateDataQualityJobDefinition", "sagemaker:DescribeDataQualityJobDefinition", "sagemaker:AddTags", + "sagemaker:ListTags", "iam:PassRole" ] }, @@ -509,7 +510,8 @@ }, "read": { "permissions": [ - "sagemaker:DescribeDataQualityJobDefinition" + "sagemaker:DescribeDataQualityJobDefinition", + "sagemaker:ListTags" ] } }, @@ -594,9 +596,6 @@ }, "typeName": "AWS::SageMaker::DataQualityJobDefinition", "writeOnlyProperties": [ - "/properties/EndpointName", - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" + "/properties/EndpointName" ] } diff --git a/schema/aws-sagemaker-endpointconfig.json b/schema/aws-sagemaker-endpointconfig.json index 9202741..e216253 100644 --- a/schema/aws-sagemaker-endpointconfig.json +++ b/schema/aws-sagemaker-endpointconfig.json @@ -304,6 +304,9 @@ "EnableSSMAccess": { "type": "boolean" }, + "InferenceAmiVersion": { + "type": "string" + }, "InitialInstanceCount": { "type": "integer" }, diff --git a/schema/aws-sagemaker-featuregroup.json b/schema/aws-sagemaker-featuregroup.json index 21b7596..5473bcc 100644 --- a/schema/aws-sagemaker-featuregroup.json +++ b/schema/aws-sagemaker-featuregroup.json @@ -350,6 +350,11 @@ ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "sagemaker:AddTags", + "sagemaker:ListTags", + "sagemaker:DeleteTags" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": false, diff --git a/schema/aws-sagemaker-image.json b/schema/aws-sagemaker-image.json index 8ce5558..13b00cd 100644 --- a/schema/aws-sagemaker-image.json +++ b/schema/aws-sagemaker-image.json @@ -143,6 +143,11 @@ ], "tagging": { "cloudFormationSystemTags": false, + "permissions": [ + "sagemaker:AddTags", + "sagemaker:ListTags", + "sagemaker:DeleteTags" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-sagemaker-inferencecomponent.json b/schema/aws-sagemaker-inferencecomponent.json index 112605f..b574a04 100644 --- a/schema/aws-sagemaker-inferencecomponent.json +++ b/schema/aws-sagemaker-inferencecomponent.json @@ -1,12 +1,48 @@ { "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, @@ -65,6 +101,30 @@ "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": "", @@ -108,12 +168,44 @@ "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", @@ -175,6 +267,11 @@ ], "type": "string" }, + "MaximumExecutionTimeoutInSeconds": { + "maximum": 28800, + "minimum": 600, + "type": "integer" + }, "MemoryInMb": { "minimum": 128, "type": "integer" @@ -242,6 +339,11 @@ "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", @@ -292,6 +394,9 @@ "CreationTime": { "$ref": "#/definitions/Timestamp" }, + "DeploymentConfig": { + "$ref": "#/definitions/InferenceComponentDeploymentConfig" + }, "EndpointArn": { "$ref": "#/definitions/EndpointArn" }, @@ -342,6 +447,11 @@ ], "tagging": { "cloudFormationSystemTags": false, + "permissions": [ + "sagemaker:AddTags", + "sagemaker:ListTags", + "sagemaker:DeleteTags" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, @@ -350,6 +460,7 @@ "typeName": "AWS::SageMaker::InferenceComponent", "writeOnlyProperties": [ "/properties/Specification/Container/Image", - "/properties/RuntimeConfig/CopyCount" + "/properties/RuntimeConfig/CopyCount", + "/properties/DeploymentConfig" ] } diff --git a/schema/aws-sagemaker-mlflowtrackingserver.json b/schema/aws-sagemaker-mlflowtrackingserver.json index 30696c9..caaad79 100644 --- a/schema/aws-sagemaker-mlflowtrackingserver.json +++ b/schema/aws-sagemaker-mlflowtrackingserver.json @@ -41,14 +41,14 @@ "sagemaker:ListTags", "iam:PassRole" ], - "timeoutInMinutes": 65 + "timeoutInMinutes": 95 }, "delete": { "permissions": [ "sagemaker:DeleteMlflowTrackingServer", "sagemaker:DescribeMlflowTrackingServer" ], - "timeoutInMinutes": 65 + "timeoutInMinutes": 95 }, "list": { "permissions": [ diff --git a/schema/aws-sagemaker-modelbiasjobdefinition.json b/schema/aws-sagemaker-modelbiasjobdefinition.json index 1b42007..752712c 100644 --- a/schema/aws-sagemaker-modelbiasjobdefinition.json +++ b/schema/aws-sagemaker-modelbiasjobdefinition.json @@ -529,7 +529,8 @@ "sagemaker:CreateModelBiasJobDefinition", "sagemaker:DescribeModelBiasJobDefinition", "iam:PassRole", - "sagemaker:AddTags" + "sagemaker:AddTags", + "sagemaker:ListTags" ] }, "delete": { @@ -545,7 +546,8 @@ }, "read": { "permissions": [ - "sagemaker:DescribeModelBiasJobDefinition" + "sagemaker:DescribeModelBiasJobDefinition", + "sagemaker:ListTags" ] } }, @@ -630,9 +632,6 @@ }, "typeName": "AWS::SageMaker::ModelBiasJobDefinition", "writeOnlyProperties": [ - "/properties/EndpointName", - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" + "/properties/EndpointName" ] } diff --git a/schema/aws-sagemaker-modelexplainabilityjobdefinition.json b/schema/aws-sagemaker-modelexplainabilityjobdefinition.json index 7895bbc..4d9ece4 100644 --- a/schema/aws-sagemaker-modelexplainabilityjobdefinition.json +++ b/schema/aws-sagemaker-modelexplainabilityjobdefinition.json @@ -483,7 +483,8 @@ "sagemaker:CreateModelExplainabilityJobDefinition", "sagemaker:DescribeModelExplainabilityJobDefinition", "iam:PassRole", - "sagemaker:AddTags" + "sagemaker:AddTags", + "sagemaker:ListTags" ] }, "delete": { @@ -499,7 +500,8 @@ }, "read": { "permissions": [ - "sagemaker:DescribeModelExplainabilityJobDefinition" + "sagemaker:DescribeModelExplainabilityJobDefinition", + "sagemaker:ListTags" ] } }, @@ -584,9 +586,6 @@ }, "typeName": "AWS::SageMaker::ModelExplainabilityJobDefinition", "writeOnlyProperties": [ - "/properties/EndpointName", - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" + "/properties/EndpointName" ] } diff --git a/schema/aws-sagemaker-modelqualityjobdefinition.json b/schema/aws-sagemaker-modelqualityjobdefinition.json index 7e69ea9..755e907 100644 --- a/schema/aws-sagemaker-modelqualityjobdefinition.json +++ b/schema/aws-sagemaker-modelqualityjobdefinition.json @@ -555,6 +555,7 @@ "sagemaker:CreateModelQualityJobDefinition", "sagemaker:DescribeModelQualityJobDefinition", "sagemaker:AddTags", + "sagemaker:ListTags", "iam:PassRole" ] }, @@ -571,7 +572,8 @@ }, "read": { "permissions": [ - "sagemaker:DescribeModelQualityJobDefinition" + "sagemaker:DescribeModelQualityJobDefinition", + "sagemaker:ListTags" ] } }, @@ -656,9 +658,6 @@ }, "typeName": "AWS::SageMaker::ModelQualityJobDefinition", "writeOnlyProperties": [ - "/properties/EndpointName", - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" + "/properties/EndpointName" ] } diff --git a/schema/aws-sagemaker-partnerapp.json b/schema/aws-sagemaker-partnerapp.json index dbb3ae4..eeb93d8 100644 --- a/schema/aws-sagemaker-partnerapp.json +++ b/schema/aws-sagemaker-partnerapp.json @@ -4,7 +4,8 @@ "/properties/Name", "/properties/Type", "/properties/ExecutionRoleArn", - "/properties/AuthType" + "/properties/AuthType", + "/properties/KmsKeyId" ], "definitions": { "PartnerAppAdminUserList": { @@ -93,7 +94,9 @@ "sagemaker:DescribePartnerApp", "sagemaker:AddTags", "sagemaker:ListTags", - "iam:PassRole" + "iam:PassRole", + "kms:CreateGrant", + "kms:DescribeKey" ], "timeoutInMinutes": 180 }, @@ -124,7 +127,8 @@ "sagemaker:DescribePartnerApp", "sagemaker:AddTags", "sagemaker:ListTags", - "sagemaker:DeleteTags" + "sagemaker:DeleteTags", + "kms:DescribeKey" ], "timeoutInMinutes": 180 } @@ -174,6 +178,12 @@ "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", "type": "string" }, + "KmsKeyId": { + "description": "The AWS KMS customer managed key used to encrypt the data associated with the PartnerApp.", + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, "MaintenanceConfig": { "$ref": "#/definitions/PartnerAppMaintenanceConfig", "description": "A collection of settings that specify the maintenance schedule for the PartnerApp." diff --git a/schema/aws-sagemaker-pipeline.json b/schema/aws-sagemaker-pipeline.json index 4479971..9ac8584 100644 --- a/schema/aws-sagemaker-pipeline.json +++ b/schema/aws-sagemaker-pipeline.json @@ -173,5 +173,17 @@ "PipelineDefinition", "RoleArn" ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "sagemaker:AddTags", + "sagemaker:ListTags", + "sagemaker:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, "typeName": "AWS::SageMaker::Pipeline" } diff --git a/schema/aws-sagemaker-userprofile.json b/schema/aws-sagemaker-userprofile.json index 219115d..2589ffc 100644 --- a/schema/aws-sagemaker-userprofile.json +++ b/schema/aws-sagemaker-userprofile.json @@ -43,7 +43,7 @@ "items": { "$ref": "#/definitions/CustomImage" }, - "maxItems": 30, + "maxItems": 200, "minItems": 0, "type": "array", "uniqueItems": false @@ -257,7 +257,7 @@ "items": { "$ref": "#/definitions/CustomImage" }, - "maxItems": 30, + "maxItems": 200, "minItems": 0, "type": "array", "uniqueItems": false diff --git a/schema/aws-securityhub-automationrule.json b/schema/aws-securityhub-automationrule.json index c06877e..6693a45 100644 --- a/schema/aws-securityhub-automationrule.json +++ b/schema/aws-securityhub-automationrule.json @@ -827,6 +827,11 @@ "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, diff --git a/schema/aws-securityhub-configurationpolicy.json b/schema/aws-securityhub-configurationpolicy.json index cf0e580..e03eeef 100644 --- a/schema/aws-securityhub-configurationpolicy.json +++ b/schema/aws-securityhub-configurationpolicy.json @@ -291,6 +291,11 @@ "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, diff --git a/schema/aws-securityhub-hub.json b/schema/aws-securityhub-hub.json index 8e40d42..0dae5a4 100644 --- a/schema/aws-securityhub-hub.json +++ b/schema/aws-securityhub-hub.json @@ -5,7 +5,7 @@ "additionalProperties": false, "description": "A key-value pair to associate with a resource.", "patternProperties": { - "^[a-zA-Z0-9-_]{1,128}$": { + "^(?!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, @@ -89,6 +89,11 @@ "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, diff --git a/schema/aws-servicecatalog-cloudformationprovisionedproduct.json b/schema/aws-servicecatalog-cloudformationprovisionedproduct.json index e07e933..3cb4110 100644 --- a/schema/aws-servicecatalog-cloudformationprovisionedproduct.json +++ b/schema/aws-servicecatalog-cloudformationprovisionedproduct.json @@ -103,23 +103,28 @@ "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 } diff --git a/schema/aws-ses-mailmanageringresspoint.json b/schema/aws-ses-mailmanageringresspoint.json index 1fbbebc..de43aa6 100644 --- a/schema/aws-ses-mailmanageringresspoint.json +++ b/schema/aws-ses-mailmanageringresspoint.json @@ -1,6 +1,7 @@ { "additionalProperties": false, "createOnlyProperties": [ + "/properties/NetworkConfiguration", "/properties/Type" ], "definitions": { @@ -63,6 +64,75 @@ ], "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": { @@ -94,7 +164,8 @@ "ses:ListTagsForResource", "ses:GetIngressPoint", "ses:CreateIngressPoint", - "iam:CreateServiceLinkedRole" + "iam:CreateServiceLinkedRole", + "ec2:DescribeVpcEndpoints" ] }, "delete": { @@ -148,6 +219,9 @@ "pattern": "^[A-Za-z0-9_\\-]+$", "type": "string" }, + "NetworkConfiguration": { + "$ref": "#/definitions/NetworkConfiguration" + }, "RuleSetId": { "maxLength": 100, "minLength": 1, diff --git a/schema/aws-ses-mailmanagerruleset.json b/schema/aws-ses-mailmanagerruleset.json index 6362cf4..0a58912 100644 --- a/schema/aws-ses-mailmanagerruleset.json +++ b/schema/aws-ses-mailmanagerruleset.json @@ -39,7 +39,7 @@ "ResultField": { "maxLength": 256, "minLength": 1, - "pattern": "^[\\sa-zA-Z0-9_]+$", + "pattern": "^(addon\\.)?[\\sa-zA-Z0-9_]+$", "type": "string" } }, @@ -379,6 +379,19 @@ ], "title": "Attribute", "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Analysis": { + "$ref": "#/definitions/Analysis" + } + }, + "required": [ + "Analysis" + ], + "title": "Analysis", + "type": "object" } ] }, @@ -517,9 +530,9 @@ }, "Values": { "items": { - "maxLength": 18, + "maxLength": 43, "minLength": 1, - "pattern": "^(([0-9]|.|/)*)$", + "pattern": "^(([0-9]|.|:|/)*)$", "type": "string" }, "maxItems": 10, @@ -690,6 +703,19 @@ ], "title": "MimeHeaderAttribute", "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Analysis": { + "$ref": "#/definitions/Analysis" + } + }, + "required": [ + "Analysis" + ], + "title": "Analysis", + "type": "object" } ] }, diff --git a/schema/aws-ses-mailmanagertrafficpolicy.json b/schema/aws-ses-mailmanagertrafficpolicy.json index 5179c69..91240e8 100644 --- a/schema/aws-ses-mailmanagertrafficpolicy.json +++ b/schema/aws-ses-mailmanagertrafficpolicy.json @@ -18,7 +18,7 @@ "ResultField": { "maxLength": 256, "minLength": 1, - "pattern": "^[\\sa-zA-Z0-9_]+$", + "pattern": "^(addon\\.)?[\\sa-zA-Z0-9_]+$", "type": "string" } }, @@ -122,6 +122,54 @@ ], "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" @@ -175,6 +223,19 @@ ], "title": "Attribute", "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Analysis": { + "$ref": "#/definitions/IngressAnalysis" + } + }, + "required": [ + "Analysis" + ], + "title": "Analysis", + "type": "object" } ] }, @@ -263,6 +324,19 @@ "title": "IpExpression", "type": "object" }, + { + "additionalProperties": false, + "properties": { + "Ipv6Expression": { + "$ref": "#/definitions/IngressIpv6Expression" + } + }, + "required": [ + "Ipv6Expression" + ], + "title": "Ipv6Expression", + "type": "object" + }, { "additionalProperties": false, "properties": { diff --git a/schema/aws-shield-protection.json b/schema/aws-shield-protection.json index f82bce5..a5dd648 100644 --- a/schema/aws-shield-protection.json +++ b/schema/aws-shield-protection.json @@ -193,7 +193,14 @@ "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/schema/aws-shield-protectiongroup.json b/schema/aws-shield-protectiongroup.json index 507b7a7..48637eb 100644 --- a/schema/aws-shield-protectiongroup.json +++ b/schema/aws-shield-protectiongroup.json @@ -145,7 +145,9 @@ "shield:UntagResource", "shield:TagResource" ], + "tagOnCreate": true, "tagProperty": "/properties/Tags", + "tagUpdatable": true, "taggable": true }, "typeName": "AWS::Shield::ProtectionGroup" diff --git a/schema/aws-signer-profilepermission.json b/schema/aws-signer-profilepermission.json index c100d03..bc0cd44 100644 --- a/schema/aws-signer-profilepermission.json +++ b/schema/aws-signer-profilepermission.json @@ -73,5 +73,11 @@ "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/schema/aws-signer-signingprofile.json b/schema/aws-signer-signingprofile.json index fdde75a..cf7b31f 100644 --- a/schema/aws-signer-signingprofile.json +++ b/schema/aws-signer-signingprofile.json @@ -148,5 +148,17 @@ "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/schema/aws-sns-topic.json b/schema/aws-sns-topic.json index 3ec91a3..a41b508 100644 --- a/schema/aws-sns-topic.json +++ b/schema/aws-sns-topic.json @@ -208,6 +208,11 @@ "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, diff --git a/schema/aws-ssm-document.json b/schema/aws-ssm-document.json index 729b25c..da06447 100644 --- a/schema/aws-ssm-document.json +++ b/schema/aws-ssm-document.json @@ -111,6 +111,7 @@ }, "read": { "permissions": [ + "ssm:DescribeDocument", "ssm:GetDocument", "ssm:ListTagsForResource" ] @@ -226,6 +227,15 @@ ], "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", diff --git a/schema/aws-ssm-patchbaseline.json b/schema/aws-ssm-patchbaseline.json index 2c37050..cbe2324 100644 --- a/schema/aws-ssm-patchbaseline.json +++ b/schema/aws-ssm-patchbaseline.json @@ -361,6 +361,11 @@ ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "ssm:AddTagsToResource", + "ssm:ListTagsForResource", + "ssm:RemoveTagsFromResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-ssm-resourcedatasync.json b/schema/aws-ssm-resourcedatasync.json index ef71453..da59387 100644 --- a/schema/aws-ssm-resourcedatasync.json +++ b/schema/aws-ssm-resourcedatasync.json @@ -174,9 +174,6 @@ "type": "string" } }, - "readOnlyProperties": [ - "/properties/SyncName" - ], "required": [ "SyncName" ], diff --git a/schema/aws-ssmincidents-replicationset.json b/schema/aws-ssmincidents-replicationset.json index 07a78be..f2acedd 100644 --- a/schema/aws-ssmincidents-replicationset.json +++ b/schema/aws-ssmincidents-replicationset.json @@ -16,7 +16,9 @@ "description": "The ReplicationSet regional configuration.", "properties": { "SseKmsKeyId": { - "$ref": "#/definitions/Arn" + "description": "The AWS Key Management Service key ID or Key Alias to use to encrypt your replication set.", + "maxLength": 2048, + "type": "string" } }, "required": [ @@ -155,6 +157,11 @@ "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, diff --git a/schema/aws-ssmincidents-responseplan.json b/schema/aws-ssmincidents-responseplan.json index a7fcd6f..2813457 100644 --- a/schema/aws-ssmincidents-responseplan.json +++ b/schema/aws-ssmincidents-responseplan.json @@ -452,6 +452,11 @@ "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, diff --git a/schema/aws-sso-application.json b/schema/aws-sso-application.json index cf91eed..e0452d2 100644 --- a/schema/aws-sso-application.json +++ b/schema/aws-sso-application.json @@ -80,7 +80,8 @@ "permissions": [ "sso:CreateApplication", "sso:DescribeApplication", - "sso:TagResource" + "sso:TagResource", + "sso:ListTagsForResource" ] }, "delete": { @@ -100,7 +101,8 @@ ] }, "permissions": [ - "sso:ListApplications" + "sso:ListApplications", + "sso:ListTagsForResource" ] }, "read": { @@ -191,6 +193,10 @@ "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, diff --git a/schema/aws-sso-instance.json b/schema/aws-sso-instance.json index 5d977c7..6f534c4 100644 --- a/schema/aws-sso-instance.json +++ b/schema/aws-sso-instance.json @@ -124,6 +124,12 @@ "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, diff --git a/schema/aws-sso-permissionset.json b/schema/aws-sso-permissionset.json index 1ea0cb6..217e079 100644 --- a/schema/aws-sso-permissionset.json +++ b/schema/aws-sso-permissionset.json @@ -223,6 +223,11 @@ ], "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, diff --git a/schema/aws-synthetics-canary.json b/schema/aws-synthetics-canary.json index dea35b6..1ee5976 100644 --- a/schema/aws-synthetics-canary.json +++ b/schema/aws-synthetics-canary.json @@ -407,6 +407,14 @@ ], "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", diff --git a/schema/aws-synthetics-group.json b/schema/aws-synthetics-group.json index 4d00aba..6564f8d 100644 --- a/schema/aws-synthetics-group.json +++ b/schema/aws-synthetics-group.json @@ -112,6 +112,15 @@ ], "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/schema/aws-systemsmanagersap-application.json b/schema/aws-systemsmanagersap-application.json index 8586d84..c6c6aee 100644 --- a/schema/aws-systemsmanagersap-application.json +++ b/schema/aws-systemsmanagersap-application.json @@ -5,9 +5,36 @@ "/properties/Instances", "/properties/SapInstanceNumber", "/properties/Sid", - "/properties/DatabaseArn" + "/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": { @@ -113,6 +140,15 @@ "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": { @@ -176,6 +212,7 @@ "/properties/Instances", "/properties/SapInstanceNumber", "/properties/Sid", - "/properties/DatabaseArn" + "/properties/DatabaseArn", + "/properties/ComponentsInfo" ] } diff --git a/schema/aws-timestream-database.json b/schema/aws-timestream-database.json index e47c9ed..d4a9ad9 100644 --- a/schema/aws-timestream-database.json +++ b/schema/aws-timestream-database.json @@ -95,5 +95,17 @@ "/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/schema/aws-timestream-influxdbinstance.json b/schema/aws-timestream-influxdbinstance.json index 6571c54..a0f364e 100644 --- a/schema/aws-timestream-influxdbinstance.json +++ b/schema/aws-timestream-influxdbinstance.json @@ -6,13 +6,12 @@ "/properties/Password", "/properties/Organization", "/properties/Bucket", - "/properties/DbInstanceType", "/properties/VpcSubnetIds", "/properties/VpcSecurityGroupIds", "/properties/PubliclyAccessible", "/properties/DbStorageType", "/properties/AllocatedStorage", - "/properties/DeploymentType" + "/properties/NetworkType" ], "definitions": { "Tag": { @@ -88,7 +87,9 @@ "timestream-influxdb:UpdateDbInstance", "timestream-influxdb:TagResource", "timestream-influxdb:UntagResource", - "timestream-influxdb:ListTagsForResource" + "timestream-influxdb:ListTagsForResource", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs" ], "timeoutInMinutes": 2160 } @@ -211,7 +212,15 @@ "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]+)*$", + "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": { @@ -227,6 +236,12 @@ "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.", @@ -244,6 +259,8 @@ "DELETING", "MODIFYING", "UPDATING", + "UPDATING_DEPLOYMENT_TYPE", + "UPDATING_INSTANCE_TYPE", "DELETED", "FAILED" ], @@ -299,6 +316,11 @@ "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, diff --git a/schema/aws-timestream-scheduledquery.json b/schema/aws-timestream-scheduledquery.json index 7d4a8c5..f34eba7 100644 --- a/schema/aws-timestream-scheduledquery.json +++ b/schema/aws-timestream-scheduledquery.json @@ -542,5 +542,17 @@ "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/schema/aws-timestream-table.json b/schema/aws-timestream-table.json index 48b5c4a..f958823 100644 --- a/schema/aws-timestream-table.json +++ b/schema/aws-timestream-table.json @@ -236,5 +236,17 @@ "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/schema/aws-transfer-agreement.json b/schema/aws-transfer-agreement.json index 9438c05..25062fe 100644 --- a/schema/aws-transfer-agreement.json +++ b/schema/aws-transfer-agreement.json @@ -103,6 +103,45 @@ "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, @@ -110,6 +149,14 @@ "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, @@ -124,6 +171,14 @@ "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, @@ -158,12 +213,16 @@ "ServerId", "LocalProfileId", "PartnerProfileId", - "BaseDirectory", "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, diff --git a/schema/aws-transfer-certificate.json b/schema/aws-transfer-certificate.json index d64515c..28c73c2 100644 --- a/schema/aws-transfer-certificate.json +++ b/schema/aws-transfer-certificate.json @@ -182,6 +182,11 @@ ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "transfer:ListTagsForResource", + "transfer:UnTagResource", + "transfer:TagResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-transfer-connector.json b/schema/aws-transfer-connector.json index 4b720e2..3b3fc17 100644 --- a/schema/aws-transfer-connector.json +++ b/schema/aws-transfer-connector.json @@ -152,6 +152,14 @@ "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": [ @@ -245,6 +253,11 @@ ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "transfer:ListTagsForResource", + "transfer:UnTagResource", + "transfer:TagResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-transfer-profile.json b/schema/aws-transfer-profile.json index f7b0b93..b27fc2d 100644 --- a/schema/aws-transfer-profile.json +++ b/schema/aws-transfer-profile.json @@ -128,6 +128,11 @@ ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "transfer:ListTagsForResource", + "transfer:UnTagResource", + "transfer:TagResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-transfer-webapp.json b/schema/aws-transfer-webapp.json new file mode 100644 index 0000000..2d0c2a4 --- /dev/null +++ b/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/schema/aws-transfer-workflow.json b/schema/aws-transfer-workflow.json index ae9255e..86ea478 100644 --- a/schema/aws-transfer-workflow.json +++ b/schema/aws-transfer-workflow.json @@ -391,6 +391,11 @@ ], "tagging": { "cloudFormationSystemTags": true, + "permissions": [ + "transfer:ListTagsForResource", + "transfer:UnTagResource", + "transfer:TagResource" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": true, diff --git a/schema/aws-vpclattice-accesslogsubscription.json b/schema/aws-vpclattice-accesslogsubscription.json index 45fa3e1..36c6735 100644 --- a/schema/aws-vpclattice-accesslogsubscription.json +++ b/schema/aws-vpclattice-accesslogsubscription.json @@ -91,7 +91,8 @@ ] }, "permissions": [ - "vpc-lattice:ListAccessLogSubscriptions" + "vpc-lattice:ListAccessLogSubscriptions", + "logs:GetLogDelivery" ] }, "read": { diff --git a/schema/aws-vpclattice-listener.json b/schema/aws-vpclattice-listener.json index 3ca86e0..502b232 100644 --- a/schema/aws-vpclattice-listener.json +++ b/schema/aws-vpclattice-listener.json @@ -90,7 +90,7 @@ }, "Weight": { "maximum": 999, - "minimum": 1, + "minimum": 0, "type": "integer" } }, diff --git a/schema/aws-vpclattice-resourceconfiguration.json b/schema/aws-vpclattice-resourceconfiguration.json index ef7f86f..574c3b4 100644 --- a/schema/aws-vpclattice-resourceconfiguration.json +++ b/schema/aws-vpclattice-resourceconfiguration.json @@ -233,7 +233,10 @@ "/properties/Id", "/properties/Arn" ], - "required": [], + "required": [ + "Name", + "ResourceConfigurationType" + ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", "tagging": { "cloudFormationSystemTags": true, diff --git a/schema/aws-vpclattice-resourcegateway.json b/schema/aws-vpclattice-resourcegateway.json index f74167a..48e4fef 100644 --- a/schema/aws-vpclattice-resourcegateway.json +++ b/schema/aws-vpclattice-resourcegateway.json @@ -48,7 +48,8 @@ "delete": { "permissions": [ "vpc-lattice:DeleteResourceGateway", - "vpc-lattice:GetResourceGateway" + "vpc-lattice:GetResourceGateway", + "vpc-lattice:UntagResource" ] }, "list": { @@ -167,8 +168,13 @@ "/properties/Id", "/properties/Arn" ], + "required": [ + "Name", + "VpcIdentifier", + "SubnetIds" + ], "tagging": { - "cloudFormationSystemTags": false, + "cloudFormationSystemTags": true, "permissions": [ "vpc-lattice:UntagResource", "vpc-lattice:TagResource", diff --git a/schema/aws-wafv2-rulegroup.json b/schema/aws-wafv2-rulegroup.json index 87c223d..dbdc65b 100644 --- a/schema/aws-wafv2-rulegroup.json +++ b/schema/aws-wafv2-rulegroup.json @@ -336,6 +336,9 @@ "JA3Fingerprint": { "$ref": "#/definitions/JA3Fingerprint" }, + "JA4Fingerprint": { + "$ref": "#/definitions/JA4Fingerprint" + }, "JsonBody": { "$ref": "#/definitions/JsonBody" }, @@ -372,6 +375,9 @@ ], "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" @@ -547,6 +553,23 @@ ], "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.", @@ -768,6 +791,12 @@ "IP": { "$ref": "#/definitions/RateLimitIP" }, + "JA3Fingerprint": { + "$ref": "#/definitions/RateLimitJA3Fingerprint" + }, + "JA4Fingerprint": { + "$ref": "#/definitions/RateLimitJA4Fingerprint" + }, "LabelNamespace": { "$ref": "#/definitions/RateLimitLabelNamespace" }, @@ -848,6 +877,40 @@ "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.", @@ -1290,6 +1353,20 @@ ], "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.", diff --git a/schema/aws-wafv2-webacl.json b/schema/aws-wafv2-webacl.json index e2334e4..1009314 100644 --- a/schema/aws-wafv2-webacl.json +++ b/schema/aws-wafv2-webacl.json @@ -374,6 +374,54 @@ ], "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.", @@ -465,6 +513,9 @@ "JA3Fingerprint": { "$ref": "#/definitions/JA3Fingerprint" }, + "JA4Fingerprint": { + "$ref": "#/definitions/JA4Fingerprint" + }, "JsonBody": { "$ref": "#/definitions/JsonBody" }, @@ -501,6 +552,9 @@ ], "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" @@ -508,6 +562,40 @@ }, "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": { @@ -676,6 +764,23 @@ ], "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.", @@ -990,6 +1095,12 @@ "IP": { "$ref": "#/definitions/RateLimitIP" }, + "JA3Fingerprint": { + "$ref": "#/definitions/RateLimitJA3Fingerprint" + }, + "JA4Fingerprint": { + "$ref": "#/definitions/RateLimitJA4Fingerprint" + }, "LabelNamespace": { "$ref": "#/definitions/RateLimitLabelNamespace" }, @@ -1070,6 +1181,40 @@ "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.", @@ -1825,6 +1970,20 @@ }, "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" }, @@ -1943,6 +2102,10 @@ "CustomResponseBodies": { "$ref": "#/definitions/CustomResponseBodies" }, + "DataProtectionConfig": { + "$ref": "#/definitions/DataProtectionConfig", + "description": "Collection of dataProtects." + }, "DefaultAction": { "$ref": "#/definitions/DefaultAction" }, diff --git a/schema/aws-wafv2-webaclassociation.json b/schema/aws-wafv2-webaclassociation.json index bad6d96..b652b5b 100644 --- a/schema/aws-wafv2-webaclassociation.json +++ b/schema/aws-wafv2-webaclassociation.json @@ -19,6 +19,8 @@ "wafv2:GetWebACLForResource", "wafv2:GetWebACL", "wafv2:DisassociateWebACL", + "wafv2:PutPermissionPolicy", + "wafv2:GetPermissionPolicy", "elasticloadbalancing:SetWebACL", "apigateway:SetWebACL", "appsync:SetWebACL", @@ -31,7 +33,9 @@ "ec2:AssociateVerifiedAccessInstanceWebAcl", "ec2:DisassociateVerifiedAccessInstanceWebAcl", "ec2:DescribeVerifiedAccessInstanceWebAclAssociations", - "ec2:GetVerifiedAccessInstanceWebAcl" + "ec2:GetVerifiedAccessInstanceWebAcl", + "amplify:AssociateWebACL", + "amplify:GetWebACLForResource" ] }, "delete": { @@ -40,6 +44,7 @@ "wafv2:GetWebACLForResource", "wafv2:GetWebACL", "wafv2:DisassociateWebACL", + "wafv2:PutPermissionPolicy", "elasticloadbalancing:SetWebACL", "apigateway:SetWebACL", "appsync:SetWebACL", @@ -52,7 +57,9 @@ "ec2:AssociateVerifiedAccessInstanceWebAcl", "ec2:DisassociateVerifiedAccessInstanceWebAcl", "ec2:DescribeVerifiedAccessInstanceWebAclAssociations", - "ec2:GetVerifiedAccessInstanceWebAcl" + "ec2:GetVerifiedAccessInstanceWebAcl", + "amplify:DisassociateWebACL", + "amplify:GetWebACLForResource" ] }, "read": { @@ -73,7 +80,8 @@ "ec2:AssociateVerifiedAccessInstanceWebAcl", "ec2:DisassociateVerifiedAccessInstanceWebAcl", "ec2:DescribeVerifiedAccessInstanceWebAclAssociations", - "ec2:GetVerifiedAccessInstanceWebAcl" + "ec2:GetVerifiedAccessInstanceWebAcl", + "amplify:GetWebACLForResource" ] }, "update": { diff --git a/schema/aws-wisdom-aiagent.json b/schema/aws-wisdom-aiagent.json index 3776657..35fc8ea 100644 --- a/schema/aws-wisdom-aiagent.json +++ b/schema/aws-wisdom-aiagent.json @@ -91,6 +91,10 @@ "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" @@ -171,6 +175,10 @@ "$ref": "#/definitions/AssociationConfiguration" }, "type": "array" + }, + "Locale": { + "minLength": 1, + "type": "string" } }, "type": "object" diff --git a/schema/aws-wisdom-aiprompt.json b/schema/aws-wisdom-aiprompt.json index 3769926..95956fe 100644 --- a/schema/aws-wisdom-aiprompt.json +++ b/schema/aws-wisdom-aiprompt.json @@ -19,7 +19,9 @@ "AIPromptAPIFormat": { "enum": [ "ANTHROPIC_CLAUDE_MESSAGES", - "ANTHROPIC_CLAUDE_TEXT_COMPLETIONS" + "ANTHROPIC_CLAUDE_TEXT_COMPLETIONS", + "MESSAGES", + "TEXT_COMPLETIONS" ], "type": "string" }, diff --git a/schema/aws-wisdom-assistant.json b/schema/aws-wisdom-assistant.json index 203eaf5..7bc50f9 100644 --- a/schema/aws-wisdom-assistant.json +++ b/schema/aws-wisdom-assistant.json @@ -129,6 +129,15 @@ "Name", "Type" ], - "taggable": false, + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "wisdom:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, "typeName": "AWS::Wisdom::Assistant" } diff --git a/schema/aws-wisdom-assistantassociation.json b/schema/aws-wisdom-assistantassociation.json index 84ecafe..c2664fd 100644 --- a/schema/aws-wisdom-assistantassociation.json +++ b/schema/aws-wisdom-assistantassociation.json @@ -141,6 +141,15 @@ "AssistantId" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk", - "taggable": false, + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "wisdom:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, "typeName": "AWS::Wisdom::AssistantAssociation" } diff --git a/schema/aws-workspaces-connectionalias.json b/schema/aws-workspaces-connectionalias.json index 415c713..c7b4c58 100644 --- a/schema/aws-workspaces-connectionalias.json +++ b/schema/aws-workspaces-connectionalias.json @@ -128,5 +128,16 @@ "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/schema/aws-workspaces-workspacespool.json b/schema/aws-workspaces-workspacespool.json index 9c45ccd..1c0c4a6 100644 --- a/schema/aws-workspaces-workspacespool.json +++ b/schema/aws-workspaces-workspacespool.json @@ -90,28 +90,36 @@ "create": { "permissions": [ "workspaces:CreateWorkspacesPool", - "workspaces:DescribeWorkspacesPools" + "workspaces:DescribeWorkspacesPools", + "workspaces:CreateTags" ] }, "delete": { "permissions": [ "workspaces:DescribeWorkspacesPools", - "workspaces:TerminateWorkspacesPool" + "workspaces:TerminateWorkspacesPool", + "workspaces:DeleteTags" ] }, "list": { "permissions": [ - "workspaces:DescribeWorkspacesPools" + "workspaces:DescribeWorkspacesPools", + "workspaces:DescribeTags" ] }, "read": { "permissions": [ - "workspaces:DescribeWorkspacesPools" + "workspaces:DescribeWorkspacesPools", + "workspaces:DescribeTags" ] }, "update": { "permissions": [ - "workspaces:UpdateWorkspacesPool" + "workspaces:UpdateWorkspacesPool", + "workspaces:CreateTags", + "workspaces:DeleteTags", + "workspaces:DescribeWorkspacesPools", + "workspaces:DescribeTags" ] } }, @@ -180,7 +188,12 @@ "Capacity" ], "tagging": { - "cloudFormationSystemTags": false, + "cloudFormationSystemTags": true, + "permissions": [ + "workspaces:CreateTags", + "workspaces:DescribeTags", + "workspaces:DeleteTags" + ], "tagOnCreate": true, "tagProperty": "/properties/Tags", "tagUpdatable": false, diff --git a/schema/aws-workspacesthinclient-environment.json b/schema/aws-workspacesthinclient-environment.json index bdb6c05..844cd7e 100644 --- a/schema/aws-workspacesthinclient-environment.json +++ b/schema/aws-workspacesthinclient-environment.json @@ -149,7 +149,6 @@ "workspaces-web:GetPortal", "workspaces-web:GetUserSettings", "thinclient:UpdateEnvironment", - "thinclient:ListTagsForResource", "thinclient:TagResource", "thinclient:UntagResource", "kms:Decrypt", diff --git a/schema/aws-workspacesweb-usersettings.json b/schema/aws-workspacesweb-usersettings.json index c1208af..95117e5 100644 --- a/schema/aws-workspacesweb-usersettings.json +++ b/schema/aws-workspacesweb-usersettings.json @@ -73,6 +73,19 @@ }, "type": "object" }, + "MaxDisplayResolution": { + "enum": [ + "size4096X2160", + "size3840X2160", + "size3440X1440", + "size2560X1440", + "size1920X1080", + "size1280X720", + "size1024X768", + "size800X600" + ], + "type": "string" + }, "Tag": { "additionalProperties": false, "properties": { @@ -94,6 +107,51 @@ "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", @@ -217,6 +275,9 @@ "minItems": 0, "type": "array" }, + "ToolbarConfiguration": { + "$ref": "#/definitions/ToolbarConfiguration" + }, "UploadAllowed": { "$ref": "#/definitions/EnabledType" }, diff --git a/schema/aws-xray-transactionsearchconfig.json b/schema/aws-xray-transactionsearchconfig.json new file mode 100644 index 0000000..f2ec336 --- /dev/null +++ b/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/arm/helpers.go b/src/arm/helpers.go index 1db2d4b..0e03f4a 100644 --- a/src/arm/helpers.go +++ b/src/arm/helpers.go @@ -188,9 +188,9 @@ func ArrayToString(defaultValue []interface{}) string { for count, value := range defaultValue { if count == len(defaultValue)-1 { - newValue += "\"" + value.(string) + "\"" + newValue += "\"" + EscapeQuote(value.(string)) + "\"" } else { - newValue += "\"" + value.(string) + "\"" + "," + newValue += "\"" + EscapeQuote(value.(string)) + "\"" + "," } } diff --git a/src/see/lookup_test.go b/src/see/lookup_test.go index 2ae2d2e..4a8c25a 100644 --- a/src/see/lookup_test.go +++ b/src/see/lookup_test.go @@ -170,7 +170,7 @@ func TestLookupAll(t *testing.T) { s.WriteString(typeName) s.WriteString("\": \"\",") fmt.Println(s.String()) - t.Errorf("Lookup incomplete") + t.Errorf("Lookup incomplete %s", typeName) } } } diff --git a/src/see/resource_mapping.go b/src/see/resource_mapping.go index 5d7411c..eb63e8b 100644 --- a/src/see/resource_mapping.go +++ b/src/see/resource_mapping.go @@ -69,6 +69,7 @@ var lookupMapping = map[string]string{ "aws::applicationautoscaling::scalabletarget": "aws_appautoscaling_target", "aws::applicationautoscaling::scalingpolicy": "aws_appAutoscaling_policy", "aws::applicationinsights::application": "aws_applicationinsights_application", + "aws::applicationsignals::discovery": none, "aws::applicationsignals::servicelevelobjective": none, "aws::appmesh::gatewayroute": "aws_appmesh_gateway_route", "aws::appmesh::mesh": "aws_appmesh_mesh", @@ -140,6 +141,7 @@ var lookupMapping = map[string]string{ "aws::backup::restoretestingselection": none, "aws::backupgateway::hypervisor": none, "aws::batch::computeenvironment": "aws_batch_compute_environment", + "aws::batch::consumableresource": none, "aws::batch::jobdefinition": "aws_batch_job_definition", "aws::batch::jobqueue": "aws_batch_job_queue", "aws::batch::schedulingpolicy": "aws_batch_scheduling_policy", @@ -147,6 +149,8 @@ var lookupMapping = map[string]string{ "aws::bedrock::agent": "aws_bedrockagent_agent", "aws::bedrock::agentalias": "aws_bedrockagent_agent_alias", "aws::bedrock::applicationinferenceprofile": none, + "aws::bedrock::blueprint": none, + "aws::bedrock::dataautomationproject": none, "aws::bedrock::datasource": "aws_bedrockagent_data_source", "aws::bedrock::flow": none, "aws::bedrock::flowalias": none, @@ -216,6 +220,7 @@ var lookupMapping = map[string]string{ "aws::cloudfront::realtimelogconfig": "aws_cloudfront_realtime_log_config", "aws::cloudfront::responseheaderspolicy": "aws_cloudfront_response_headers_policy", "aws::cloudfront::streamingdistribution": none, + "aws::cloudfront::vpcorigin": "aws_cloudfront_vpc_origin", "aws::cloudtrail::channel": none, "aws::cloudtrail::dashboard": none, "aws::cloudtrail::eventdatastore": "aws_cloudtrail_event_data_store", @@ -280,6 +285,7 @@ var lookupMapping = map[string]string{ "aws::connect::approvedorigin": none, "aws::connect::contactflow": "aws_connect_contact_flow", "aws::connect::contactflowmodule": "aws_connect_contact_flow_module", + "aws::connect::contactflowversion": "aws_connect_contact_flow", "aws::connect::emailaddress": none, "aws::connect::evaluationform": none, "aws::connect::hoursofoperation": "aws_connect_hours_of_operation", @@ -336,6 +342,7 @@ var lookupMapping = map[string]string{ "aws::datasync::locationsmb": "aws_datasync_location_smb", "aws::datasync::storagesystem": none, "aws::datasync::task": "aws_datasync_task", + "aws::datazone::connection": none, "aws::datazone::datasource": none, "aws::datazone::domain": "aws_datazone_domain", "aws::datazone::environment": none, @@ -353,11 +360,13 @@ var lookupMapping = map[string]string{ "aws::deadline::farm": none, "aws::deadline::fleet": none, "aws::deadline::licenseendpoint": none, + "aws::deadline::limit": none, "aws::deadline::meteredproduct": none, "aws::deadline::monitor": none, "aws::deadline::queue": none, "aws::deadline::queueenvironment": none, "aws::deadline::queuefleetassociation": none, + "aws::deadline::queuelimitassociation": none, "aws::deadline::storageprofile": none, "aws::detective::graph": "aws_detective_graph", "aws::detective::memberinvitation": "aws_detective_invitation_accepter", @@ -644,6 +653,7 @@ var lookupMapping = map[string]string{ "aws::guardduty::malwareprotectionplan": "aws_guardduty_malware_protection_plan", "aws::guardduty::master": none, "aws::guardduty::member": "aws_guardduty_member", + "aws::guardduty::publishingdestination": "aws_guardduty_publishing_destination", "aws::guardduty::threatintelset": "aws_guardduty_threatintelset", "aws::healthimaging::datastore": none, "aws::healthlake::fhirdatastore": none, @@ -965,6 +975,7 @@ var lookupMapping = map[string]string{ "aws::omics::workflow": none, "aws::opensearchserverless::accesspolicy": "aws_opensearchserverless_access_policy", "aws::opensearchserverless::collection": "aws_opensearchserverless_collection", + "aws::opensearchserverless::index": none, "aws::opensearchserverless::lifecyclepolicy": "aws_opensearchserverless_lifecycle_policy", "aws::opensearchserverless::securityconfig": "aws_opensearchserverless_security_config", "aws::opensearchserverless::securitypolicy": "aws_opensearchserverless_security_policy", @@ -1042,6 +1053,7 @@ var lookupMapping = map[string]string{ "aws::qldb::ledger": "aws_qldb_ledger", "aws::qldb::stream": "aws_qldb_stream", "aws::quicksight::analysis": "aws_quicksight_analysis", + "aws::quicksight::custompermissions": none, "aws::quicksight::dashboard": "aws_quicksight_dashboard", "aws::quicksight::dataset": "aws_quicksight_data_set", "aws::quicksight::datasource": "aws_quicksight_data_source", @@ -1181,7 +1193,7 @@ var lookupMapping = map[string]string{ "aws::sagemaker::monitoringschedule": "aws_sagemaker_monitoring_schedule", "aws::sagemaker::notebookinstance": "aws_sagemaker_notebook_instance", "aws::sagemaker::notebookinstancelifecycleconfig": "aws_sagemaker_notebook_instance_lifecycle_configuration", - "aws::sagemaker::partnerapp:": none, + "aws::sagemaker::partnerapp": none, "aws::sagemaker::pipeline": "aws_sagemaker_pipeline", "aws::sagemaker::project": "aws_sagemaker_project", "aws::sagemaker::space": none, @@ -1308,6 +1320,7 @@ var lookupMapping = map[string]string{ "aws::transfer::profile": "aws_transfer_profile", "aws::transfer::server": "aws_transfer_server", "aws::transfer::user": "aws_transfer_user", + "aws::transfer::webapp": none, "aws::transfer::workflow": "aws_transfer_workflow", "aws::verifiedpermissions::identitysource": "aws_verifiedpermissions_identity_source", "aws::verifiedpermissions::policy": "aws_verifiedpermissions_policy", @@ -1378,6 +1391,17 @@ var lookupMapping = map[string]string{ "aws::xray::group": "aws_xray_group", "aws::xray::resourcepolicy": none, "aws::xray::samplingrule": "aws_xray_sampling_rule", + "aws::xray::transactionsearchconfig": none, + "aws::cloudfront::connectiongroup": none, + "aws::cloudfront::distributiontenant": none, + "aws::dsql::cluster": none, + "aws::ec2::routeserver": none, + "aws::ec2::routeserverassociation": none, + "aws::ec2::routeserverendpoint": none, + "aws::ec2::routeserverpeer": none, + "aws::ec2::routeserverpropagation": none, + "aws::ecr::registryscanningconfiguration": "aws_ecr_registry_scanning_configuration", + "aws::iotsitewise::dataset": none, // add more "microsoft.aad/domainservices": "azurerm_active_directory_domain_service",