diff --git a/.config/mise.lock b/.config/mise.lock index 73b8dfbe639..ec6ad731fc4 100644 --- a/.config/mise.lock +++ b/.config/mise.lock @@ -91,6 +91,15 @@ url = "https://github.com/pulumi/pulumi/releases/download/v3.190.0/pulumi-v3.190 version = "3.11.8" backend = "core:python" +[[tools.usage]] +version = "2.5.1" +backend = "aqua:jdx/usage" + +[tools.usage.platforms.macos-arm64] +checksum = "sha256:a71c1017e64786a7094909c31c0c5aa1cfb1cec2f3b3bce112e654abd2b4232e" +size = 5027353 +url = "https://github.com/jdx/usage/releases/download/v2.5.1/usage-universal-apple-darwin.tar.gz" + [[tools."vfox-pulumi:pulumi/pulumi-archive"]] version = "0.3.5" backend = "vfox-pulumi:pulumi/pulumi-archive" diff --git a/.config/mise.toml b/.config/mise.toml index 1053d4d426d..ae3dd07a391 100644 --- a/.config/mise.toml +++ b/.config/mise.toml @@ -1,9 +1,31 @@ # WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt # You can create your own root-level mise.toml file to override/augment this. See https://mise.jdx.dev/configuration.html +[vars] +upstream_head = "{{ exec(command='git rev-parse --git-path modules/upstream/HEAD') | trim }}" + [env] _.source = "{{config_root}}/scripts/get-versions.sh" PULUMI_HOME = "{{config_root}}/.pulumi" +PULUMI_CONVERT_EXAMPLES_CACHE_DIR = "{{config_root}}/.pulumi/examples-cache" +PACK = "aws" +ORG = "pulumi" +PROJECT = "github.com/pulumi/pulumi-aws" +PROVIDER_PATH = "provider/v7" +VERSION_PATH = "provider/v7/pkg/version.Version" +CODEGEN = "pulumi-tfgen-aws" +PROVIDER = "pulumi-resource-aws" +PROVIDER_VERSION = "7.0.0-alpha.0+dev" +TESTPARALLELISM = "10" +GOTESTARGS = "" +PULUMI_CONVERT = "1" +PULUMI_MISSING_DOCS_ERROR = "true" +PULUMI_PROVIDER_BUILD_PARALLELISM = "-p 2" +LDFLAGS_STRIP_SYMBOLS = "-s -w" +LDFLAGS_PROJ_VERSION = "-X {{ env.PROJECT }}/{{ env.VERSION_PATH }}={{ env.PROVIDER_VERSION }} -X github.com/hashicorp/terraform-provider-aws/version.ProviderVersion={{ env.PROVIDER_VERSION }}" +LDFLAGS_UPSTREAM_VERSION = "-X github.com/hashicorp/terraform-provider-aws/version.ProviderVersion=v{{ env.PROVIDER_VERSION }}" +LDFLAGS_EXTRAS = "" +LDFLAGS = "{{ env.LDFLAGS_PROJ_VERSION }} {{ env.LDFLAGS_UPSTREAM_VERSION }} {{ env.LDFLAGS_EXTRAS }} {{ env.LDFLAGS_STRIP_SYMBOLS }}" [tools] @@ -32,6 +54,13 @@ golangci-lint = "1.64.8" # See note about about overrides if you need to customi "vfox-pulumi:pulumi/pulumi-random" = "latest" "vfox-pulumi:pulumi/pulumi-std" = "latest" "vfox-pulumi:pulumi/pulumi-converter-terraform" = "latest" +usage = "latest" + +[task_config] +includes = [ + ".config/provider-base.toml", + ".config/mise/tasks", +] [settings] experimental = true # Required for Go binaries (e.g. pulumictl). diff --git a/.config/mise/tasks/mark b/.config/mise/tasks/mark new file mode 100755 index 00000000000..7b43b846617 --- /dev/null +++ b/.config/mise/tasks/mark @@ -0,0 +1,67 @@ +#!/usr/bin/env bash +set -euo pipefail +#MISE description "Run supported :mark tasks for SDK generation/build targets" +#USAGE flag "--list" help="Show supported targets and exit" +#USAGE arg "[task]" help="SDK task(s) to mark complete" var=#true + +list=${usage_list:-false} +tasks=() +if [[ -n "${usage_task:-}" ]]; then + # shellcheck disable=SC2206 # splitting on IFS is safe for task identifiers + tasks=(${usage_task}) +fi + +readonly SUPPORTED=( + generate:sdks:dotnet + generate:sdks:go + generate:sdks:java + generate:sdks:nodejs + generate:sdks:python + build:sdks:dotnet + build:sdks:go + build:sdks:java + build:sdks:nodejs + build:sdks:python +) + +if [[ "$list" == "true" ]]; then + printf '%s\n' "${SUPPORTED[@]}" + exit 0 +fi + +if ((${#tasks[@]} == 0)); then + printf 'mark: provide at least one task (try --help)\n' >&2 + exit 1 +fi + +status=0 +for task in "${tasks[@]}"; do + base="$task" + if [[ "$base" == *":mark" ]]; then + base="${base%:mark}" + target="$task" + else + target="${task}:mark" + fi + + supported=false + for allowed in "${SUPPORTED[@]}"; do + if [[ "$base" == "$allowed" ]]; then + supported=true + break + fi + done + + if [[ "$supported" == false ]]; then + printf 'mark: unsupported target "%s"\n' "$task" >&2 + status=1 + continue + fi + + if ! mise run "$target"; then + printf 'mark: failed to run %s\n' "$target" >&2 + status=1 + fi +done + +exit $status diff --git a/.config/mise/tasks/test b/.config/mise/tasks/test new file mode 100755 index 00000000000..3268a6989d9 --- /dev/null +++ b/.config/mise/tasks/test @@ -0,0 +1,45 @@ +#!/usr/bin/env bash +set -euo pipefail + +#MISE description "Run example integration tests" +#MISE dir="examples" +#MISE env={PATH="{{ [config_root, 'bin'] | join_path }}:{{ env.PATH }}"} +#USAGE flag "--pkg " help="Package pattern to test" default="./..." +#USAGE flag "--run " help="Regex passed to go test -run" +#USAGE flag "--tags " help="Go build tags" default="all" +#USAGE flag "--timeout " help="go test timeout" default="2h" +#USAGE flag "--count " help="go test -count" default="1" +#USAGE flag "--args " help="Additional go test args" + +pkg="${usage_pkg:-./...}" +tags="${usage_tags:-all}" +timeout="${usage_timeout:-2h}" +count="${usage_count:-1}" +run_regex="${usage_run:-}" +extra_args="${usage_args:-}" + +if [[ ! -x "{{ [config_root, 'bin', 'pulumi-resource-aws'] | join_path }}" ]]; then + echo "Expected provider binary at $(realpath {{ [config_root, 'bin', 'pulumi-resource-aws'] | join_path }}), but it is missing." >&2 + echo "Run 'mise run build' or restore the provider artifact before running tests." >&2 + exit 1 +fi + +args=(go test -v -parallel "${TESTPARALLELISM:-10}" -tags "${tags}" -timeout "${timeout}" -count "${count}") + +if [ -n "${GOTESTARGS:-}" ]; then + # shellcheck disable=SC2206 + args+=(${GOTESTARGS}) +fi + +if [ -n "${extra_args}" ]; then + # shellcheck disable=SC2206 + args+=(${extra_args}) +fi + +if [ -n "${run_regex}" ]; then + args+=(-run "${run_regex}") +fi + +args+=("${pkg}") + +"${args[@]}" diff --git a/.config/mise/tasks/test-provider b/.config/mise/tasks/test-provider new file mode 100755 index 00000000000..0f3fcb2becb --- /dev/null +++ b/.config/mise/tasks/test-provider @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +set -euo pipefail + +#MISE description "Run provider unit tests" +#MISE dir="provider" +#MISE env={PATH="{{ [config_root, 'bin'] | join_path }}:{{ env.PATH }}"} +#USAGE flag "--pkg " help="Package pattern to test" default="./..." +#USAGE flag "--run " help="Regex passed to go test -run" +#USAGE flag "--coverpkg " help="Override -coverpkg" default="./...,github.com/hashicorp/terraform-provider-..." +#USAGE flag "--timeout " help="go test timeout" default="15m" +#USAGE flag "--count " help="go test -count" default="1" +#USAGE flag "--args " help="Additional go test args" +#USAGE flag "--no-short" help="Disable -short" + +pkg="${usage_pkg:-./...}" +coverpkg="${usage_coverpkg:-./...,github.com/hashicorp/terraform-provider-...}" +timeout="${usage_timeout:-15m}" +count="${usage_count:-1}" +run_regex="${usage_run:-}" +extra_args="${usage_args:-}" +no_short="${usage_no_short:-false}" + +args=(go test -v) + +if [ "${no_short}" != "true" ]; then + args+=(-short) +fi + +args+=(-coverprofile="coverage.txt" -coverpkg "${coverpkg}" -parallel "${TESTPARALLELISM:-10}" -timeout "${timeout}" -count "${count}") + +if [ -n "${extra_args}" ]; then + # shellcheck disable=SC2206 + args+=(${extra_args}) +fi + +if [ -n "${run_regex}" ]; then + args+=(-run "${run_regex}") +fi + +args+=("${pkg}") + +"${args[@]}" diff --git a/.config/provider-base.toml b/.config/provider-base.toml new file mode 100644 index 00000000000..7f84df27004 --- /dev/null +++ b/.config/provider-base.toml @@ -0,0 +1,550 @@ + +[upstream] +description = "Initialize upstream submodule and apply patches" +run = ''' +./scripts/upstream.sh init +( + cd upstream-tools + yarn install --frozen-lockfile + yarn --silent run apply +) +''' +sources = [ + "patches/**", + "{{ vars.upstream_head }}", +] + +[dirs] +description = "Creates directories" +run = ''' +mkdir -p bin +mkdir -p .pulumi/examples-cache +mkdir -p .make +''' + +["tfgen:build"] +description = "Build the pulumi-tfgen-aws code generator" +depends = ["dirs", "upstream"] +dir = "provider" +run = 'go build ${PULUMI_PROVIDER_BUILD_PARALLELISM} -o ../bin/${CODEGEN} -ldflags "${LDFLAGS_PROJ_VERSION} ${LDFLAGS_EXTRAS}" ${PROJECT}/${PROVIDER_PATH}/cmd/${CODEGEN}' +sources = [ + "provider/*.go", + "provider/go.mod", + "provider/go.sum", + "patches/**", + "{{ vars.upstream_head }}", +] +outputs = ["bin/pulumi-tfgen-aws"] + +["prepare:workspace"] +description = "Prime directories and upstream checkout" +alias = ["prepare"] +depends = ["dirs", "upstream"] +run = "true" + +[schema] +description = "Generate schema.json via tfgen" +depends = ["tfgen:build"] +env.PULUMI_CONVERT = "{{ env.PULUMI_CONVERT | default(value='1') }}" +env.PULUMI_CONVERT_EXAMPLES_CACHE_DIR = "{{ config_root }}/.pulumi/examples-cache" +env.PULUMI_DISABLE_AUTOMATIC_PLUGIN_ACQUISITION = "{{ env.PULUMI_CONVERT | default(value='1') }}" +env.PULUMI_MISSING_DOCS_ERROR = "{{ env.PULUMI_MISSING_DOCS_ERROR | default(value='true') }}" +env.PULUMI_HOME = "{{ config_root }}/.pulumi" +env.VERSION = "{{ env.PROVIDER_VERSION }}" +run = ''' +bin/${CODEGEN} schema --out provider/cmd/${PROVIDER} +cd provider && go generate cmd/${PROVIDER}/main.go +''' +sources = ["bin/pulumi-tfgen-aws"] +outputs = ["provider/cmd/pulumi-resource-aws/schema.json"] + +[tfgen] +description = "Run schema generation with dependencies" +depends = ["schema"] +run = "true" + +["tfgen:no-deps"] +description = "Generate schema without rebuilding upstream" +depends = ["tfgen:build"] +env.PULUMI_CONVERT = "{{ env.PULUMI_CONVERT | default(value='1') }}" +env.PULUMI_CONVERT_EXAMPLES_CACHE_DIR = "{{ config_root }}/.pulumi/examples-cache" +env.PULUMI_DISABLE_AUTOMATIC_PLUGIN_ACQUISITION = "{{ env.PULUMI_CONVERT | default(value='1') }}" +env.PULUMI_MISSING_DOCS_ERROR = "{{ env.PULUMI_MISSING_DOCS_ERROR | default(value='true') }}" +env.PULUMI_HOME = "{{ config_root }}/.pulumi" +env.VERSION = "{{ env.PROVIDER_VERSION }}" +run = ''' +bin/${CODEGEN} schema --out provider/cmd/${PROVIDER} +cd provider && go generate cmd/${PROVIDER}/main.go +''' + +[provider] +description = "Build provider binary" +depends = ["schema", "dirs"] +env.VERSION = "{{ env.PROVIDER_VERSION }}" +run = ''' +./scripts/minimal_schema.sh +mise run provider:build-binary +''' +sources = [ + "provider/**/*.go", + "provider/go.mod", + "provider/go.sum", + "provider/cmd/pulumi-resource-aws/schema.json", +] +outputs = ["bin/pulumi-resource-aws"] + + +["provider:no-deps"] +description = "Build provider binary without validating schema" +depends = ["dirs"] +env.VERSION = "{{ env.PROVIDER_VERSION }}" +run = ''' +./scripts/minimal_schema.sh +mise run provider:build-binary +''' + +["provider:build-binary"] +description = "Compile the provider executable" +dir = "provider" +env.CGO_ENABLED = "0" +run = 'go build ${PULUMI_PROVIDER_BUILD_PARALLELISM} -o ../bin/${PROVIDER} -ldflags "${LDFLAGS}" ${PROJECT}/${PROVIDER_PATH}/cmd/${PROVIDER}' + +["generate:sdks:dotnet"] +description = "Generate .NET SDK" +depends = ["schema"] +depends_post = ["generate:sdks:dotnet:mark"] +env.PULUMI_HOME = "{{ config_root }}/.pulumi" +env.PULUMI_CONVERT = "{{ env.PULUMI_CONVERT | default(value='1') }}" +env.PULUMI_CONVERT_EXAMPLES_CACHE_DIR = "{{ config_root }}/.pulumi/examples-cache" +env.PULUMI_DISABLE_AUTOMATIC_PLUGIN_ACQUISITION = "{{ env.PULUMI_CONVERT | default(value='1') }}" +run = ''' +bin/${CODEGEN} dotnet --out sdk/dotnet/ +printf "module fake_dotnet_module // Exclude this directory from Go tools\n\ngo 1.17\n" > sdk/dotnet/go.mod +printf "%s\n" "${PROVIDER_VERSION}" > sdk/dotnet/version.txt +''' +sources = ["provider/cmd/pulumi-resource-aws/schema.json"] +outputs = [".make/generate_dotnet"] + +["generate:sdks:dotnet:mark"] +hide = true +run = ''' +mkdir -p .make +touch .make/generate_dotnet +''' +outputs = [".make/generate_dotnet"] + +["build:sdks:dotnet"] +description = "Build .NET SDK" +dir = "sdk/dotnet" +depends = ["generate:sdks:dotnet"] +depends_post = ["build:sdks:dotnet:mark"] +run = ''' +dotnet build +mkdir -p ../../.make +''' +sources = ["../../.make/generate_dotnet"] +outputs = ["../../.make/build_dotnet"] + +["build:sdks:dotnet:mark"] +hide = true +run = ''' +mkdir -p .make +touch .make/build_dotnet +''' +outputs = [".make/build_dotnet"] + +["install:sdks:dotnet"] +description = "Install .NET SDK locally" +depends = ["build:sdks:dotnet"] +run = ''' +mkdir -p nuget +find sdk/dotnet/bin -name '*.nupkg' -print -exec cp -p "{}" $(pwd)/nuget \; +if ! dotnet nuget list source | grep -q "$(pwd)/nuget"; then dotnet nuget add source "$(pwd)/nuget" --name "$(pwd)/nuget"; fi +''' +sources = [".make/build_dotnet"] + +["generate:sdks:go"] +description = "Generate Go SDK" +depends = ["schema"] +depends_post = ["generate:sdks:go:mark"] +env.PULUMI_HOME = "{{ config_root }}/.pulumi" +env.PULUMI_CONVERT = "{{ env.PULUMI_CONVERT | default(value='1') }}" +env.PULUMI_CONVERT_EXAMPLES_CACHE_DIR = "{{ config_root }}/.pulumi/examples-cache" +env.PULUMI_DISABLE_AUTOMATIC_PLUGIN_ACQUISITION = "{{ env.PULUMI_CONVERT | default(value='1') }}" +run = ''' +bin/${CODEGEN} go --out sdk/go/ +''' +sources = ["provider/cmd/pulumi-resource-aws/schema.json"] +outputs = [".make/generate_go"] + +["generate:sdks:go:mark"] +hide = true +run = ''' +mkdir -p .make +touch .make/generate_go +''' +outputs = [".make/generate_go"] + +["build:sdks:go"] +description = "Build Go SDK packages" +dir = "sdk" +depends = ["generate:sdks:go"] +depends_post = ["build:sdks:go:mark"] +run = ''' +module_path="$(grep -e "^module" go.mod | cut -d " " -f 2)" && go list "${module_path}/go/..." | xargs -I {} bash -c 'go build {} && go clean -i {}' +mkdir -p ../.make +''' +sources = ["../.make/generate_go"] +outputs = ["../.make/build_go"] + +["build:sdks:go:mark"] +hide = true +run = ''' +mkdir -p .make +touch .make/build_go +''' +outputs = [".make/build_go"] + +["generate:sdks:java"] +description = "Generate Java SDK" +depends = ["schema"] +depends_post = ["generate:sdks:java:mark"] +env.PULUMI_HOME = "{{ config_root }}/.pulumi" +env.PULUMI_CONVERT = "{{ env.PULUMI_CONVERT | default(value='1') }}" +env.PULUMI_CONVERT_EXAMPLES_CACHE_DIR = "{{ config_root }}/.pulumi/examples-cache" +env.PULUMI_DISABLE_AUTOMATIC_PLUGIN_ACQUISITION = "{{ env.PULUMI_CONVERT | default(value='1') }}" +run = ''' +bin/${CODEGEN} java --out sdk/java/ +printf "module fake_java_module // Exclude this directory from Go tools\n\ngo 1.17\n" > sdk/java/go.mod +''' +sources = ["provider/cmd/pulumi-resource-aws/schema.json"] +outputs = [".make/generate_java"] + +["generate:sdks:java:mark"] +hide = true +run = ''' +mkdir -p .make +touch .make/generate_java +''' +outputs = [".make/generate_java"] + +["build:sdks:java"] +description = "Build Java SDK" +dir = "sdk/java" +depends = ["generate:sdks:java"] +depends_post = ["build:sdks:java:mark"] +run = ''' +gradle --console=plain build +gradle --console=plain javadoc +mkdir -p ../../.make +''' +sources = ["../../.make/generate_java"] +outputs = ["../../.make/build_java"] + +["build:sdks:java:mark"] +hide = true +run = ''' +mkdir -p .make +touch .make/build_java +''' +outputs = [".make/build_java"] + +["generate:sdks:nodejs"] +description = "Generate Node.js SDK" +depends = ["schema"] +depends_post = ["generate:sdks:nodejs:mark"] +env.PULUMI_HOME = "{{ config_root }}/.pulumi" +env.PULUMI_CONVERT = "{{ env.PULUMI_CONVERT | default(value='1') }}" +env.PULUMI_CONVERT_EXAMPLES_CACHE_DIR = "{{ config_root }}/.pulumi/examples-cache" +env.PULUMI_DISABLE_AUTOMATIC_PLUGIN_ACQUISITION = "{{ env.PULUMI_CONVERT | default(value='1') }}" +run = ''' +bin/${CODEGEN} nodejs --out sdk/nodejs/ +printf "module fake_nodejs_module // Exclude this directory from Go tools\n\ngo 1.17\n" > sdk/nodejs/go.mod +''' +sources = ["provider/cmd/pulumi-resource-aws/schema.json"] +outputs = [".make/generate_nodejs"] + +["generate:sdks:nodejs:mark"] +hide = true +run = ''' +mkdir -p .make +touch .make/generate_nodejs +''' +outputs = [".make/generate_nodejs"] + +["build:sdks:nodejs"] +description = "Build Node.js SDK" +dir = "sdk/nodejs" +depends = ["generate:sdks:nodejs"] +depends_post = ["build:sdks:nodejs:mark"] +run = ''' +yarn install +yarn run tsc +cp ../../README.md ../../LICENSE package.json yarn.lock ./bin/ +mkdir -p ../../.make +''' +sources = ["../../.make/generate_nodejs"] +outputs = ["../../.make/build_nodejs"] + +["build:sdks:nodejs:mark"] +hide = true +run = ''' +mkdir -p .make +touch .make/build_nodejs +''' +outputs = [".make/build_nodejs"] + +["install:sdks:nodejs"] +description = "Link Node.js SDK locally" +depends = ["build:sdks:nodejs"] +run = ''' +yarn link --cwd sdk/nodejs/bin +''' +sources = [".make/build_nodejs"] + +["install:sdks:go"] +description = "Placeholder for Go SDK installation" +depends = ["build:sdks:go"] +run = "true" + +["install:sdks:java"] +description = "Placeholder for Java SDK installation" +depends = ["build:sdks:java"] +run = "true" + +["generate:sdks:python"] +description = "Generate Python SDK" +depends = ["schema"] +depends_post = ["generate:sdks:python:mark"] +env.PULUMI_HOME = "{{ config_root }}/.pulumi" +env.PULUMI_CONVERT = "{{ env.PULUMI_CONVERT | default(value='1') }}" +env.PULUMI_CONVERT_EXAMPLES_CACHE_DIR = "{{ config_root }}/.pulumi/examples-cache" +env.PULUMI_DISABLE_AUTOMATIC_PLUGIN_ACQUISITION = "{{ env.PULUMI_CONVERT | default(value='1') }}" +run = ''' +bin/${CODEGEN} python --out sdk/python/ +printf "module fake_python_module // Exclude this directory from Go tools\n\ngo 1.17\n" > sdk/python/go.mod +cp README.md sdk/python/ +''' +sources = ["provider/cmd/pulumi-resource-aws/schema.json"] +outputs = [".make/generate_python"] + +["generate:sdks:python:mark"] +hide = true +run = ''' +mkdir -p .make +touch .make/generate_python +''' +outputs = [".make/generate_python"] + +["build:sdks:python"] +description = "Build Python SDK" +depends = ["generate:sdks:python"] +depends_post = ["build:sdks:python:mark"] +run = ''' +rm -rf sdk/python/bin sdk/python.bin +cp -R sdk/python sdk/python.bin +mv sdk/python.bin sdk/python/bin +rm sdk/python/bin/go.mod +python3 -m venv sdk/python/venv +sdk/python/venv/bin/python -m pip install build==1.2.1 +sdk/python/venv/bin/python -m build sdk/python/bin +''' +sources = [".make/generate_python"] +outputs = [".make/build_python"] + +["build:sdks:python:mark"] +hide = true +run = ''' +mkdir -p .make +touch .make/build_python +''' +outputs = [".make/build_python"] + +["install:sdks:python"] +description = "Placeholder for Python SDK installation" +depends = ["build:sdks:python"] +run = "true" +["generate:sdks"] +description = "Generate all SDKs" +depends = ["generate:sdks:*"] +run = "true" + +["build:sdks"] +description = "Build all SDKs" +depends = [ + "build:sdks:dotnet", + "build:sdks:go", + "build:sdks:java", + "build:sdks:nodejs", + "build:sdks:python" +] +run = "true" + +["install:sdks"] +description = "Install all SDKs locally" +depends = [ + "install:sdks:dotnet", + "install:sdks:go", + "install:sdks:java", + "install:sdks:nodejs", + "install:sdks:python" +] +run = "true" + +# Manual skip variants ----------------------------------------------------- +# These entry points are for intentional local overrides. They skip the normal +# dependency chain but still refresh their `.make/*` sentinels via the shared +# mark helpers wired in through `depends_post`. + +["build:sdks:dotnet:skip"] +description = "Build .NET SDK without regenerating sources" +dir = "sdk/dotnet" +depends_post = ["build:sdks:dotnet:mark"] +run = ''' +dotnet build +''' +sources = ["../../.make/generate_dotnet"] +outputs = ["../../.make/build_dotnet"] + +["install:sdks:dotnet:skip"] +description = "Install .NET SDK without rebuilding" +depends = ["build:sdks:dotnet:skip"] +run = ''' +mkdir -p nuget +find sdk/dotnet/bin -name '*.nupkg' -print -exec cp -p "{}" $(pwd)/nuget \; +if ! dotnet nuget list source | grep -q "$(pwd)/nuget"; then dotnet nuget add source "$(pwd)/nuget" --name "$(pwd)/nuget"; fi +''' +sources = [".make/build_dotnet"] + +["build:sdks:go:skip"] +description = "Build Go SDK packages without regenerating sources" +dir = "sdk" +depends_post = ["build:sdks:go:mark"] +run = ''' +module_path="$(grep -e "^module" go.mod | cut -d " " -f 2)" && go list "${module_path}/go/..." | xargs -I {} bash -c 'go build {} && go clean -i {}' +''' +sources = ["../.make/generate_go"] +outputs = ["../.make/build_go"] + +["install:sdks:go:skip"] +description = "Placeholder Go SDK install without rebuild" +depends = ["build:sdks:go:skip"] +run = "true" + +["build:sdks:java:skip"] +description = "Build Java SDK without regenerating sources" +dir = "sdk/java" +depends_post = ["build:sdks:java:mark"] +run = ''' +gradle --console=plain build +gradle --console=plain javadoc +''' +sources = ["../../.make/generate_java"] +outputs = ["../../.make/build_java"] + +["install:sdks:java:skip"] +description = "Placeholder Java SDK install without rebuild" +depends = ["build:sdks:java:skip"] +run = "true" + +["build:sdks:nodejs:skip"] +description = "Build Node.js SDK without regenerating sources" +dir = "sdk/nodejs" +depends_post = ["build:sdks:nodejs:mark"] +run = ''' +yarn install +yarn run tsc +cp ../../README.md ../../LICENSE package.json yarn.lock ./bin/ +''' +sources = ["../../.make/generate_nodejs"] +outputs = ["../../.make/build_nodejs"] + +["install:sdks:nodejs:skip"] +description = "Link Node.js SDK without rebuilding" +depends = ["build:sdks:nodejs:skip"] +run = ''' +yarn link --cwd sdk/nodejs/bin +''' +sources = [".make/build_nodejs"] + + +["build:sdks:python:skip"] +description = "Build Python SDK without regenerating sources" +depends_post = ["build:sdks:python:mark"] +run = ''' +rm -rf sdk/python/bin sdk/python.bin +cp -R sdk/python sdk/python.bin +mv sdk/python.bin sdk/python/bin +rm sdk/python/bin/go.mod +python3 -m venv sdk/python/venv +sdk/python/venv/bin/python -m pip install build==1.2.1 +sdk/python/venv/bin/python -m build sdk/python/bin +''' +sources = [".make/generate_python"] +outputs = [".make/build_python"] + +["install:sdks:python:skip"] +description = "Placeholder Python SDK install without rebuild" +depends = ["build:sdks:python:skip"] +run = "true" + + +[generate] +description = "Generate schema and all SDKs" +depends = ["generate:sdks", "schema"] +run = "true" + +[build] +description = "Build provider and SDKs, install artifacts" +depends = ["provider", "build:sdks", "install:sdks"] +run = "true" + +["lint:provider"] +description = "Run golangci-lint on provider" +depends = ["upstream"] +dir = "provider" +run = "golangci-lint run --path-prefix provider -c ../.golangci.yml" + +["lint:provider:fix"] +description = "Run golangci-lint with --fix on provider" +depends = ["upstream"] +dir = "provider" +run = "golangci-lint run --path-prefix provider -c ../.golangci.yml --fix" + +[clean] +description = "Clean build artifacts" +run = ''' +rm -rf sdk/{dotnet,nodejs,go,python,java} +rm -rf bin/* +rm -rf .make/* +rm -rf .pulumi/examples-cache +if dotnet nuget list source | grep -q "$(pwd)/nuget"; then dotnet nuget remove source "$(pwd)/nuget"; fi +''' + +[help] +description = "Show common mise workflows for this repo" +run = ''' +cat <<'EOF' +Common workflows: + mise run build + mise run test -- --run TestFoo + mise run build:sdks:nodejs:skip + mise run test -- --pkg ./examples/... + +Run `mise tasks` to list available tasks. +Use the `:skip` tasks (e.g. `mise run build:sdks:nodejs:skip`) when you want to reuse existing SDK sources. +Use `mise run --help` to see options for a specific task. +EOF +''' + +["ci:mgmt"] +description = "Regenerate CI config" +run = "go run github.com/pulumi/ci-mgmt/provider-ci@master generate" + +["debug:tfgen"] +description = "Start dlv against tfgen" +depends = ["tfgen:build"] +run = 'dlv --listen=:2345 --headless=true --api-version=2 exec bin/${CODEGEN} -- schema --out provider/cmd/${PROVIDER}' +[demo-simple] +description = "Minimal file task used to verify mise file tasks" +file = ".config/mise/tasks/demo-simple" diff --git a/.github/actions/download-prerequisites/action.yml b/.github/actions/download-prerequisites/action.yml index 5d470402062..895eb71f470 100644 --- a/.github/actions/download-prerequisites/action.yml +++ b/.github/actions/download-prerequisites/action.yml @@ -26,3 +26,8 @@ runs: # Avoid creating directories for each artifact merge-multiple: true path: provider/cmd/pulumi-resource-aws + - name: Download schema.json + uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 + with: + name: schema.json + path: provider/cmd/pulumi-resource-aws diff --git a/.github/actions/upload-prerequisites/action.yml b/.github/actions/upload-prerequisites/action.yml index 560b4eef558..807fe8d5eca 100644 --- a/.github/actions/upload-prerequisites/action.yml +++ b/.github/actions/upload-prerequisites/action.yml @@ -21,3 +21,9 @@ runs: name: schema-embed.json path: provider/cmd/pulumi-resource-aws/schema-embed.json retention-days: 30 + - name: Upload schema.json + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: schema.json + path: provider/cmd/pulumi-resource-aws/schema.json + retention-days: 30 diff --git a/.github/workflows/aws-upstream-tests.yml b/.github/workflows/aws-upstream-tests.yml index 9977e883cde..8ae66e588ff 100644 --- a/.github/workflows/aws-upstream-tests.yml +++ b/.github/workflows/aws-upstream-tests.yml @@ -75,8 +75,8 @@ jobs: id: esc-secrets name: Fetch secrets from ESC uses: pulumi/esc-action@9eb774255b1a4afb7855678ae8d4a77359da0d9b - - name: make upstream - run: make upstream + - name: Prepare upstream workspace + run: mise run upstream - name: Install Go uses: actions/setup-go@v5 with: diff --git a/.github/workflows/build_provider.yml b/.github/workflows/build_provider.yml index f1148e38a8a..e6498d4f8cf 100644 --- a/.github/workflows/build_provider.yml +++ b/.github/workflows/build_provider.yml @@ -95,14 +95,11 @@ jobs: restore-keys: | go-provider-${{ matrix.platform.os }}-${{ matrix.platform.arch }}- - name: Prepare local workspace before restoring previously built - run: make prepare_local_workspace + run: mise run prepare:workspace env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Restore prerequisites uses: ./.github/actions/download-prerequisites - - name: Restore makefile progress - # This mirrors the targets completed in the prerequisites job - run: make --touch provider schema - name: Build provider run: make "provider-${{ matrix.platform.os }}-${{ matrix.platform.arch }}" diff --git a/.github/workflows/build_sdk.yml b/.github/workflows/build_sdk.yml index 47c5743134a..4e203fd3e05 100644 --- a/.github/workflows/build_sdk.yml +++ b/.github/workflows/build_sdk.yml @@ -84,17 +84,15 @@ jobs: sdk/*.sum *.sum - name: Prepare local workspace - run: make prepare_local_workspace + run: mise run prepare:workspace env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Download prerequisites uses: ./.github/actions/download-prerequisites - name: Update path run: echo "${{ github.workspace }}/bin" >> "$GITHUB_PATH" - - name: Restore makefile progress - run: make --touch provider schema - name: Build SDK - run: make build_${{ matrix.language }} + run: mise run build:sdks:${{ matrix.language }} - name: Check worktree clean id: worktreeClean diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml index db61e0bc3d7..2ee57d82a2a 100644 --- a/.github/workflows/copilot-setup-steps.yml +++ b/.github/workflows/copilot-setup-steps.yml @@ -44,4 +44,4 @@ jobs: - name: Prepare local workspace # this runs install_plugins and upstream - run: make prepare_local_workspace + run: mise run prepare:workspace diff --git a/.github/workflows/license.yml b/.github/workflows/license.yml index 1feb3fa974e..abe78308909 100644 --- a/.github/workflows/license.yml +++ b/.github/workflows/license.yml @@ -32,7 +32,7 @@ jobs: cache_key: "mise-{{platform}}-{{file_hash}}" # only saving the cache in the prerequisites job cache_save: false - - run: make prepare_local_workspace + - run: mise run prepare:workspace continue-on-error: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 82b08eabb00..deed56f7b62 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -37,7 +37,7 @@ jobs: git grep -l 'go:embed' -- provider | xargs sed -i 's/go:embed/ goembed/g' - name: prepare workspace continue-on-error: true - run: make prepare_local_workspace + run: mise run prepare:workspace env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: golangci-lint diff --git a/.github/workflows/main-post-build.yml b/.github/workflows/main-post-build.yml index 9de6457c122..93c63c08665 100644 --- a/.github/workflows/main-post-build.yml +++ b/.github/workflows/main-post-build.yml @@ -72,7 +72,7 @@ jobs: - name: Echo Coverage Output Dir run: 'echo "Coverage output directory: ${{ env.COVERAGE_OUTPUT_DIR }}"' - name: Generate Coverage Data - run: PULUMI_MISSING_DOCS_ERROR=true make tfgen + run: PULUMI_MISSING_DOCS_ERROR=true mise run tfgen env: COVERAGE_OUTPUT_DIR: ${{ runner.temp }}/cov - name: Summarize Provider Coverage Results diff --git a/.github/workflows/prerequisites.yml b/.github/workflows/prerequisites.yml index cceed850258..4087632a2cd 100644 --- a/.github/workflows/prerequisites.yml +++ b/.github/workflows/prerequisites.yml @@ -89,15 +89,15 @@ jobs: sdk/*.sum *.sum - name: Prepare local workspace before restoring previously built files - run: make prepare_local_workspace + run: mise run prepare:workspace env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Generate schema - run: make schema + run: mise run schema - name: Build provider binary - run: make provider + run: mise run provider - name: Unit-test provider code - run: make test_provider + run: mise run test-provider env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} OIDC_ROLE_ARN: ${{ steps.esc-secrets.outputs.OIDC_ROLE_ARN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index dd4e8f8465c..2986d0f2cbf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -69,7 +69,7 @@ jobs: # also save this cache since we are using a different mise env. cache_save: true - name: Prepare local workspace - run: make prepare_local_workspace + run: mise run prepare:workspace env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Download bin @@ -94,8 +94,18 @@ jobs: uses: ./.github/actions/download-sdk with: language: java - - name: Restore makefile progress - run: make --touch provider schema build_sdks + - name: Restore task progress + run: mise run mark \ + generate:sdks:dotnet \ + build:sdks:dotnet \ + generate:sdks:go \ + build:sdks:go \ + generate:sdks:java \ + build:sdks:java \ + generate:sdks:nodejs \ + build:sdks:nodejs \ + generate:sdks:python \ + build:sdks:python - name: Update path run: echo "${{ github.workspace }}/bin" >> "$GITHUB_PATH" - name: Install Python deps @@ -116,7 +126,7 @@ jobs: with: environment: logins/pulumi-ci - name: Install prebuilt SDKs - run: make install_sdks + run: mise run install:sdks - name: Generate test shards run: |- cd examples @@ -126,7 +136,7 @@ jobs: --output env >> "$GITHUB_ENV" - name: Run tests run: | - make GOTESTARGS="-test.run ${SHARD_TESTS} ${SHARD_PATHS}" test + GOTESTARGS="-test.run ${SHARD_TESTS} ${SHARD_PATHS}" mise run test env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} OIDC_ROLE_ARN: ${{ steps.esc-secrets.outputs.OIDC_ROLE_ARN }} diff --git a/provider/cmd/pulumi-resource-aws/schema.json b/provider/cmd/pulumi-resource-aws/schema.json index 1bbbe080e3f..878112e57f0 100644 --- a/provider/cmd/pulumi-resource-aws/schema.json +++ b/provider/cmd/pulumi-resource-aws/schema.json @@ -190402,7 +190402,7 @@ } }, "aws:acm/certificate:Certificate": { - "description": "The ACM certificate resource allows requesting and management of certificates\nfrom the Amazon Certificate Manager.\n\nACM certificates can be created in three ways:\nAmazon-issued, where AWS provides the certificate authority and automatically manages renewal;\nimported certificates, issued by another certificate authority;\nand private certificates, issued using an ACM Private Certificate Authority.\n\n## Amazon-Issued Certificates\n\nFor Amazon-issued certificates, this resource deals with requesting certificates and managing their attributes and life-cycle.\nThis resource does not deal with validation of a certificate but can provide inputs\nfor other resources implementing the validation.\nIt does not wait for a certificate to be issued.\nUse a \u003cspan pulumi-lang-nodejs=\"`aws.acm.CertificateValidation`\" pulumi-lang-dotnet=\"`aws.acm.CertificateValidation`\" pulumi-lang-go=\"`acm.CertificateValidation`\" pulumi-lang-python=\"`acm.CertificateValidation`\" pulumi-lang-yaml=\"`aws.acm.CertificateValidation`\" pulumi-lang-java=\"`aws.acm.CertificateValidation`\"\u003e`aws.acm.CertificateValidation`\u003c/span\u003e resource for this.\n\nMost commonly, this resource is used together with \u003cspan pulumi-lang-nodejs=\"`aws.route53.Record`\" pulumi-lang-dotnet=\"`aws.route53.Record`\" pulumi-lang-go=\"`route53.Record`\" pulumi-lang-python=\"`route53.Record`\" pulumi-lang-yaml=\"`aws.route53.Record`\" pulumi-lang-java=\"`aws.route53.Record`\"\u003e`aws.route53.Record`\u003c/span\u003e and\n\u003cspan pulumi-lang-nodejs=\"`aws.acm.CertificateValidation`\" pulumi-lang-dotnet=\"`aws.acm.CertificateValidation`\" pulumi-lang-go=\"`acm.CertificateValidation`\" pulumi-lang-python=\"`acm.CertificateValidation`\" pulumi-lang-yaml=\"`aws.acm.CertificateValidation`\" pulumi-lang-java=\"`aws.acm.CertificateValidation`\"\u003e`aws.acm.CertificateValidation`\u003c/span\u003e to request a DNS validated certificate,\ndeploy the required validation records and wait for validation to complete.\n\nDomain validation through email is also supported but should be avoided as it requires a manual step outside of this provider.\n\n\n## Certificates Imported from Other Certificate Authority\n\nImported certificates can be used to make certificates created with an external certificate authority available for AWS services.\n\nAs they are not managed by AWS, imported certificates are not eligible for automatic renewal.\nNew certificate materials can be supplied to an existing imported certificate to update it in place.\n\n## Private Certificates\n\nPrivate certificates are issued by an ACM Private Certificate Authority, which can be created using the resource type \u003cspan pulumi-lang-nodejs=\"`aws.acmpca.CertificateAuthority`\" pulumi-lang-dotnet=\"`aws.acmpca.CertificateAuthority`\" pulumi-lang-go=\"`acmpca.CertificateAuthority`\" pulumi-lang-python=\"`acmpca.CertificateAuthority`\" pulumi-lang-yaml=\"`aws.acmpca.CertificateAuthority`\" pulumi-lang-java=\"`aws.acmpca.CertificateAuthority`\"\u003e`aws.acmpca.CertificateAuthority`\u003c/span\u003e.\n\nPrivate certificates created using this resource are eligible for managed renewal if they have been exported or associated with another AWS service.\nSee [managed renewal documentation](https://docs.aws.amazon.com/acm/latest/userguide/managed-renewal.html) for more information.\nBy default, a certificate is valid for 395 days and the managed renewal process will start 60 days before expiration.\nTo renew the certificate earlier than 60 days before expiration, configure \u003cspan pulumi-lang-nodejs=\"`earlyRenewalDuration`\" pulumi-lang-dotnet=\"`EarlyRenewalDuration`\" pulumi-lang-go=\"`earlyRenewalDuration`\" pulumi-lang-python=\"`early_renewal_duration`\" pulumi-lang-yaml=\"`earlyRenewalDuration`\" pulumi-lang-java=\"`earlyRenewalDuration`\"\u003e`early_renewal_duration`\u003c/span\u003e.\n\n## Example Usage\n\n### Custom Domain Validation Options\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst cert = new aws.acm.Certificate(\"cert\", {\n domainName: \"testing.example.com\",\n validationMethod: \"EMAIL\",\n validationOptions: [{\n domainName: \"testing.example.com\",\n validationDomain: \"example.com\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncert = aws.acm.Certificate(\"cert\",\n domain_name=\"testing.example.com\",\n validation_method=\"EMAIL\",\n validation_options=[{\n \"domain_name\": \"testing.example.com\",\n \"validation_domain\": \"example.com\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cert = new Aws.Acm.Certificate(\"cert\", new()\n {\n DomainName = \"testing.example.com\",\n ValidationMethod = \"EMAIL\",\n ValidationOptions = new[]\n {\n new Aws.Acm.Inputs.CertificateValidationOptionArgs\n {\n DomainName = \"testing.example.com\",\n ValidationDomain = \"example.com\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/acm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := acm.NewCertificate(ctx, \"cert\", \u0026acm.CertificateArgs{\n\t\t\tDomainName: pulumi.String(\"testing.example.com\"),\n\t\t\tValidationMethod: pulumi.String(\"EMAIL\"),\n\t\t\tValidationOptions: acm.CertificateValidationOptionArray{\n\t\t\t\t\u0026acm.CertificateValidationOptionArgs{\n\t\t\t\t\tDomainName: pulumi.String(\"testing.example.com\"),\n\t\t\t\t\tValidationDomain: pulumi.String(\"example.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.acm.Certificate;\nimport com.pulumi.aws.acm.CertificateArgs;\nimport com.pulumi.aws.acm.inputs.CertificateValidationOptionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cert = new Certificate(\"cert\", CertificateArgs.builder()\n .domainName(\"testing.example.com\")\n .validationMethod(\"EMAIL\")\n .validationOptions(CertificateValidationOptionArgs.builder()\n .domainName(\"testing.example.com\")\n .validationDomain(\"example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cert:\n type: aws:acm:Certificate\n properties:\n domainName: testing.example.com\n validationMethod: EMAIL\n validationOptions:\n - domainName: testing.example.com\n validationDomain: example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Existing Certificate Body Import\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as tls from \"@pulumi/tls\";\n\nconst example = new tls.index.PrivateKey(\"example\", {algorithm: \"RSA\"});\nconst exampleSelfSignedCert = new tls.index.SelfSignedCert(\"example\", {\n keyAlgorithm: \"RSA\",\n privateKeyPem: example.privateKeyPem,\n subject: [{\n commonName: \"example.com\",\n organization: \"ACME Examples, Inc\",\n }],\n validityPeriodHours: 12,\n allowedUses: [\n \"key_encipherment\",\n \"digital_signature\",\n \"server_auth\",\n ],\n});\nconst cert = new aws.acm.Certificate(\"cert\", {\n privateKey: example.privateKeyPem,\n certificateBody: exampleSelfSignedCert.certPem,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_tls as tls\n\nexample = tls.index.PrivateKey(\"example\", algorithm=RSA)\nexample_self_signed_cert = tls.index.SelfSignedCert(\"example\",\n key_algorithm=RSA,\n private_key_pem=example.private_key_pem,\n subject=[{\n commonName: example.com,\n organization: ACME Examples, Inc,\n }],\n validity_period_hours=12,\n allowed_uses=[\n key_encipherment,\n digital_signature,\n server_auth,\n ])\ncert = aws.acm.Certificate(\"cert\",\n private_key=example[\"privateKeyPem\"],\n certificate_body=example_self_signed_cert[\"certPem\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Tls = Pulumi.Tls;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Tls.Index.PrivateKey(\"example\", new()\n {\n Algorithm = \"RSA\",\n });\n\n var exampleSelfSignedCert = new Tls.Index.SelfSignedCert(\"example\", new()\n {\n KeyAlgorithm = \"RSA\",\n PrivateKeyPem = example.PrivateKeyPem,\n Subject = new[]\n {\n \n {\n { \"commonName\", \"example.com\" },\n { \"organization\", \"ACME Examples, Inc\" },\n },\n },\n ValidityPeriodHours = 12,\n AllowedUses = new[]\n {\n \"key_encipherment\",\n \"digital_signature\",\n \"server_auth\",\n },\n });\n\n var cert = new Aws.Acm.Certificate(\"cert\", new()\n {\n PrivateKey = example.PrivateKeyPem,\n CertificateBody = exampleSelfSignedCert.CertPem,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/acm\"\n\t\"github.com/pulumi/pulumi-tls/sdk/v4/go/tls\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := tls.NewPrivateKey(ctx, \"example\", \u0026tls.PrivateKeyArgs{\n\t\t\tAlgorithm: \"RSA\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleSelfSignedCert, err := tls.NewSelfSignedCert(ctx, \"example\", \u0026tls.SelfSignedCertArgs{\n\t\t\tKeyAlgorithm: \"RSA\",\n\t\t\tPrivateKeyPem: example.PrivateKeyPem,\n\t\t\tSubject: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"commonName\": \"example.com\",\n\t\t\t\t\t\"organization\": \"ACME Examples, Inc\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tValidityPeriodHours: 12,\n\t\t\tAllowedUses: []string{\n\t\t\t\t\"key_encipherment\",\n\t\t\t\t\"digital_signature\",\n\t\t\t\t\"server_auth\",\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = acm.NewCertificate(ctx, \"cert\", \u0026acm.CertificateArgs{\n\t\t\tPrivateKey: example.PrivateKeyPem,\n\t\t\tCertificateBody: exampleSelfSignedCert.CertPem,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.tls.privateKey;\nimport com.pulumi.tls.privateKeyArgs;\nimport com.pulumi.tls.selfSignedCert;\nimport com.pulumi.tls.selfSignedCertArgs;\nimport com.pulumi.aws.acm.Certificate;\nimport com.pulumi.aws.acm.CertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new PrivateKey(\"example\", PrivateKeyArgs.builder()\n .algorithm(\"RSA\")\n .build());\n\n var exampleSelfSignedCert = new SelfSignedCert(\"exampleSelfSignedCert\", SelfSignedCertArgs.builder()\n .keyAlgorithm(\"RSA\")\n .privateKeyPem(example.privateKeyPem())\n .subject(List.of(Map.ofEntries(\n Map.entry(\"commonName\", \"example.com\"),\n Map.entry(\"organization\", \"ACME Examples, Inc\")\n )))\n .validityPeriodHours(12)\n .allowedUses(List.of( \n \"key_encipherment\",\n \"digital_signature\",\n \"server_auth\"))\n .build());\n\n var cert = new Certificate(\"cert\", CertificateArgs.builder()\n .privateKey(example.privateKeyPem())\n .certificateBody(exampleSelfSignedCert.certPem())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: tls:privateKey\n properties:\n algorithm: RSA\n exampleSelfSignedCert:\n type: tls:selfSignedCert\n name: example\n properties:\n keyAlgorithm: RSA\n privateKeyPem: ${example.privateKeyPem}\n subject:\n - commonName: example.com\n organization: ACME Examples, Inc\n validityPeriodHours: 12\n allowedUses:\n - key_encipherment\n - digital_signature\n - server_auth\n cert:\n type: aws:acm:Certificate\n properties:\n privateKey: ${example.privateKeyPem}\n certificateBody: ${exampleSelfSignedCert.certPem}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Referencing\u003cspan pulumi-lang-nodejs=\" domainValidationOptions \" pulumi-lang-dotnet=\" DomainValidationOptions \" pulumi-lang-go=\" domainValidationOptions \" pulumi-lang-python=\" domain_validation_options \" pulumi-lang-yaml=\" domainValidationOptions \" pulumi-lang-java=\" domainValidationOptions \"\u003e domain_validation_options \u003c/span\u003eWith\u003cspan pulumi-lang-nodejs=\" forEach \" pulumi-lang-dotnet=\" ForEach \" pulumi-lang-go=\" forEach \" pulumi-lang-python=\" for_each \" pulumi-lang-yaml=\" forEach \" pulumi-lang-java=\" forEach \"\u003e for_each \u003c/span\u003eBased Resources\n\nSee the \u003cspan pulumi-lang-nodejs=\"`aws.acm.CertificateValidation`\" pulumi-lang-dotnet=\"`aws.acm.CertificateValidation`\" pulumi-lang-go=\"`acm.CertificateValidation`\" pulumi-lang-python=\"`acm.CertificateValidation`\" pulumi-lang-yaml=\"`aws.acm.CertificateValidation`\" pulumi-lang-java=\"`aws.acm.CertificateValidation`\"\u003e`aws.acm.CertificateValidation`\u003c/span\u003e resource for a full example of performing DNS validation.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example: aws.route53.Record[] = [];\nfor (const range of Object.entries(.reduce((__obj, dvo) =\u003e ({ ...__obj, [dvo.domainName]: {\n name: dvo.resourceRecordName,\n record: dvo.resourceRecordValue,\n type: dvo.resourceRecordType,\n} }))).map(([k, v]) =\u003e ({key: k, value: v}))) {\n example.push(new aws.route53.Record(`example-${range.key}`, {\n allowOverwrite: true,\n name: range.value.name,\n records: [range.value.record],\n ttl: 60,\n type: aws.route53.RecordType[range.value.type],\n zoneId: exampleAwsRoute53Zone.zoneId,\n }));\n}\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = []\nfor range in [{\"key\": k, \"value\": v} for [k, v] in enumerate({dvo.domain_name: {\n name: dvo.resource_record_name,\n record: dvo.resource_record_value,\n type: dvo.resource_record_type,\n} for dvo in example_aws_acm_certificate.domain_validation_options})]:\n example.append(aws.route53.Record(f\"example-{range['key']}\",\n allow_overwrite=True,\n name=range[\"value\"][\"name\"],\n records=[range[\"value\"][\"record\"]],\n ttl=60,\n type=aws.route53.RecordType(range[\"value\"][\"type\"]),\n zone_id=example_aws_route53_zone[\"zoneId\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new List\u003cAws.Route53.Record\u003e();\n foreach (var range in .ToDictionary(item =\u003e {\n var dvo = item.Value;\n return dvo.DomainName;\n }, item =\u003e {\n var dvo = item.Value;\n return \n {\n { \"name\", dvo.ResourceRecordName },\n { \"record\", dvo.ResourceRecordValue },\n { \"type\", dvo.ResourceRecordType },\n };\n }).Select(pair =\u003e new { pair.Key, pair.Value }))\n {\n example.Add(new Aws.Route53.Record($\"example-{range.Key}\", new()\n {\n AllowOverwrite = true,\n Name = range.Value.Name,\n Records = new[]\n {\n range.Value.Record,\n },\n Ttl = 60,\n Type = System.Enum.Parse\u003cAws.Route53.RecordType\u003e(range.Value.Type),\n ZoneId = exampleAwsRoute53Zone.ZoneId,\n }));\n }\n});\n```\n```yaml\nresources:\n example:\n type: aws:route53:Record\n properties:\n allowOverwrite: true\n name: ${range.value.name}\n records:\n - ${range.value.record}\n ttl: 60\n type: ${range.value.type}\n zoneId: ${exampleAwsRoute53Zone.zoneId}\n options: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n- `arn` (String) ARN of the certificate.\n\nUsing `pulumi import`, import certificates using their ARN. For example:\n\nconsole\n\n% pulumi import aws_acm_certificate.example arn:aws:acm:eu-central-1:123456789012:certificate/7e7a28d2-163f-4b8f-b9cd-822f96c08d6a\n\n", + "description": "The ACM certificate resource allows requesting and management of certificates\nfrom the Amazon Certificate Manager.\n\nACM certificates can be created in three ways:\nAmazon-issued, where AWS provides the certificate authority and automatically manages renewal;\nimported certificates, issued by another certificate authority;\nand private certificates, issued using an ACM Private Certificate Authority.\n\n## Amazon-Issued Certificates\n\nFor Amazon-issued certificates, this resource deals with requesting certificates and managing their attributes and life-cycle.\nThis resource does not deal with validation of a certificate but can provide inputs\nfor other resources implementing the validation.\nIt does not wait for a certificate to be issued.\nUse a \u003cspan pulumi-lang-nodejs=\"`aws.acm.CertificateValidation`\" pulumi-lang-dotnet=\"`aws.acm.CertificateValidation`\" pulumi-lang-go=\"`acm.CertificateValidation`\" pulumi-lang-python=\"`acm.CertificateValidation`\" pulumi-lang-yaml=\"`aws.acm.CertificateValidation`\" pulumi-lang-java=\"`aws.acm.CertificateValidation`\"\u003e`aws.acm.CertificateValidation`\u003c/span\u003e resource for this.\n\nMost commonly, this resource is used together with \u003cspan pulumi-lang-nodejs=\"`aws.route53.Record`\" pulumi-lang-dotnet=\"`aws.route53.Record`\" pulumi-lang-go=\"`route53.Record`\" pulumi-lang-python=\"`route53.Record`\" pulumi-lang-yaml=\"`aws.route53.Record`\" pulumi-lang-java=\"`aws.route53.Record`\"\u003e`aws.route53.Record`\u003c/span\u003e and\n\u003cspan pulumi-lang-nodejs=\"`aws.acm.CertificateValidation`\" pulumi-lang-dotnet=\"`aws.acm.CertificateValidation`\" pulumi-lang-go=\"`acm.CertificateValidation`\" pulumi-lang-python=\"`acm.CertificateValidation`\" pulumi-lang-yaml=\"`aws.acm.CertificateValidation`\" pulumi-lang-java=\"`aws.acm.CertificateValidation`\"\u003e`aws.acm.CertificateValidation`\u003c/span\u003e to request a DNS validated certificate,\ndeploy the required validation records and wait for validation to complete.\n\nDomain validation through email is also supported but should be avoided as it requires a manual step outside of this provider.\n\n\n## Certificates Imported from Other Certificate Authority\n\nImported certificates can be used to make certificates created with an external certificate authority available for AWS services.\n\nAs they are not managed by AWS, imported certificates are not eligible for automatic renewal.\nNew certificate materials can be supplied to an existing imported certificate to update it in place.\n\n## Private Certificates\n\nPrivate certificates are issued by an ACM Private Certificate Authority, which can be created using the resource type \u003cspan pulumi-lang-nodejs=\"`aws.acmpca.CertificateAuthority`\" pulumi-lang-dotnet=\"`aws.acmpca.CertificateAuthority`\" pulumi-lang-go=\"`acmpca.CertificateAuthority`\" pulumi-lang-python=\"`acmpca.CertificateAuthority`\" pulumi-lang-yaml=\"`aws.acmpca.CertificateAuthority`\" pulumi-lang-java=\"`aws.acmpca.CertificateAuthority`\"\u003e`aws.acmpca.CertificateAuthority`\u003c/span\u003e.\n\nPrivate certificates created using this resource are eligible for managed renewal if they have been exported or associated with another AWS service.\nSee [managed renewal documentation](https://docs.aws.amazon.com/acm/latest/userguide/managed-renewal.html) for more information.\nBy default, a certificate is valid for 395 days and the managed renewal process will start 60 days before expiration.\nTo renew the certificate earlier than 60 days before expiration, configure \u003cspan pulumi-lang-nodejs=\"`earlyRenewalDuration`\" pulumi-lang-dotnet=\"`EarlyRenewalDuration`\" pulumi-lang-go=\"`earlyRenewalDuration`\" pulumi-lang-python=\"`early_renewal_duration`\" pulumi-lang-yaml=\"`earlyRenewalDuration`\" pulumi-lang-java=\"`earlyRenewalDuration`\"\u003e`early_renewal_duration`\u003c/span\u003e.\n\n## Example Usage\n\n### Custom Domain Validation Options\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst cert = new aws.acm.Certificate(\"cert\", {\n domainName: \"testing.example.com\",\n validationMethod: \"EMAIL\",\n validationOptions: [{\n domainName: \"testing.example.com\",\n validationDomain: \"example.com\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncert = aws.acm.Certificate(\"cert\",\n domain_name=\"testing.example.com\",\n validation_method=\"EMAIL\",\n validation_options=[{\n \"domain_name\": \"testing.example.com\",\n \"validation_domain\": \"example.com\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cert = new Aws.Acm.Certificate(\"cert\", new()\n {\n DomainName = \"testing.example.com\",\n ValidationMethod = \"EMAIL\",\n ValidationOptions = new[]\n {\n new Aws.Acm.Inputs.CertificateValidationOptionArgs\n {\n DomainName = \"testing.example.com\",\n ValidationDomain = \"example.com\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/acm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := acm.NewCertificate(ctx, \"cert\", \u0026acm.CertificateArgs{\n\t\t\tDomainName: pulumi.String(\"testing.example.com\"),\n\t\t\tValidationMethod: pulumi.String(\"EMAIL\"),\n\t\t\tValidationOptions: acm.CertificateValidationOptionArray{\n\t\t\t\t\u0026acm.CertificateValidationOptionArgs{\n\t\t\t\t\tDomainName: pulumi.String(\"testing.example.com\"),\n\t\t\t\t\tValidationDomain: pulumi.String(\"example.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.acm.Certificate;\nimport com.pulumi.aws.acm.CertificateArgs;\nimport com.pulumi.aws.acm.inputs.CertificateValidationOptionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cert = new Certificate(\"cert\", CertificateArgs.builder()\n .domainName(\"testing.example.com\")\n .validationMethod(\"EMAIL\")\n .validationOptions(CertificateValidationOptionArgs.builder()\n .domainName(\"testing.example.com\")\n .validationDomain(\"example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cert:\n type: aws:acm:Certificate\n properties:\n domainName: testing.example.com\n validationMethod: EMAIL\n validationOptions:\n - domainName: testing.example.com\n validationDomain: example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Existing Certificate Body Import\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n example:\n type: tls:PrivateKey\n properties:\n algorithm: RSA\n exampleSelfSignedCert:\n type: tls:SelfSignedCert\n name: example\n properties:\n keyAlgorithm: RSA\n privateKeyPem: ${example.privateKeyPem}\n subject:\n - commonName: example.com\n organization: ACME Examples, Inc\n validityPeriodHours: 12\n allowedUses:\n - key_encipherment\n - digital_signature\n - server_auth\n cert:\n type: aws:acm:Certificate\n properties:\n privateKey: ${example.privateKeyPem}\n certificateBody: ${exampleSelfSignedCert.certPem}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Referencing\u003cspan pulumi-lang-nodejs=\" domainValidationOptions \" pulumi-lang-dotnet=\" DomainValidationOptions \" pulumi-lang-go=\" domainValidationOptions \" pulumi-lang-python=\" domain_validation_options \" pulumi-lang-yaml=\" domainValidationOptions \" pulumi-lang-java=\" domainValidationOptions \"\u003e domain_validation_options \u003c/span\u003eWith\u003cspan pulumi-lang-nodejs=\" forEach \" pulumi-lang-dotnet=\" ForEach \" pulumi-lang-go=\" forEach \" pulumi-lang-python=\" for_each \" pulumi-lang-yaml=\" forEach \" pulumi-lang-java=\" forEach \"\u003e for_each \u003c/span\u003eBased Resources\n\nSee the \u003cspan pulumi-lang-nodejs=\"`aws.acm.CertificateValidation`\" pulumi-lang-dotnet=\"`aws.acm.CertificateValidation`\" pulumi-lang-go=\"`acm.CertificateValidation`\" pulumi-lang-python=\"`acm.CertificateValidation`\" pulumi-lang-yaml=\"`aws.acm.CertificateValidation`\" pulumi-lang-java=\"`aws.acm.CertificateValidation`\"\u003e`aws.acm.CertificateValidation`\u003c/span\u003e resource for a full example of performing DNS validation.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example: aws.route53.Record[] = [];\nfor (const range of Object.entries(.reduce((__obj, dvo) =\u003e ({ ...__obj, [dvo.domainName]: {\n name: dvo.resourceRecordName,\n record: dvo.resourceRecordValue,\n type: dvo.resourceRecordType,\n} }))).map(([k, v]) =\u003e ({key: k, value: v}))) {\n example.push(new aws.route53.Record(`example-${range.key}`, {\n allowOverwrite: true,\n name: range.value.name,\n records: [range.value.record],\n ttl: 60,\n type: aws.route53.RecordType[range.value.type],\n zoneId: exampleAwsRoute53Zone.zoneId,\n }));\n}\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = []\nfor range in [{\"key\": k, \"value\": v} for [k, v] in enumerate({dvo.domain_name: {\n name: dvo.resource_record_name,\n record: dvo.resource_record_value,\n type: dvo.resource_record_type,\n} for dvo in example_aws_acm_certificate.domain_validation_options})]:\n example.append(aws.route53.Record(f\"example-{range['key']}\",\n allow_overwrite=True,\n name=range[\"value\"][\"name\"],\n records=[range[\"value\"][\"record\"]],\n ttl=60,\n type=aws.route53.RecordType(range[\"value\"][\"type\"]),\n zone_id=example_aws_route53_zone[\"zoneId\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new List\u003cAws.Route53.Record\u003e();\n foreach (var range in .ToDictionary(item =\u003e {\n var dvo = item.Value;\n return dvo.DomainName;\n }, item =\u003e {\n var dvo = item.Value;\n return \n {\n { \"name\", dvo.ResourceRecordName },\n { \"record\", dvo.ResourceRecordValue },\n { \"type\", dvo.ResourceRecordType },\n };\n }).Select(pair =\u003e new { pair.Key, pair.Value }))\n {\n example.Add(new Aws.Route53.Record($\"example-{range.Key}\", new()\n {\n AllowOverwrite = true,\n Name = range.Value.Name,\n Records = new[]\n {\n range.Value.Record,\n },\n Ttl = 60,\n Type = System.Enum.Parse\u003cAws.Route53.RecordType\u003e(range.Value.Type),\n ZoneId = exampleAwsRoute53Zone.ZoneId,\n }));\n }\n});\n```\n```yaml\nresources:\n example:\n type: aws:route53:Record\n properties:\n allowOverwrite: true\n name: ${range.value.name}\n records:\n - ${range.value.record}\n ttl: 60\n type: ${range.value.type}\n zoneId: ${exampleAwsRoute53Zone.zoneId}\n options: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n- `arn` (String) ARN of the certificate.\n\nUsing `pulumi import`, import certificates using their ARN. For example:\n\nconsole\n\n% pulumi import aws_acm_certificate.example arn:aws:acm:eu-central-1:123456789012:certificate/7e7a28d2-163f-4b8f-b9cd-822f96c08d6a\n\n", "properties": { "arn": { "type": "string", @@ -190783,7 +190783,7 @@ } }, "aws:acmpca/certificate:Certificate": { - "description": "Provides a resource to issue a certificate using AWS Certificate Manager Private Certificate Authority (ACM PCA).\n\nCertificates created using \u003cspan pulumi-lang-nodejs=\"`aws.acmpca.Certificate`\" pulumi-lang-dotnet=\"`aws.acmpca.Certificate`\" pulumi-lang-go=\"`acmpca.Certificate`\" pulumi-lang-python=\"`acmpca.Certificate`\" pulumi-lang-yaml=\"`aws.acmpca.Certificate`\" pulumi-lang-java=\"`aws.acmpca.Certificate`\"\u003e`aws.acmpca.Certificate`\u003c/span\u003e are not eligible for automatic renewal,\nand must be replaced instead.\nTo issue a renewable certificate using an ACM PCA, create a \u003cspan pulumi-lang-nodejs=\"`aws.acm.Certificate`\" pulumi-lang-dotnet=\"`aws.acm.Certificate`\" pulumi-lang-go=\"`acm.Certificate`\" pulumi-lang-python=\"`acm.Certificate`\" pulumi-lang-yaml=\"`aws.acm.Certificate`\" pulumi-lang-java=\"`aws.acm.Certificate`\"\u003e`aws.acm.Certificate`\u003c/span\u003e\nwith the parameter \u003cspan pulumi-lang-nodejs=\"`certificateAuthorityArn`\" pulumi-lang-dotnet=\"`CertificateAuthorityArn`\" pulumi-lang-go=\"`certificateAuthorityArn`\" pulumi-lang-python=\"`certificate_authority_arn`\" pulumi-lang-yaml=\"`certificateAuthorityArn`\" pulumi-lang-java=\"`certificateAuthorityArn`\"\u003e`certificate_authority_arn`\u003c/span\u003e.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as tls from \"@pulumi/tls\";\n\nconst exampleCertificateAuthority = new aws.acmpca.CertificateAuthority(\"example\", {\n certificateAuthorityConfiguration: {\n keyAlgorithm: \"RSA_4096\",\n signingAlgorithm: \"SHA512WITHRSA\",\n subject: {\n commonName: \"example.com\",\n },\n },\n permanentDeletionTimeInDays: 7,\n});\nconst key = new tls.index.PrivateKey(\"key\", {algorithm: \"RSA\"});\nconst csr = new tls.index.CertRequest(\"csr\", {\n privateKeyPem: key.privateKeyPem,\n subject: [{\n commonName: \"example\",\n }],\n});\nconst example = new aws.acmpca.Certificate(\"example\", {\n certificateAuthorityArn: exampleCertificateAuthority.arn,\n certificateSigningRequest: csr.certRequestPem,\n signingAlgorithm: \"SHA256WITHRSA\",\n validity: {\n type: \"YEARS\",\n value: \"1\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_tls as tls\n\nexample_certificate_authority = aws.acmpca.CertificateAuthority(\"example\",\n certificate_authority_configuration={\n \"key_algorithm\": \"RSA_4096\",\n \"signing_algorithm\": \"SHA512WITHRSA\",\n \"subject\": {\n \"common_name\": \"example.com\",\n },\n },\n permanent_deletion_time_in_days=7)\nkey = tls.index.PrivateKey(\"key\", algorithm=RSA)\ncsr = tls.index.CertRequest(\"csr\",\n private_key_pem=key.private_key_pem,\n subject=[{\n commonName: example,\n }])\nexample = aws.acmpca.Certificate(\"example\",\n certificate_authority_arn=example_certificate_authority.arn,\n certificate_signing_request=csr[\"certRequestPem\"],\n signing_algorithm=\"SHA256WITHRSA\",\n validity={\n \"type\": \"YEARS\",\n \"value\": \"1\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Tls = Pulumi.Tls;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleCertificateAuthority = new Aws.Acmpca.CertificateAuthority(\"example\", new()\n {\n CertificateAuthorityConfiguration = new Aws.Acmpca.Inputs.CertificateAuthorityCertificateAuthorityConfigurationArgs\n {\n KeyAlgorithm = \"RSA_4096\",\n SigningAlgorithm = \"SHA512WITHRSA\",\n Subject = new Aws.Acmpca.Inputs.CertificateAuthorityCertificateAuthorityConfigurationSubjectArgs\n {\n CommonName = \"example.com\",\n },\n },\n PermanentDeletionTimeInDays = 7,\n });\n\n var key = new Tls.Index.PrivateKey(\"key\", new()\n {\n Algorithm = \"RSA\",\n });\n\n var csr = new Tls.Index.CertRequest(\"csr\", new()\n {\n PrivateKeyPem = key.PrivateKeyPem,\n Subject = new[]\n {\n \n {\n { \"commonName\", \"example\" },\n },\n },\n });\n\n var example = new Aws.Acmpca.Certificate(\"example\", new()\n {\n CertificateAuthorityArn = exampleCertificateAuthority.Arn,\n CertificateSigningRequest = csr.CertRequestPem,\n SigningAlgorithm = \"SHA256WITHRSA\",\n Validity = new Aws.Acmpca.Inputs.CertificateValidityArgs\n {\n Type = \"YEARS\",\n Value = \"1\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/acmpca\"\n\t\"github.com/pulumi/pulumi-tls/sdk/v4/go/tls\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleCertificateAuthority, err := acmpca.NewCertificateAuthority(ctx, \"example\", \u0026acmpca.CertificateAuthorityArgs{\n\t\t\tCertificateAuthorityConfiguration: \u0026acmpca.CertificateAuthorityCertificateAuthorityConfigurationArgs{\n\t\t\t\tKeyAlgorithm: pulumi.String(\"RSA_4096\"),\n\t\t\t\tSigningAlgorithm: pulumi.String(\"SHA512WITHRSA\"),\n\t\t\t\tSubject: \u0026acmpca.CertificateAuthorityCertificateAuthorityConfigurationSubjectArgs{\n\t\t\t\t\tCommonName: pulumi.String(\"example.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPermanentDeletionTimeInDays: pulumi.Int(7),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkey, err := tls.NewPrivateKey(ctx, \"key\", \u0026tls.PrivateKeyArgs{\n\t\t\tAlgorithm: \"RSA\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcsr, err := tls.NewCertRequest(ctx, \"csr\", \u0026tls.CertRequestArgs{\n\t\t\tPrivateKeyPem: key.PrivateKeyPem,\n\t\t\tSubject: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"commonName\": \"example\",\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = acmpca.NewCertificate(ctx, \"example\", \u0026acmpca.CertificateArgs{\n\t\t\tCertificateAuthorityArn: exampleCertificateAuthority.Arn,\n\t\t\tCertificateSigningRequest: csr.CertRequestPem,\n\t\t\tSigningAlgorithm: pulumi.String(\"SHA256WITHRSA\"),\n\t\t\tValidity: \u0026acmpca.CertificateValidityArgs{\n\t\t\t\tType: pulumi.String(\"YEARS\"),\n\t\t\t\tValue: pulumi.String(\"1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.acmpca.CertificateAuthority;\nimport com.pulumi.aws.acmpca.CertificateAuthorityArgs;\nimport com.pulumi.aws.acmpca.inputs.CertificateAuthorityCertificateAuthorityConfigurationArgs;\nimport com.pulumi.aws.acmpca.inputs.CertificateAuthorityCertificateAuthorityConfigurationSubjectArgs;\nimport com.pulumi.tls.privateKey;\nimport com.pulumi.tls.privateKeyArgs;\nimport com.pulumi.tls.certRequest;\nimport com.pulumi.tls.certRequestArgs;\nimport com.pulumi.aws.acmpca.Certificate;\nimport com.pulumi.aws.acmpca.CertificateArgs;\nimport com.pulumi.aws.acmpca.inputs.CertificateValidityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleCertificateAuthority = new CertificateAuthority(\"exampleCertificateAuthority\", CertificateAuthorityArgs.builder()\n .certificateAuthorityConfiguration(CertificateAuthorityCertificateAuthorityConfigurationArgs.builder()\n .keyAlgorithm(\"RSA_4096\")\n .signingAlgorithm(\"SHA512WITHRSA\")\n .subject(CertificateAuthorityCertificateAuthorityConfigurationSubjectArgs.builder()\n .commonName(\"example.com\")\n .build())\n .build())\n .permanentDeletionTimeInDays(7)\n .build());\n\n var key = new PrivateKey(\"key\", PrivateKeyArgs.builder()\n .algorithm(\"RSA\")\n .build());\n\n var csr = new CertRequest(\"csr\", CertRequestArgs.builder()\n .privateKeyPem(key.privateKeyPem())\n .subject(List.of(Map.of(\"commonName\", \"example\")))\n .build());\n\n var example = new Certificate(\"example\", CertificateArgs.builder()\n .certificateAuthorityArn(exampleCertificateAuthority.arn())\n .certificateSigningRequest(csr.certRequestPem())\n .signingAlgorithm(\"SHA256WITHRSA\")\n .validity(CertificateValidityArgs.builder()\n .type(\"YEARS\")\n .value(\"1\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:acmpca:Certificate\n properties:\n certificateAuthorityArn: ${exampleCertificateAuthority.arn}\n certificateSigningRequest: ${csr.certRequestPem}\n signingAlgorithm: SHA256WITHRSA\n validity:\n type: YEARS\n value: 1\n exampleCertificateAuthority:\n type: aws:acmpca:CertificateAuthority\n name: example\n properties:\n certificateAuthorityConfiguration:\n keyAlgorithm: RSA_4096\n signingAlgorithm: SHA512WITHRSA\n subject:\n commonName: example.com\n permanentDeletionTimeInDays: 7\n key:\n type: tls:privateKey\n properties:\n algorithm: RSA\n csr:\n type: tls:certRequest\n properties:\n privateKeyPem: ${key.privateKeyPem}\n subject:\n - commonName: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n- `arn` (String) Amazon Resource Name (ARN) of the ACM PCA certificate.\n\nUsing `pulumi import`, import ACM PCA Certificates using their ARN. For example:\n\nconsole\n\n% pulumi import aws_acmpca_certificate.cert arn:aws:acm-pca:eu-west-1:675225743824:certificate-authority/08319ede-83g9-1400-8f21-c7d12b2b6edb/certificate/a4e9c2aa4bcfab625g1b9136464cd3a\n\n", + "description": "Provides a resource to issue a certificate using AWS Certificate Manager Private Certificate Authority (ACM PCA).\n\nCertificates created using \u003cspan pulumi-lang-nodejs=\"`aws.acmpca.Certificate`\" pulumi-lang-dotnet=\"`aws.acmpca.Certificate`\" pulumi-lang-go=\"`acmpca.Certificate`\" pulumi-lang-python=\"`acmpca.Certificate`\" pulumi-lang-yaml=\"`aws.acmpca.Certificate`\" pulumi-lang-java=\"`aws.acmpca.Certificate`\"\u003e`aws.acmpca.Certificate`\u003c/span\u003e are not eligible for automatic renewal,\nand must be replaced instead.\nTo issue a renewable certificate using an ACM PCA, create a \u003cspan pulumi-lang-nodejs=\"`aws.acm.Certificate`\" pulumi-lang-dotnet=\"`aws.acm.Certificate`\" pulumi-lang-go=\"`acm.Certificate`\" pulumi-lang-python=\"`acm.Certificate`\" pulumi-lang-yaml=\"`aws.acm.Certificate`\" pulumi-lang-java=\"`aws.acm.Certificate`\"\u003e`aws.acm.Certificate`\u003c/span\u003e\nwith the parameter \u003cspan pulumi-lang-nodejs=\"`certificateAuthorityArn`\" pulumi-lang-dotnet=\"`CertificateAuthorityArn`\" pulumi-lang-go=\"`certificateAuthorityArn`\" pulumi-lang-python=\"`certificate_authority_arn`\" pulumi-lang-yaml=\"`certificateAuthorityArn`\" pulumi-lang-java=\"`certificateAuthorityArn`\"\u003e`certificate_authority_arn`\u003c/span\u003e.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n example:\n type: aws:acmpca:Certificate\n properties:\n certificateAuthorityArn: ${exampleCertificateAuthority.arn}\n certificateSigningRequest: ${csr.certRequestPem}\n signingAlgorithm: SHA256WITHRSA\n validity:\n type: YEARS\n value: 1\n exampleCertificateAuthority:\n type: aws:acmpca:CertificateAuthority\n name: example\n properties:\n certificateAuthorityConfiguration:\n keyAlgorithm: RSA_4096\n signingAlgorithm: SHA512WITHRSA\n subject:\n commonName: example.com\n permanentDeletionTimeInDays: 7\n key:\n type: tls:PrivateKey\n properties:\n algorithm: RSA\n csr:\n type: tls:CertRequest\n properties:\n privateKeyPem: ${key.privateKeyPem}\n subject:\n - commonName: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n- `arn` (String) Amazon Resource Name (ARN) of the ACM PCA certificate.\n\nUsing `pulumi import`, import ACM PCA Certificates using their ARN. For example:\n\nconsole\n\n% pulumi import aws_acmpca_certificate.cert arn:aws:acm-pca:eu-west-1:675225743824:certificate-authority/08319ede-83g9-1400-8f21-c7d12b2b6edb/certificate/a4e9c2aa4bcfab625g1b9136464cd3a\n\n", "properties": { "apiPassthrough": { "type": "string", @@ -193828,7 +193828,7 @@ } }, "aws:amplify/app:App": { - "description": "Provides an Amplify App resource, a fullstack serverless app hosted on the [AWS Amplify Console](https://docs.aws.amazon.com/amplify/latest/userguide/welcome.html).\n\n\u003e **Note:** When you create/update an Amplify App from the provider, you may end up with the error \"BadRequestException: You should at least provide one valid token\" because of authentication issues. See the section \"Repository with Tokens\" below.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.amplify.App(\"example\", {\n name: \"example\",\n repository: \"https://github.com/example/app\",\n buildSpec: `version: 0.1\nfrontend:\n phases:\n preBuild:\n commands:\n - yarn install\n build:\n commands:\n - yarn run build\n artifacts:\n baseDirectory: build\n files:\n - '**/*'\n cache:\n paths:\n - node_modules/**/*\n`,\n customRules: [{\n source: \"/\u003c*\u003e\",\n status: \"404\",\n target: \"/index.html\",\n }],\n environmentVariables: {\n ENV: \"test\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.amplify.App(\"example\",\n name=\"example\",\n repository=\"https://github.com/example/app\",\n build_spec=\"\"\"version: 0.1\nfrontend:\n phases:\n preBuild:\n commands:\n - yarn install\n build:\n commands:\n - yarn run build\n artifacts:\n baseDirectory: build\n files:\n - '**/*'\n cache:\n paths:\n - node_modules/**/*\n\"\"\",\n custom_rules=[{\n \"source\": \"/\u003c*\u003e\",\n \"status\": \"404\",\n \"target\": \"/index.html\",\n }],\n environment_variables={\n \"ENV\": \"test\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Amplify.App(\"example\", new()\n {\n Name = \"example\",\n Repository = \"https://github.com/example/app\",\n BuildSpec = @\"version: 0.1\nfrontend:\n phases:\n preBuild:\n commands:\n - yarn install\n build:\n commands:\n - yarn run build\n artifacts:\n baseDirectory: build\n files:\n - '**/*'\n cache:\n paths:\n - node_modules/**/*\n\",\n CustomRules = new[]\n {\n new Aws.Amplify.Inputs.AppCustomRuleArgs\n {\n Source = \"/\u003c*\u003e\",\n Status = \"404\",\n Target = \"/index.html\",\n },\n },\n EnvironmentVariables = \n {\n { \"ENV\", \"test\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/amplify\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := amplify.NewApp(ctx, \"example\", \u0026amplify.AppArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tRepository: pulumi.String(\"https://github.com/example/app\"),\n\t\t\tBuildSpec: pulumi.String(`version: 0.1\nfrontend:\n phases:\n preBuild:\n commands:\n - yarn install\n build:\n commands:\n - yarn run build\n artifacts:\n baseDirectory: build\n files:\n - '**/*'\n cache:\n paths:\n - node_modules/**/*\n`),\n\t\t\tCustomRules: amplify.AppCustomRuleArray{\n\t\t\t\t\u0026amplify.AppCustomRuleArgs{\n\t\t\t\t\tSource: pulumi.String(\"/\u003c*\u003e\"),\n\t\t\t\t\tStatus: pulumi.String(\"404\"),\n\t\t\t\t\tTarget: pulumi.String(\"/index.html\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\"ENV\": pulumi.String(\"test\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.amplify.App;\nimport com.pulumi.aws.amplify.AppArgs;\nimport com.pulumi.aws.amplify.inputs.AppCustomRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new App(\"example\", AppArgs.builder()\n .name(\"example\")\n .repository(\"https://github.com/example/app\")\n .buildSpec(\"\"\"\nversion: 0.1\nfrontend:\n phases:\n preBuild:\n commands:\n - yarn install\n build:\n commands:\n - yarn run build\n artifacts:\n baseDirectory: build\n files:\n - '**/*'\n cache:\n paths:\n - node_modules/**/*\n \"\"\")\n .customRules(AppCustomRuleArgs.builder()\n .source(\"/\u003c*\u003e\")\n .status(\"404\")\n .target(\"/index.html\")\n .build())\n .environmentVariables(Map.of(\"ENV\", \"test\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:amplify:App\n properties:\n name: example\n repository: https://github.com/example/app\n buildSpec: |\n version: 0.1\n frontend:\n phases:\n preBuild:\n commands:\n - yarn install\n build:\n commands:\n - yarn run build\n artifacts:\n baseDirectory: build\n files:\n - '**/*'\n cache:\n paths:\n - node_modules/**/*\n customRules:\n - source: /\u003c*\u003e\n status: '404'\n target: /index.html\n environmentVariables:\n ENV: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Repository with Tokens\n\nIf you create a new Amplify App with the \u003cspan pulumi-lang-nodejs=\"`repository`\" pulumi-lang-dotnet=\"`Repository`\" pulumi-lang-go=\"`repository`\" pulumi-lang-python=\"`repository`\" pulumi-lang-yaml=\"`repository`\" pulumi-lang-java=\"`repository`\"\u003e`repository`\u003c/span\u003e argument, you also need to set \u003cspan pulumi-lang-nodejs=\"`oauthToken`\" pulumi-lang-dotnet=\"`OauthToken`\" pulumi-lang-go=\"`oauthToken`\" pulumi-lang-python=\"`oauth_token`\" pulumi-lang-yaml=\"`oauthToken`\" pulumi-lang-java=\"`oauthToken`\"\u003e`oauth_token`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`accessToken`\" pulumi-lang-dotnet=\"`AccessToken`\" pulumi-lang-go=\"`accessToken`\" pulumi-lang-python=\"`access_token`\" pulumi-lang-yaml=\"`accessToken`\" pulumi-lang-java=\"`accessToken`\"\u003e`access_token`\u003c/span\u003e for authentication. For GitHub, get a [personal access token](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line) and set \u003cspan pulumi-lang-nodejs=\"`accessToken`\" pulumi-lang-dotnet=\"`AccessToken`\" pulumi-lang-go=\"`accessToken`\" pulumi-lang-python=\"`access_token`\" pulumi-lang-yaml=\"`accessToken`\" pulumi-lang-java=\"`accessToken`\"\u003e`access_token`\u003c/span\u003e as follows:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.amplify.App(\"example\", {\n name: \"example\",\n repository: \"https://github.com/example/app\",\n accessToken: \"...\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.amplify.App(\"example\",\n name=\"example\",\n repository=\"https://github.com/example/app\",\n access_token=\"...\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Amplify.App(\"example\", new()\n {\n Name = \"example\",\n Repository = \"https://github.com/example/app\",\n AccessToken = \"...\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/amplify\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := amplify.NewApp(ctx, \"example\", \u0026amplify.AppArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tRepository: pulumi.String(\"https://github.com/example/app\"),\n\t\t\tAccessToken: pulumi.String(\"...\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.amplify.App;\nimport com.pulumi.aws.amplify.AppArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new App(\"example\", AppArgs.builder()\n .name(\"example\")\n .repository(\"https://github.com/example/app\")\n .accessToken(\"...\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:amplify:App\n properties:\n name: example\n repository: https://github.com/example/app\n accessToken: '...'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can omit \u003cspan pulumi-lang-nodejs=\"`accessToken`\" pulumi-lang-dotnet=\"`AccessToken`\" pulumi-lang-go=\"`accessToken`\" pulumi-lang-python=\"`access_token`\" pulumi-lang-yaml=\"`accessToken`\" pulumi-lang-java=\"`accessToken`\"\u003e`access_token`\u003c/span\u003e if you import an existing Amplify App created by the Amplify Console (using OAuth for authentication).\n\n### Auto Branch Creation\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.amplify.App(\"example\", {\n name: \"example\",\n enableAutoBranchCreation: true,\n autoBranchCreationPatterns: [\n \"*\",\n \"*/**\",\n ],\n autoBranchCreationConfig: {\n enableAutoBuild: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.amplify.App(\"example\",\n name=\"example\",\n enable_auto_branch_creation=True,\n auto_branch_creation_patterns=[\n \"*\",\n \"*/**\",\n ],\n auto_branch_creation_config={\n \"enable_auto_build\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Amplify.App(\"example\", new()\n {\n Name = \"example\",\n EnableAutoBranchCreation = true,\n AutoBranchCreationPatterns = new[]\n {\n \"*\",\n \"*/**\",\n },\n AutoBranchCreationConfig = new Aws.Amplify.Inputs.AppAutoBranchCreationConfigArgs\n {\n EnableAutoBuild = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/amplify\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := amplify.NewApp(ctx, \"example\", \u0026amplify.AppArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tEnableAutoBranchCreation: pulumi.Bool(true),\n\t\t\tAutoBranchCreationPatterns: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\tpulumi.String(\"*/**\"),\n\t\t\t},\n\t\t\tAutoBranchCreationConfig: \u0026amplify.AppAutoBranchCreationConfigArgs{\n\t\t\t\tEnableAutoBuild: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.amplify.App;\nimport com.pulumi.aws.amplify.AppArgs;\nimport com.pulumi.aws.amplify.inputs.AppAutoBranchCreationConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new App(\"example\", AppArgs.builder()\n .name(\"example\")\n .enableAutoBranchCreation(true)\n .autoBranchCreationPatterns( \n \"*\",\n \"*/**\")\n .autoBranchCreationConfig(AppAutoBranchCreationConfigArgs.builder()\n .enableAutoBuild(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:amplify:App\n properties:\n name: example\n enableAutoBranchCreation: true # The default patterns added by the Amplify Console.\n autoBranchCreationPatterns:\n - '*'\n - '*/**'\n autoBranchCreationConfig:\n enableAutoBuild: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Basic Authorization\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new aws.amplify.App(\"example\", {\n name: \"example\",\n enableBasicAuth: true,\n basicAuthCredentials: std.base64encode({\n input: \"username1:password1\",\n }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.amplify.App(\"example\",\n name=\"example\",\n enable_basic_auth=True,\n basic_auth_credentials=std.base64encode(input=\"username1:password1\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Amplify.App(\"example\", new()\n {\n Name = \"example\",\n EnableBasicAuth = true,\n BasicAuthCredentials = Std.Base64encode.Invoke(new()\n {\n Input = \"username1:password1\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/amplify\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"username1:password1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = amplify.NewApp(ctx, \"example\", \u0026amplify.AppArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tEnableBasicAuth: pulumi.Bool(true),\n\t\t\tBasicAuthCredentials: pulumi.String(invokeBase64encode.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.amplify.App;\nimport com.pulumi.aws.amplify.AppArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.Base64encodeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new App(\"example\", AppArgs.builder()\n .name(\"example\")\n .enableBasicAuth(true)\n .basicAuthCredentials(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"username1:password1\")\n .build()).result())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:amplify:App\n properties:\n name: example\n enableBasicAuth: true\n basicAuthCredentials:\n fn::invoke:\n function: std:base64encode\n arguments:\n input: username1:password1\n return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Rewrites and Redirects\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.amplify.App(\"example\", {\n name: \"example\",\n customRules: [\n {\n source: \"/api/\u003c*\u003e\",\n status: \"200\",\n target: \"https://api.example.com/api/\u003c*\u003e\",\n },\n {\n source: \"\u003c/^[^.]+$|\\\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/\u003e\",\n status: \"200\",\n target: \"/index.html\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.amplify.App(\"example\",\n name=\"example\",\n custom_rules=[\n {\n \"source\": \"/api/\u003c*\u003e\",\n \"status\": \"200\",\n \"target\": \"https://api.example.com/api/\u003c*\u003e\",\n },\n {\n \"source\": \"\u003c/^[^.]+$|\\\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/\u003e\",\n \"status\": \"200\",\n \"target\": \"/index.html\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Amplify.App(\"example\", new()\n {\n Name = \"example\",\n CustomRules = new[]\n {\n new Aws.Amplify.Inputs.AppCustomRuleArgs\n {\n Source = \"/api/\u003c*\u003e\",\n Status = \"200\",\n Target = \"https://api.example.com/api/\u003c*\u003e\",\n },\n new Aws.Amplify.Inputs.AppCustomRuleArgs\n {\n Source = \"\u003c/^[^.]+$|\\\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/\u003e\",\n Status = \"200\",\n Target = \"/index.html\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/amplify\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := amplify.NewApp(ctx, \"example\", \u0026amplify.AppArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tCustomRules: amplify.AppCustomRuleArray{\n\t\t\t\t\u0026amplify.AppCustomRuleArgs{\n\t\t\t\t\tSource: pulumi.String(\"/api/\u003c*\u003e\"),\n\t\t\t\t\tStatus: pulumi.String(\"200\"),\n\t\t\t\t\tTarget: pulumi.String(\"https://api.example.com/api/\u003c*\u003e\"),\n\t\t\t\t},\n\t\t\t\t\u0026amplify.AppCustomRuleArgs{\n\t\t\t\t\tSource: pulumi.String(\"\u003c/^[^.]+$|\\\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/\u003e\"),\n\t\t\t\t\tStatus: pulumi.String(\"200\"),\n\t\t\t\t\tTarget: pulumi.String(\"/index.html\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.amplify.App;\nimport com.pulumi.aws.amplify.AppArgs;\nimport com.pulumi.aws.amplify.inputs.AppCustomRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new App(\"example\", AppArgs.builder()\n .name(\"example\")\n .customRules( \n AppCustomRuleArgs.builder()\n .source(\"/api/\u003c*\u003e\")\n .status(\"200\")\n .target(\"https://api.example.com/api/\u003c*\u003e\")\n .build(),\n AppCustomRuleArgs.builder()\n .source(\"\u003c/^[^.]+$|\\\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/\u003e\")\n .status(\"200\")\n .target(\"/index.html\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:amplify:App\n properties:\n name: example\n customRules:\n - source: /api/\u003c*\u003e\n status: '200'\n target: https://api.example.com/api/\u003c*\u003e\n - source: \u003c/^[^.]+$|\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/\u003e\n status: '200'\n target: /index.html\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Custom Image\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.amplify.App(\"example\", {\n name: \"example\",\n environmentVariables: {\n _CUSTOM_IMAGE: \"node:16\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.amplify.App(\"example\",\n name=\"example\",\n environment_variables={\n \"_CUSTOM_IMAGE\": \"node:16\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Amplify.App(\"example\", new()\n {\n Name = \"example\",\n EnvironmentVariables = \n {\n { \"_CUSTOM_IMAGE\", \"node:16\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/amplify\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := amplify.NewApp(ctx, \"example\", \u0026amplify.AppArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\"_CUSTOM_IMAGE\": pulumi.String(\"node:16\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.amplify.App;\nimport com.pulumi.aws.amplify.AppArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new App(\"example\", AppArgs.builder()\n .name(\"example\")\n .environmentVariables(Map.of(\"_CUSTOM_IMAGE\", \"node:16\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:amplify:App\n properties:\n name: example\n environmentVariables:\n _CUSTOM_IMAGE: node:16\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Custom Headers\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.amplify.App(\"example\", {\n name: \"example\",\n customHeaders: `customHeaders:\n - pattern: '**'\n headers:\n - key: 'Strict-Transport-Security'\n value: 'max-age=31536000; includeSubDomains'\n - key: 'X-Frame-Options'\n value: 'SAMEORIGIN'\n - key: 'X-XSS-Protection'\n value: '1; mode=block'\n - key: 'X-Content-Type-Options'\n value: 'nosniff'\n - key: 'Content-Security-Policy'\n value: \"default-src 'self'\"\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.amplify.App(\"example\",\n name=\"example\",\n custom_headers=\"\"\"customHeaders:\n - pattern: '**'\n headers:\n - key: 'Strict-Transport-Security'\n value: 'max-age=31536000; includeSubDomains'\n - key: 'X-Frame-Options'\n value: 'SAMEORIGIN'\n - key: 'X-XSS-Protection'\n value: '1; mode=block'\n - key: 'X-Content-Type-Options'\n value: 'nosniff'\n - key: 'Content-Security-Policy'\n value: \"default-src 'self'\"\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Amplify.App(\"example\", new()\n {\n Name = \"example\",\n CustomHeaders = @\"customHeaders:\n - pattern: '**'\n headers:\n - key: 'Strict-Transport-Security'\n value: 'max-age=31536000; includeSubDomains'\n - key: 'X-Frame-Options'\n value: 'SAMEORIGIN'\n - key: 'X-XSS-Protection'\n value: '1; mode=block'\n - key: 'X-Content-Type-Options'\n value: 'nosniff'\n - key: 'Content-Security-Policy'\n value: \"\"default-src 'self'\"\"\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/amplify\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := amplify.NewApp(ctx, \"example\", \u0026amplify.AppArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tCustomHeaders: pulumi.String(`customHeaders:\n - pattern: '**'\n headers:\n - key: 'Strict-Transport-Security'\n value: 'max-age=31536000; includeSubDomains'\n - key: 'X-Frame-Options'\n value: 'SAMEORIGIN'\n - key: 'X-XSS-Protection'\n value: '1; mode=block'\n - key: 'X-Content-Type-Options'\n value: 'nosniff'\n - key: 'Content-Security-Policy'\n value: \"default-src 'self'\"\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.amplify.App;\nimport com.pulumi.aws.amplify.AppArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new App(\"example\", AppArgs.builder()\n .name(\"example\")\n .customHeaders(\"\"\"\ncustomHeaders:\n - pattern: '**'\n headers:\n - key: 'Strict-Transport-Security'\n value: 'max-age=31536000; includeSubDomains'\n - key: 'X-Frame-Options'\n value: 'SAMEORIGIN'\n - key: 'X-XSS-Protection'\n value: '1; mode=block'\n - key: 'X-Content-Type-Options'\n value: 'nosniff'\n - key: 'Content-Security-Policy'\n value: \"default-src 'self'\"\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:amplify:App\n properties:\n name: example\n customHeaders: |\n customHeaders:\n - pattern: '**'\n headers:\n - key: 'Strict-Transport-Security'\n value: 'max-age=31536000; includeSubDomains'\n - key: 'X-Frame-Options'\n value: 'SAMEORIGIN'\n - key: 'X-XSS-Protection'\n value: '1; mode=block'\n - key: 'X-Content-Type-Options'\n value: 'nosniff'\n - key: 'Content-Security-Policy'\n value: \"default-src 'self'\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Job Config\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.amplify.App(\"example\", {\n name: \"example\",\n jobConfig: {\n buildComputeType: \"STANDARD_8GB\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.amplify.App(\"example\",\n name=\"example\",\n job_config={\n \"build_compute_type\": \"STANDARD_8GB\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Amplify.App(\"example\", new()\n {\n Name = \"example\",\n JobConfig = new Aws.Amplify.Inputs.AppJobConfigArgs\n {\n BuildComputeType = \"STANDARD_8GB\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/amplify\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := amplify.NewApp(ctx, \"example\", \u0026amplify.AppArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tJobConfig: \u0026amplify.AppJobConfigArgs{\n\t\t\t\tBuildComputeType: pulumi.String(\"STANDARD_8GB\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.amplify.App;\nimport com.pulumi.aws.amplify.AppArgs;\nimport com.pulumi.aws.amplify.inputs.AppJobConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new App(\"example\", AppArgs.builder()\n .name(\"example\")\n .jobConfig(AppJobConfigArgs.builder()\n .buildComputeType(\"STANDARD_8GB\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:amplify:App\n properties:\n name: example\n jobConfig:\n buildComputeType: STANDARD_8GB\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Amplify App using Amplify App ID (appId). For example:\n\n```sh\n$ pulumi import aws:amplify/app:App example d2ypk4k47z8u6\n```\nApp ID can be obtained from App ARN (e.g., `arn:aws:amplify:us-east-1:12345678:apps/d2ypk4k47z8u6`).\n\n", + "description": "Provides an Amplify App resource, a fullstack serverless app hosted on the [AWS Amplify Console](https://docs.aws.amazon.com/amplify/latest/userguide/welcome.html).\n\n\u003e **Note:** When you create/update an Amplify App from the provider, you may end up with the error \"BadRequestException: You should at least provide one valid token\" because of authentication issues. See the section \"Repository with Tokens\" below.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.amplify.App(\"example\", {\n name: \"example\",\n repository: \"https://github.com/example/app\",\n buildSpec: `version: 0.1\nfrontend:\n phases:\n preBuild:\n commands:\n - yarn install\n build:\n commands:\n - yarn run build\n artifacts:\n baseDirectory: build\n files:\n - '**/*'\n cache:\n paths:\n - node_modules/**/*\n`,\n customRules: [{\n source: \"/\u003c*\u003e\",\n status: \"404\",\n target: \"/index.html\",\n }],\n environmentVariables: {\n ENV: \"test\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.amplify.App(\"example\",\n name=\"example\",\n repository=\"https://github.com/example/app\",\n build_spec=\"\"\"version: 0.1\nfrontend:\n phases:\n preBuild:\n commands:\n - yarn install\n build:\n commands:\n - yarn run build\n artifacts:\n baseDirectory: build\n files:\n - '**/*'\n cache:\n paths:\n - node_modules/**/*\n\"\"\",\n custom_rules=[{\n \"source\": \"/\u003c*\u003e\",\n \"status\": \"404\",\n \"target\": \"/index.html\",\n }],\n environment_variables={\n \"ENV\": \"test\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Amplify.App(\"example\", new()\n {\n Name = \"example\",\n Repository = \"https://github.com/example/app\",\n BuildSpec = @\"version: 0.1\nfrontend:\n phases:\n preBuild:\n commands:\n - yarn install\n build:\n commands:\n - yarn run build\n artifacts:\n baseDirectory: build\n files:\n - '**/*'\n cache:\n paths:\n - node_modules/**/*\n\",\n CustomRules = new[]\n {\n new Aws.Amplify.Inputs.AppCustomRuleArgs\n {\n Source = \"/\u003c*\u003e\",\n Status = \"404\",\n Target = \"/index.html\",\n },\n },\n EnvironmentVariables = \n {\n { \"ENV\", \"test\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/amplify\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := amplify.NewApp(ctx, \"example\", \u0026amplify.AppArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tRepository: pulumi.String(\"https://github.com/example/app\"),\n\t\t\tBuildSpec: pulumi.String(`version: 0.1\nfrontend:\n phases:\n preBuild:\n commands:\n - yarn install\n build:\n commands:\n - yarn run build\n artifacts:\n baseDirectory: build\n files:\n - '**/*'\n cache:\n paths:\n - node_modules/**/*\n`),\n\t\t\tCustomRules: amplify.AppCustomRuleArray{\n\t\t\t\t\u0026amplify.AppCustomRuleArgs{\n\t\t\t\t\tSource: pulumi.String(\"/\u003c*\u003e\"),\n\t\t\t\t\tStatus: pulumi.String(\"404\"),\n\t\t\t\t\tTarget: pulumi.String(\"/index.html\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\"ENV\": pulumi.String(\"test\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.amplify.App;\nimport com.pulumi.aws.amplify.AppArgs;\nimport com.pulumi.aws.amplify.inputs.AppCustomRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new App(\"example\", AppArgs.builder()\n .name(\"example\")\n .repository(\"https://github.com/example/app\")\n .buildSpec(\"\"\"\nversion: 0.1\nfrontend:\n phases:\n preBuild:\n commands:\n - yarn install\n build:\n commands:\n - yarn run build\n artifacts:\n baseDirectory: build\n files:\n - '**/*'\n cache:\n paths:\n - node_modules/**/*\n \"\"\")\n .customRules(AppCustomRuleArgs.builder()\n .source(\"/\u003c*\u003e\")\n .status(\"404\")\n .target(\"/index.html\")\n .build())\n .environmentVariables(Map.of(\"ENV\", \"test\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:amplify:App\n properties:\n name: example\n repository: https://github.com/example/app\n buildSpec: |\n version: 0.1\n frontend:\n phases:\n preBuild:\n commands:\n - yarn install\n build:\n commands:\n - yarn run build\n artifacts:\n baseDirectory: build\n files:\n - '**/*'\n cache:\n paths:\n - node_modules/**/*\n customRules:\n - source: /\u003c*\u003e\n status: '404'\n target: /index.html\n environmentVariables:\n ENV: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Repository with Tokens\n\nIf you create a new Amplify App with the \u003cspan pulumi-lang-nodejs=\"`repository`\" pulumi-lang-dotnet=\"`Repository`\" pulumi-lang-go=\"`repository`\" pulumi-lang-python=\"`repository`\" pulumi-lang-yaml=\"`repository`\" pulumi-lang-java=\"`repository`\"\u003e`repository`\u003c/span\u003e argument, you also need to set \u003cspan pulumi-lang-nodejs=\"`oauthToken`\" pulumi-lang-dotnet=\"`OauthToken`\" pulumi-lang-go=\"`oauthToken`\" pulumi-lang-python=\"`oauth_token`\" pulumi-lang-yaml=\"`oauthToken`\" pulumi-lang-java=\"`oauthToken`\"\u003e`oauth_token`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`accessToken`\" pulumi-lang-dotnet=\"`AccessToken`\" pulumi-lang-go=\"`accessToken`\" pulumi-lang-python=\"`access_token`\" pulumi-lang-yaml=\"`accessToken`\" pulumi-lang-java=\"`accessToken`\"\u003e`access_token`\u003c/span\u003e for authentication. For GitHub, get a [personal access token](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line) and set \u003cspan pulumi-lang-nodejs=\"`accessToken`\" pulumi-lang-dotnet=\"`AccessToken`\" pulumi-lang-go=\"`accessToken`\" pulumi-lang-python=\"`access_token`\" pulumi-lang-yaml=\"`accessToken`\" pulumi-lang-java=\"`accessToken`\"\u003e`access_token`\u003c/span\u003e as follows:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.amplify.App(\"example\", {\n name: \"example\",\n repository: \"https://github.com/example/app\",\n accessToken: \"...\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.amplify.App(\"example\",\n name=\"example\",\n repository=\"https://github.com/example/app\",\n access_token=\"...\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Amplify.App(\"example\", new()\n {\n Name = \"example\",\n Repository = \"https://github.com/example/app\",\n AccessToken = \"...\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/amplify\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := amplify.NewApp(ctx, \"example\", \u0026amplify.AppArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tRepository: pulumi.String(\"https://github.com/example/app\"),\n\t\t\tAccessToken: pulumi.String(\"...\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.amplify.App;\nimport com.pulumi.aws.amplify.AppArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new App(\"example\", AppArgs.builder()\n .name(\"example\")\n .repository(\"https://github.com/example/app\")\n .accessToken(\"...\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:amplify:App\n properties:\n name: example\n repository: https://github.com/example/app\n accessToken: '...'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can omit \u003cspan pulumi-lang-nodejs=\"`accessToken`\" pulumi-lang-dotnet=\"`AccessToken`\" pulumi-lang-go=\"`accessToken`\" pulumi-lang-python=\"`access_token`\" pulumi-lang-yaml=\"`accessToken`\" pulumi-lang-java=\"`accessToken`\"\u003e`access_token`\u003c/span\u003e if you import an existing Amplify App created by the Amplify Console (using OAuth for authentication).\n\n### Auto Branch Creation\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.amplify.App(\"example\", {\n name: \"example\",\n enableAutoBranchCreation: true,\n autoBranchCreationPatterns: [\n \"*\",\n \"*/**\",\n ],\n autoBranchCreationConfig: {\n enableAutoBuild: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.amplify.App(\"example\",\n name=\"example\",\n enable_auto_branch_creation=True,\n auto_branch_creation_patterns=[\n \"*\",\n \"*/**\",\n ],\n auto_branch_creation_config={\n \"enable_auto_build\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Amplify.App(\"example\", new()\n {\n Name = \"example\",\n EnableAutoBranchCreation = true,\n AutoBranchCreationPatterns = new[]\n {\n \"*\",\n \"*/**\",\n },\n AutoBranchCreationConfig = new Aws.Amplify.Inputs.AppAutoBranchCreationConfigArgs\n {\n EnableAutoBuild = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/amplify\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := amplify.NewApp(ctx, \"example\", \u0026amplify.AppArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tEnableAutoBranchCreation: pulumi.Bool(true),\n\t\t\tAutoBranchCreationPatterns: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\tpulumi.String(\"*/**\"),\n\t\t\t},\n\t\t\tAutoBranchCreationConfig: \u0026amplify.AppAutoBranchCreationConfigArgs{\n\t\t\t\tEnableAutoBuild: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.amplify.App;\nimport com.pulumi.aws.amplify.AppArgs;\nimport com.pulumi.aws.amplify.inputs.AppAutoBranchCreationConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new App(\"example\", AppArgs.builder()\n .name(\"example\")\n .enableAutoBranchCreation(true)\n .autoBranchCreationPatterns( \n \"*\",\n \"*/**\")\n .autoBranchCreationConfig(AppAutoBranchCreationConfigArgs.builder()\n .enableAutoBuild(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:amplify:App\n properties:\n name: example\n enableAutoBranchCreation: true # The default patterns added by the Amplify Console.\n autoBranchCreationPatterns:\n - '*'\n - '*/**'\n autoBranchCreationConfig:\n enableAutoBuild: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Basic Authorization\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new aws.amplify.App(\"example\", {\n name: \"example\",\n enableBasicAuth: true,\n basicAuthCredentials: std.base64encode({\n input: \"username1:password1\",\n }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.amplify.App(\"example\",\n name=\"example\",\n enable_basic_auth=True,\n basic_auth_credentials=std.base64encode(input=\"username1:password1\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Amplify.App(\"example\", new()\n {\n Name = \"example\",\n EnableBasicAuth = true,\n BasicAuthCredentials = Std.Base64encode.Invoke(new()\n {\n Input = \"username1:password1\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/amplify\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"username1:password1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = amplify.NewApp(ctx, \"example\", \u0026amplify.AppArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tEnableBasicAuth: pulumi.Bool(true),\n\t\t\tBasicAuthCredentials: pulumi.String(invokeBase64encode.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.amplify.App;\nimport com.pulumi.aws.amplify.AppArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.Base64encodeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new App(\"example\", AppArgs.builder()\n .name(\"example\")\n .enableBasicAuth(true)\n .basicAuthCredentials(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"username1:password1\")\n .build()).result())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:amplify:App\n properties:\n name: example\n enableBasicAuth: true\n basicAuthCredentials:\n fn::invoke:\n function: std:base64encode\n arguments:\n input: username1:password1\n return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Rewrites and Redirects\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.amplify.App(\"example\", {\n name: \"example\",\n customRules: [\n {\n source: \"/api/\u003c*\u003e\",\n status: \"200\",\n target: \"https://api.example.com/api/\u003c*\u003e\",\n },\n {\n source: \"\u003c/^[^.]+$|\\\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/\u003e\",\n status: \"200\",\n target: \"/index.html\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.amplify.App(\"example\",\n name=\"example\",\n custom_rules=[\n {\n \"source\": \"/api/\u003c*\u003e\",\n \"status\": \"200\",\n \"target\": \"https://api.example.com/api/\u003c*\u003e\",\n },\n {\n \"source\": \"\u003c/^[^.]+$|\\\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/\u003e\",\n \"status\": \"200\",\n \"target\": \"/index.html\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Amplify.App(\"example\", new()\n {\n Name = \"example\",\n CustomRules = new[]\n {\n new Aws.Amplify.Inputs.AppCustomRuleArgs\n {\n Source = \"/api/\u003c*\u003e\",\n Status = \"200\",\n Target = \"https://api.example.com/api/\u003c*\u003e\",\n },\n new Aws.Amplify.Inputs.AppCustomRuleArgs\n {\n Source = \"\u003c/^[^.]+$|\\\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/\u003e\",\n Status = \"200\",\n Target = \"/index.html\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/amplify\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := amplify.NewApp(ctx, \"example\", \u0026amplify.AppArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tCustomRules: amplify.AppCustomRuleArray{\n\t\t\t\t\u0026amplify.AppCustomRuleArgs{\n\t\t\t\t\tSource: pulumi.String(\"/api/\u003c*\u003e\"),\n\t\t\t\t\tStatus: pulumi.String(\"200\"),\n\t\t\t\t\tTarget: pulumi.String(\"https://api.example.com/api/\u003c*\u003e\"),\n\t\t\t\t},\n\t\t\t\t\u0026amplify.AppCustomRuleArgs{\n\t\t\t\t\tSource: pulumi.String(\"\u003c/^[^.]+$|\\\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/\u003e\"),\n\t\t\t\t\tStatus: pulumi.String(\"200\"),\n\t\t\t\t\tTarget: pulumi.String(\"/index.html\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.amplify.App;\nimport com.pulumi.aws.amplify.AppArgs;\nimport com.pulumi.aws.amplify.inputs.AppCustomRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new App(\"example\", AppArgs.builder()\n .name(\"example\")\n .customRules( \n AppCustomRuleArgs.builder()\n .source(\"/api/\u003c*\u003e\")\n .status(\"200\")\n .target(\"https://api.example.com/api/\u003c*\u003e\")\n .build(),\n AppCustomRuleArgs.builder()\n .source(\"\u003c/^[^.]+$|\\\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/\u003e\")\n .status(\"200\")\n .target(\"/index.html\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:amplify:App\n properties:\n name: example\n customRules:\n - source: /api/\u003c*\u003e\n status: '200'\n target: https://api.example.com/api/\u003c*\u003e\n - source: \u003c/^[^.]+$|\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/\u003e\n status: '200'\n target: /index.html\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Custom Image\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.amplify.App(\"example\", {\n name: \"example\",\n environmentVariables: {\n _CUSTOM_IMAGE: \"node:16\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.amplify.App(\"example\",\n name=\"example\",\n environment_variables={\n \"_CUSTOM_IMAGE\": \"node:16\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Amplify.App(\"example\", new()\n {\n Name = \"example\",\n EnvironmentVariables = \n {\n { \"_CUSTOM_IMAGE\", \"node:16\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/amplify\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := amplify.NewApp(ctx, \"example\", \u0026amplify.AppArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\"_CUSTOM_IMAGE\": pulumi.String(\"node:16\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.amplify.App;\nimport com.pulumi.aws.amplify.AppArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new App(\"example\", AppArgs.builder()\n .name(\"example\")\n .environmentVariables(Map.of(\"_CUSTOM_IMAGE\", \"node:16\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:amplify:App\n properties:\n name: example\n environmentVariables:\n _CUSTOM_IMAGE: node:16\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Custom Headers\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.amplify.App(\"example\", {\n name: \"example\",\n customHeaders: `customHeaders:\n - pattern: '**'\n headers:\n - key: 'Strict-Transport-Security'\n value: 'max-age=31536000; includeSubDomains'\n - key: 'X-Frame-Options'\n value: 'SAMEORIGIN'\n - key: 'X-XSS-Protection'\n value: '1; mode=block'\n - key: 'X-Content-Type-Options'\n value: 'nosniff'\n - key: 'Content-Security-Policy'\n value: \\\\\"default-src 'self'\\\\\"\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.amplify.App(\"example\",\n name=\"example\",\n custom_headers=\"\"\"customHeaders:\n - pattern: '**'\n headers:\n - key: 'Strict-Transport-Security'\n value: 'max-age=31536000; includeSubDomains'\n - key: 'X-Frame-Options'\n value: 'SAMEORIGIN'\n - key: 'X-XSS-Protection'\n value: '1; mode=block'\n - key: 'X-Content-Type-Options'\n value: 'nosniff'\n - key: 'Content-Security-Policy'\n value: \\\"default-src 'self'\\\"\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Amplify.App(\"example\", new()\n {\n Name = \"example\",\n CustomHeaders = @\"customHeaders:\n - pattern: '**'\n headers:\n - key: 'Strict-Transport-Security'\n value: 'max-age=31536000; includeSubDomains'\n - key: 'X-Frame-Options'\n value: 'SAMEORIGIN'\n - key: 'X-XSS-Protection'\n value: '1; mode=block'\n - key: 'X-Content-Type-Options'\n value: 'nosniff'\n - key: 'Content-Security-Policy'\n value: \\\"\"default-src 'self'\\\"\"\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/amplify\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := amplify.NewApp(ctx, \"example\", \u0026amplify.AppArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tCustomHeaders: pulumi.String(`customHeaders:\n - pattern: '**'\n headers:\n - key: 'Strict-Transport-Security'\n value: 'max-age=31536000; includeSubDomains'\n - key: 'X-Frame-Options'\n value: 'SAMEORIGIN'\n - key: 'X-XSS-Protection'\n value: '1; mode=block'\n - key: 'X-Content-Type-Options'\n value: 'nosniff'\n - key: 'Content-Security-Policy'\n value: \\\"default-src 'self'\\\"\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.amplify.App;\nimport com.pulumi.aws.amplify.AppArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new App(\"example\", AppArgs.builder()\n .name(\"example\")\n .customHeaders(\"\"\"\ncustomHeaders:\n - pattern: '**'\n headers:\n - key: 'Strict-Transport-Security'\n value: 'max-age=31536000; includeSubDomains'\n - key: 'X-Frame-Options'\n value: 'SAMEORIGIN'\n - key: 'X-XSS-Protection'\n value: '1; mode=block'\n - key: 'X-Content-Type-Options'\n value: 'nosniff'\n - key: 'Content-Security-Policy'\n value: \\\"default-src 'self'\\\"\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:amplify:App\n properties:\n name: example\n customHeaders: |\n customHeaders:\n - pattern: '**'\n headers:\n - key: 'Strict-Transport-Security'\n value: 'max-age=31536000; includeSubDomains'\n - key: 'X-Frame-Options'\n value: 'SAMEORIGIN'\n - key: 'X-XSS-Protection'\n value: '1; mode=block'\n - key: 'X-Content-Type-Options'\n value: 'nosniff'\n - key: 'Content-Security-Policy'\n value: \\\"default-src 'self'\\\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Job Config\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.amplify.App(\"example\", {\n name: \"example\",\n jobConfig: {\n buildComputeType: \"STANDARD_8GB\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.amplify.App(\"example\",\n name=\"example\",\n job_config={\n \"build_compute_type\": \"STANDARD_8GB\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Amplify.App(\"example\", new()\n {\n Name = \"example\",\n JobConfig = new Aws.Amplify.Inputs.AppJobConfigArgs\n {\n BuildComputeType = \"STANDARD_8GB\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/amplify\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := amplify.NewApp(ctx, \"example\", \u0026amplify.AppArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tJobConfig: \u0026amplify.AppJobConfigArgs{\n\t\t\t\tBuildComputeType: pulumi.String(\"STANDARD_8GB\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.amplify.App;\nimport com.pulumi.aws.amplify.AppArgs;\nimport com.pulumi.aws.amplify.inputs.AppJobConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new App(\"example\", AppArgs.builder()\n .name(\"example\")\n .jobConfig(AppJobConfigArgs.builder()\n .buildComputeType(\"STANDARD_8GB\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:amplify:App\n properties:\n name: example\n jobConfig:\n buildComputeType: STANDARD_8GB\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Amplify App using Amplify App ID (appId). For example:\n\n```sh\n$ pulumi import aws:amplify/app:App example d2ypk4k47z8u6\n```\nApp ID can be obtained from App ARN (e.g., `arn:aws:amplify:us-east-1:12345678:apps/d2ypk4k47z8u6`).\n\n", "properties": { "accessToken": { "type": "string", @@ -196268,7 +196268,7 @@ } }, "aws:apigateway/integration:Integration": { - "description": "Provides an HTTP Method Integration for an API Gateway Integration.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst myDemoAPI = new aws.apigateway.RestApi(\"MyDemoAPI\", {\n name: \"MyDemoAPI\",\n description: \"This is my API for demonstration purposes\",\n});\nconst myDemoResource = new aws.apigateway.Resource(\"MyDemoResource\", {\n restApi: myDemoAPI.id,\n parentId: myDemoAPI.rootResourceId,\n pathPart: \"mydemoresource\",\n});\nconst myDemoMethod = new aws.apigateway.Method(\"MyDemoMethod\", {\n restApi: myDemoAPI.id,\n resourceId: myDemoResource.id,\n httpMethod: \"GET\",\n authorization: \"NONE\",\n});\nconst myDemoIntegration = new aws.apigateway.Integration(\"MyDemoIntegration\", {\n restApi: myDemoAPI.id,\n resourceId: myDemoResource.id,\n httpMethod: myDemoMethod.httpMethod,\n type: \"MOCK\",\n cacheKeyParameters: [\"method.request.path.param\"],\n cacheNamespace: \"foobar\",\n timeoutMilliseconds: 29000,\n requestParameters: {\n \"integration.request.header.X-Authorization\": \"'static'\",\n },\n requestTemplates: {\n \"application/xml\": `{\n \"body\" : input.json('')\n}\n`,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nmy_demo_api = aws.apigateway.RestApi(\"MyDemoAPI\",\n name=\"MyDemoAPI\",\n description=\"This is my API for demonstration purposes\")\nmy_demo_resource = aws.apigateway.Resource(\"MyDemoResource\",\n rest_api=my_demo_api.id,\n parent_id=my_demo_api.root_resource_id,\n path_part=\"mydemoresource\")\nmy_demo_method = aws.apigateway.Method(\"MyDemoMethod\",\n rest_api=my_demo_api.id,\n resource_id=my_demo_resource.id,\n http_method=\"GET\",\n authorization=\"NONE\")\nmy_demo_integration = aws.apigateway.Integration(\"MyDemoIntegration\",\n rest_api=my_demo_api.id,\n resource_id=my_demo_resource.id,\n http_method=my_demo_method.http_method,\n type=\"MOCK\",\n cache_key_parameters=[\"method.request.path.param\"],\n cache_namespace=\"foobar\",\n timeout_milliseconds=29000,\n request_parameters={\n \"integration.request.header.X-Authorization\": \"'static'\",\n },\n request_templates={\n \"application/xml\": \"\"\"{\n \"body\" : $input.json('$')\n}\n\"\"\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myDemoAPI = new Aws.ApiGateway.RestApi(\"MyDemoAPI\", new()\n {\n Name = \"MyDemoAPI\",\n Description = \"This is my API for demonstration purposes\",\n });\n\n var myDemoResource = new Aws.ApiGateway.Resource(\"MyDemoResource\", new()\n {\n RestApi = myDemoAPI.Id,\n ParentId = myDemoAPI.RootResourceId,\n PathPart = \"mydemoresource\",\n });\n\n var myDemoMethod = new Aws.ApiGateway.Method(\"MyDemoMethod\", new()\n {\n RestApi = myDemoAPI.Id,\n ResourceId = myDemoResource.Id,\n HttpMethod = \"GET\",\n Authorization = \"NONE\",\n });\n\n var myDemoIntegration = new Aws.ApiGateway.Integration(\"MyDemoIntegration\", new()\n {\n RestApi = myDemoAPI.Id,\n ResourceId = myDemoResource.Id,\n HttpMethod = myDemoMethod.HttpMethod,\n Type = \"MOCK\",\n CacheKeyParameters = new[]\n {\n \"method.request.path.param\",\n },\n CacheNamespace = \"foobar\",\n TimeoutMilliseconds = 29000,\n RequestParameters = \n {\n { \"integration.request.header.X-Authorization\", \"'static'\" },\n },\n RequestTemplates = \n {\n { \"application/xml\", @\"{\n \"\"body\"\" : $input.json('$')\n}\n\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/apigateway\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyDemoAPI, err := apigateway.NewRestApi(ctx, \"MyDemoAPI\", \u0026apigateway.RestApiArgs{\n\t\t\tName: pulumi.String(\"MyDemoAPI\"),\n\t\t\tDescription: pulumi.String(\"This is my API for demonstration purposes\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyDemoResource, err := apigateway.NewResource(ctx, \"MyDemoResource\", \u0026apigateway.ResourceArgs{\n\t\t\tRestApi: myDemoAPI.ID(),\n\t\t\tParentId: myDemoAPI.RootResourceId,\n\t\t\tPathPart: pulumi.String(\"mydemoresource\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyDemoMethod, err := apigateway.NewMethod(ctx, \"MyDemoMethod\", \u0026apigateway.MethodArgs{\n\t\t\tRestApi: myDemoAPI.ID(),\n\t\t\tResourceId: myDemoResource.ID(),\n\t\t\tHttpMethod: pulumi.String(\"GET\"),\n\t\t\tAuthorization: pulumi.String(\"NONE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigateway.NewIntegration(ctx, \"MyDemoIntegration\", \u0026apigateway.IntegrationArgs{\n\t\t\tRestApi: myDemoAPI.ID(),\n\t\t\tResourceId: myDemoResource.ID(),\n\t\t\tHttpMethod: myDemoMethod.HttpMethod,\n\t\t\tType: pulumi.String(\"MOCK\"),\n\t\t\tCacheKeyParameters: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"method.request.path.param\"),\n\t\t\t},\n\t\t\tCacheNamespace: pulumi.String(\"foobar\"),\n\t\t\tTimeoutMilliseconds: pulumi.Int(29000),\n\t\t\tRequestParameters: pulumi.StringMap{\n\t\t\t\t\"integration.request.header.X-Authorization\": pulumi.String(\"'static'\"),\n\t\t\t},\n\t\t\tRequestTemplates: pulumi.StringMap{\n\t\t\t\t\"application/xml\": pulumi.String(\"{\\n \\\"body\\\" : $input.json('$')\\n}\\n\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.apigateway.RestApi;\nimport com.pulumi.aws.apigateway.RestApiArgs;\nimport com.pulumi.aws.apigateway.Resource;\nimport com.pulumi.aws.apigateway.ResourceArgs;\nimport com.pulumi.aws.apigateway.Method;\nimport com.pulumi.aws.apigateway.MethodArgs;\nimport com.pulumi.aws.apigateway.Integration;\nimport com.pulumi.aws.apigateway.IntegrationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var myDemoAPI = new RestApi(\"myDemoAPI\", RestApiArgs.builder()\n .name(\"MyDemoAPI\")\n .description(\"This is my API for demonstration purposes\")\n .build());\n\n var myDemoResource = new Resource(\"myDemoResource\", ResourceArgs.builder()\n .restApi(myDemoAPI.id())\n .parentId(myDemoAPI.rootResourceId())\n .pathPart(\"mydemoresource\")\n .build());\n\n var myDemoMethod = new Method(\"myDemoMethod\", MethodArgs.builder()\n .restApi(myDemoAPI.id())\n .resourceId(myDemoResource.id())\n .httpMethod(\"GET\")\n .authorization(\"NONE\")\n .build());\n\n var myDemoIntegration = new Integration(\"myDemoIntegration\", IntegrationArgs.builder()\n .restApi(myDemoAPI.id())\n .resourceId(myDemoResource.id())\n .httpMethod(myDemoMethod.httpMethod())\n .type(\"MOCK\")\n .cacheKeyParameters(\"method.request.path.param\")\n .cacheNamespace(\"foobar\")\n .timeoutMilliseconds(29000)\n .requestParameters(Map.of(\"integration.request.header.X-Authorization\", \"'static'\"))\n .requestTemplates(Map.of(\"application/xml\", \"\"\"\n{\n \"body\" : $input.json('$')\n}\n \"\"\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myDemoAPI:\n type: aws:apigateway:RestApi\n name: MyDemoAPI\n properties:\n name: MyDemoAPI\n description: This is my API for demonstration purposes\n myDemoResource:\n type: aws:apigateway:Resource\n name: MyDemoResource\n properties:\n restApi: ${myDemoAPI.id}\n parentId: ${myDemoAPI.rootResourceId}\n pathPart: mydemoresource\n myDemoMethod:\n type: aws:apigateway:Method\n name: MyDemoMethod\n properties:\n restApi: ${myDemoAPI.id}\n resourceId: ${myDemoResource.id}\n httpMethod: GET\n authorization: NONE\n myDemoIntegration:\n type: aws:apigateway:Integration\n name: MyDemoIntegration\n properties:\n restApi: ${myDemoAPI.id}\n resourceId: ${myDemoResource.id}\n httpMethod: ${myDemoMethod.httpMethod}\n type: MOCK\n cacheKeyParameters:\n - method.request.path.param\n cacheNamespace: foobar\n timeoutMilliseconds: 29000\n requestParameters:\n integration.request.header.X-Authorization: '''static'''\n requestTemplates:\n application/xml: |\n {\n \"body\" : $input.json('$')\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Lambda integration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst config = new pulumi.Config();\nconst myregion = config.requireObject\u003cany\u003e(\"myregion\");\nconst accountId = config.requireObject\u003cany\u003e(\"accountId\");\n// API Gateway\nconst api = new aws.apigateway.RestApi(\"api\", {name: \"myapi\"});\nconst resource = new aws.apigateway.Resource(\"resource\", {\n pathPart: \"resource\",\n parentId: api.rootResourceId,\n restApi: api.id,\n});\nconst method = new aws.apigateway.Method(\"method\", {\n restApi: api.id,\n resourceId: resource.id,\n httpMethod: \"GET\",\n authorization: \"NONE\",\n});\n// IAM\nconst assumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"lambda.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst role = new aws.iam.Role(\"role\", {\n name: \"myrole\",\n assumeRolePolicy: assumeRole.then(assumeRole =\u003e assumeRole.json),\n});\nconst lambda = new aws.lambda.Function(\"lambda\", {\n code: new pulumi.asset.FileArchive(\"lambda.zip\"),\n name: \"mylambda\",\n role: role.arn,\n handler: \"lambda.lambda_handler\",\n runtime: aws.lambda.Runtime.Python3d12,\n sourceCodeHash: std.filebase64sha256({\n input: \"lambda.zip\",\n }).then(invoke =\u003e invoke.result),\n});\nconst integration = new aws.apigateway.Integration(\"integration\", {\n restApi: api.id,\n resourceId: resource.id,\n httpMethod: method.httpMethod,\n integrationHttpMethod: \"POST\",\n type: \"AWS_PROXY\",\n uri: lambda.invokeArn,\n});\n// Lambda\nconst apigwLambda = new aws.lambda.Permission(\"apigw_lambda\", {\n statementId: \"AllowExecutionFromAPIGateway\",\n action: \"lambda:InvokeFunction\",\n \"function\": lambda.name,\n principal: \"apigateway.amazonaws.com\",\n sourceArn: pulumi.interpolate`arn:aws:execute-api:${myregion}:${accountId}:${api.id}/*/${method.httpMethod}${resource.path}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nconfig = pulumi.Config()\nmyregion = config.require_object(\"myregion\")\naccount_id = config.require_object(\"accountId\")\n# API Gateway\napi = aws.apigateway.RestApi(\"api\", name=\"myapi\")\nresource = aws.apigateway.Resource(\"resource\",\n path_part=\"resource\",\n parent_id=api.root_resource_id,\n rest_api=api.id)\nmethod = aws.apigateway.Method(\"method\",\n rest_api=api.id,\n resource_id=resource.id,\n http_method=\"GET\",\n authorization=\"NONE\")\n# IAM\nassume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"lambda.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nrole = aws.iam.Role(\"role\",\n name=\"myrole\",\n assume_role_policy=assume_role.json)\nlambda_ = aws.lambda_.Function(\"lambda\",\n code=pulumi.FileArchive(\"lambda.zip\"),\n name=\"mylambda\",\n role=role.arn,\n handler=\"lambda.lambda_handler\",\n runtime=aws.lambda_.Runtime.PYTHON3D12,\n source_code_hash=std.filebase64sha256(input=\"lambda.zip\").result)\nintegration = aws.apigateway.Integration(\"integration\",\n rest_api=api.id,\n resource_id=resource.id,\n http_method=method.http_method,\n integration_http_method=\"POST\",\n type=\"AWS_PROXY\",\n uri=lambda_.invoke_arn)\n# Lambda\napigw_lambda = aws.lambda_.Permission(\"apigw_lambda\",\n statement_id=\"AllowExecutionFromAPIGateway\",\n action=\"lambda:InvokeFunction\",\n function=lambda_.name,\n principal=\"apigateway.amazonaws.com\",\n source_arn=pulumi.Output.all(\n id=api.id,\n http_method=method.http_method,\n path=resource.path\n).apply(lambda resolved_outputs: f\"arn:aws:execute-api:{myregion}:{account_id}:{resolved_outputs['id']}/*/{resolved_outputs['http_method']}{resolved_outputs['path']}\")\n)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var myregion = config.RequireObject\u003cdynamic\u003e(\"myregion\");\n var accountId = config.RequireObject\u003cdynamic\u003e(\"accountId\");\n // API Gateway\n var api = new Aws.ApiGateway.RestApi(\"api\", new()\n {\n Name = \"myapi\",\n });\n\n var resource = new Aws.ApiGateway.Resource(\"resource\", new()\n {\n PathPart = \"resource\",\n ParentId = api.RootResourceId,\n RestApi = api.Id,\n });\n\n var method = new Aws.ApiGateway.Method(\"method\", new()\n {\n RestApi = api.Id,\n ResourceId = resource.Id,\n HttpMethod = \"GET\",\n Authorization = \"NONE\",\n });\n\n // IAM\n var assumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"lambda.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var role = new Aws.Iam.Role(\"role\", new()\n {\n Name = \"myrole\",\n AssumeRolePolicy = assumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var lambda = new Aws.Lambda.Function(\"lambda\", new()\n {\n Code = new FileArchive(\"lambda.zip\"),\n Name = \"mylambda\",\n Role = role.Arn,\n Handler = \"lambda.lambda_handler\",\n Runtime = Aws.Lambda.Runtime.Python3d12,\n SourceCodeHash = Std.Filebase64sha256.Invoke(new()\n {\n Input = \"lambda.zip\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var integration = new Aws.ApiGateway.Integration(\"integration\", new()\n {\n RestApi = api.Id,\n ResourceId = resource.Id,\n HttpMethod = method.HttpMethod,\n IntegrationHttpMethod = \"POST\",\n Type = \"AWS_PROXY\",\n Uri = lambda.InvokeArn,\n });\n\n // Lambda\n var apigwLambda = new Aws.Lambda.Permission(\"apigw_lambda\", new()\n {\n StatementId = \"AllowExecutionFromAPIGateway\",\n Action = \"lambda:InvokeFunction\",\n Function = lambda.Name,\n Principal = \"apigateway.amazonaws.com\",\n SourceArn = Output.Tuple(api.Id, method.HttpMethod, resource.Path).Apply(values =\u003e\n {\n var id = values.Item1;\n var httpMethod = values.Item2;\n var path = values.Item3;\n return $\"arn:aws:execute-api:{myregion}:{accountId}:{id}/*/{httpMethod}{path}\";\n }),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/apigateway\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tmyregion := cfg.RequireObject(\"myregion\")\n\t\taccountId := cfg.RequireObject(\"accountId\")\n\t\t// API Gateway\n\t\tapi, err := apigateway.NewRestApi(ctx, \"api\", \u0026apigateway.RestApiArgs{\n\t\t\tName: pulumi.String(\"myapi\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tresource, err := apigateway.NewResource(ctx, \"resource\", \u0026apigateway.ResourceArgs{\n\t\t\tPathPart: pulumi.String(\"resource\"),\n\t\t\tParentId: api.RootResourceId,\n\t\t\tRestApi: api.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmethod, err := apigateway.NewMethod(ctx, \"method\", \u0026apigateway.MethodArgs{\n\t\t\tRestApi: api.ID(),\n\t\t\tResourceId: resource.ID(),\n\t\t\tHttpMethod: pulumi.String(\"GET\"),\n\t\t\tAuthorization: pulumi.String(\"NONE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// IAM\n\t\tassumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"lambda.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trole, err := iam.NewRole(ctx, \"role\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"myrole\"),\n\t\t\tAssumeRolePolicy: pulumi.String(assumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilebase64sha256, err := std.Filebase64sha256(ctx, \u0026std.Filebase64sha256Args{\n\t\t\tInput: \"lambda.zip\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlambda, err := lambda.NewFunction(ctx, \"lambda\", \u0026lambda.FunctionArgs{\n\t\t\tCode: pulumi.NewFileArchive(\"lambda.zip\"),\n\t\t\tName: pulumi.String(\"mylambda\"),\n\t\t\tRole: role.Arn,\n\t\t\tHandler: pulumi.String(\"lambda.lambda_handler\"),\n\t\t\tRuntime: pulumi.String(lambda.RuntimePython3d12),\n\t\t\tSourceCodeHash: pulumi.String(invokeFilebase64sha256.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigateway.NewIntegration(ctx, \"integration\", \u0026apigateway.IntegrationArgs{\n\t\t\tRestApi: api.ID(),\n\t\t\tResourceId: resource.ID(),\n\t\t\tHttpMethod: method.HttpMethod,\n\t\t\tIntegrationHttpMethod: pulumi.String(\"POST\"),\n\t\t\tType: pulumi.String(\"AWS_PROXY\"),\n\t\t\tUri: lambda.InvokeArn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Lambda\n\t\t_, err = lambda.NewPermission(ctx, \"apigw_lambda\", \u0026lambda.PermissionArgs{\n\t\t\tStatementId: pulumi.String(\"AllowExecutionFromAPIGateway\"),\n\t\t\tAction: pulumi.String(\"lambda:InvokeFunction\"),\n\t\t\tFunction: lambda.Name,\n\t\t\tPrincipal: pulumi.String(\"apigateway.amazonaws.com\"),\n\t\t\tSourceArn: pulumi.All(api.ID(), method.HttpMethod, resource.Path).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\tid := _args[0].(string)\n\t\t\t\thttpMethod := _args[1].(string)\n\t\t\t\tpath := _args[2].(string)\n\t\t\t\treturn fmt.Sprintf(\"arn:aws:execute-api:%v:%v:%v/*/%v%v\", myregion, accountId, id, httpMethod, path), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.apigateway.RestApi;\nimport com.pulumi.aws.apigateway.RestApiArgs;\nimport com.pulumi.aws.apigateway.Resource;\nimport com.pulumi.aws.apigateway.ResourceArgs;\nimport com.pulumi.aws.apigateway.Method;\nimport com.pulumi.aws.apigateway.MethodArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.lambda.Function;\nimport com.pulumi.aws.lambda.FunctionArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.Filebase64sha256Args;\nimport com.pulumi.aws.apigateway.Integration;\nimport com.pulumi.aws.apigateway.IntegrationArgs;\nimport com.pulumi.aws.lambda.Permission;\nimport com.pulumi.aws.lambda.PermissionArgs;\nimport com.pulumi.asset.FileArchive;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var myregion = config.get(\"myregion\");\n final var accountId = config.get(\"accountId\");\n // API Gateway\n var api = new RestApi(\"api\", RestApiArgs.builder()\n .name(\"myapi\")\n .build());\n\n var resource = new Resource(\"resource\", ResourceArgs.builder()\n .pathPart(\"resource\")\n .parentId(api.rootResourceId())\n .restApi(api.id())\n .build());\n\n var method = new Method(\"method\", MethodArgs.builder()\n .restApi(api.id())\n .resourceId(resource.id())\n .httpMethod(\"GET\")\n .authorization(\"NONE\")\n .build());\n\n // IAM\n final var assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"lambda.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var role = new Role(\"role\", RoleArgs.builder()\n .name(\"myrole\")\n .assumeRolePolicy(assumeRole.json())\n .build());\n\n var lambda = new Function(\"lambda\", FunctionArgs.builder()\n .code(new FileArchive(\"lambda.zip\"))\n .name(\"mylambda\")\n .role(role.arn())\n .handler(\"lambda.lambda_handler\")\n .runtime(\"python3.12\")\n .sourceCodeHash(StdFunctions.filebase64sha256(Filebase64sha256Args.builder()\n .input(\"lambda.zip\")\n .build()).result())\n .build());\n\n var integration = new Integration(\"integration\", IntegrationArgs.builder()\n .restApi(api.id())\n .resourceId(resource.id())\n .httpMethod(method.httpMethod())\n .integrationHttpMethod(\"POST\")\n .type(\"AWS_PROXY\")\n .uri(lambda.invokeArn())\n .build());\n\n // Lambda\n var apigwLambda = new Permission(\"apigwLambda\", PermissionArgs.builder()\n .statementId(\"AllowExecutionFromAPIGateway\")\n .action(\"lambda:InvokeFunction\")\n .function(lambda.name())\n .principal(\"apigateway.amazonaws.com\")\n .sourceArn(Output.tuple(api.id(), method.httpMethod(), resource.path()).applyValue(values -\u003e {\n var id = values.t1;\n var httpMethod = values.t2;\n var path = values.t3;\n return String.format(\"arn:aws:execute-api:%s:%s:%s/*/%s%s\", myregion,accountId,id,httpMethod,path);\n }))\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n # Variables\n myregion:\n type: dynamic\n accountId:\n type: dynamic\nresources:\n # API Gateway\n api:\n type: aws:apigateway:RestApi\n properties:\n name: myapi\n resource:\n type: aws:apigateway:Resource\n properties:\n pathPart: resource\n parentId: ${api.rootResourceId}\n restApi: ${api.id}\n method:\n type: aws:apigateway:Method\n properties:\n restApi: ${api.id}\n resourceId: ${resource.id}\n httpMethod: GET\n authorization: NONE\n integration:\n type: aws:apigateway:Integration\n properties:\n restApi: ${api.id}\n resourceId: ${resource.id}\n httpMethod: ${method.httpMethod}\n integrationHttpMethod: POST\n type: AWS_PROXY\n uri: ${lambda.invokeArn}\n # Lambda\n apigwLambda:\n type: aws:lambda:Permission\n name: apigw_lambda\n properties:\n statementId: AllowExecutionFromAPIGateway\n action: lambda:InvokeFunction\n function: ${lambda.name}\n principal: apigateway.amazonaws.com\n sourceArn: arn:aws:execute-api:${myregion}:${accountId}:${api.id}/*/${method.httpMethod}${resource.path}\n lambda:\n type: aws:lambda:Function\n properties:\n code:\n fn::FileArchive: lambda.zip\n name: mylambda\n role: ${role.arn}\n handler: lambda.lambda_handler\n runtime: python3.12\n sourceCodeHash:\n fn::invoke:\n function: std:filebase64sha256\n arguments:\n input: lambda.zip\n return: result\n role:\n type: aws:iam:Role\n properties:\n name: myrole\n assumeRolePolicy: ${assumeRole.json}\nvariables:\n # IAM\n assumeRole:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - lambda.amazonaws.com\n actions:\n - sts:AssumeRole\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## VPC Link\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst config = new pulumi.Config();\nconst name = config.requireObject\u003cany\u003e(\"name\");\nconst subnetId = config.requireObject\u003cany\u003e(\"subnetId\");\nconst test = new aws.lb.LoadBalancer(\"test\", {\n name: name,\n internal: true,\n loadBalancerType: \"network\",\n subnets: [subnetId],\n});\nconst testVpcLink = new aws.apigateway.VpcLink(\"test\", {\n name: name,\n targetArn: test.arn,\n});\nconst testRestApi = new aws.apigateway.RestApi(\"test\", {name: name});\nconst testResource = new aws.apigateway.Resource(\"test\", {\n restApi: testRestApi.id,\n parentId: testRestApi.rootResourceId,\n pathPart: \"test\",\n});\nconst testMethod = new aws.apigateway.Method(\"test\", {\n restApi: testRestApi.id,\n resourceId: testResource.id,\n httpMethod: \"GET\",\n authorization: \"NONE\",\n requestModels: {\n \"application/json\": \"Error\",\n },\n});\nconst testIntegration = new aws.apigateway.Integration(\"test\", {\n restApi: testRestApi.id,\n resourceId: testResource.id,\n httpMethod: testMethod.httpMethod,\n requestTemplates: {\n \"application/json\": \"\",\n \"application/xml\": `#set(inputRoot = input.path(''))\n{ }`,\n },\n requestParameters: {\n \"integration.request.header.X-Authorization\": \"'static'\",\n \"integration.request.header.X-Foo\": \"'Bar'\",\n },\n type: \"HTTP\",\n uri: \"https://www.google.de\",\n integrationHttpMethod: \"GET\",\n passthroughBehavior: \"WHEN_NO_MATCH\",\n contentHandling: \"CONVERT_TO_TEXT\",\n connectionType: \"VPC_LINK\",\n connectionId: testVpcLink.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nconfig = pulumi.Config()\nname = config.require_object(\"name\")\nsubnet_id = config.require_object(\"subnetId\")\ntest = aws.lb.LoadBalancer(\"test\",\n name=name,\n internal=True,\n load_balancer_type=\"network\",\n subnets=[subnet_id])\ntest_vpc_link = aws.apigateway.VpcLink(\"test\",\n name=name,\n target_arn=test.arn)\ntest_rest_api = aws.apigateway.RestApi(\"test\", name=name)\ntest_resource = aws.apigateway.Resource(\"test\",\n rest_api=test_rest_api.id,\n parent_id=test_rest_api.root_resource_id,\n path_part=\"test\")\ntest_method = aws.apigateway.Method(\"test\",\n rest_api=test_rest_api.id,\n resource_id=test_resource.id,\n http_method=\"GET\",\n authorization=\"NONE\",\n request_models={\n \"application/json\": \"Error\",\n })\ntest_integration = aws.apigateway.Integration(\"test\",\n rest_api=test_rest_api.id,\n resource_id=test_resource.id,\n http_method=test_method.http_method,\n request_templates={\n \"application/json\": \"\",\n \"application/xml\": \"\"\"#set($inputRoot = $input.path('$'))\n{ }\"\"\",\n },\n request_parameters={\n \"integration.request.header.X-Authorization\": \"'static'\",\n \"integration.request.header.X-Foo\": \"'Bar'\",\n },\n type=\"HTTP\",\n uri=\"https://www.google.de\",\n integration_http_method=\"GET\",\n passthrough_behavior=\"WHEN_NO_MATCH\",\n content_handling=\"CONVERT_TO_TEXT\",\n connection_type=\"VPC_LINK\",\n connection_id=test_vpc_link.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var name = config.RequireObject\u003cdynamic\u003e(\"name\");\n var subnetId = config.RequireObject\u003cdynamic\u003e(\"subnetId\");\n var test = new Aws.LB.LoadBalancer(\"test\", new()\n {\n Name = name,\n Internal = true,\n LoadBalancerType = \"network\",\n Subnets = new[]\n {\n subnetId,\n },\n });\n\n var testVpcLink = new Aws.ApiGateway.VpcLink(\"test\", new()\n {\n Name = name,\n TargetArn = test.Arn,\n });\n\n var testRestApi = new Aws.ApiGateway.RestApi(\"test\", new()\n {\n Name = name,\n });\n\n var testResource = new Aws.ApiGateway.Resource(\"test\", new()\n {\n RestApi = testRestApi.Id,\n ParentId = testRestApi.RootResourceId,\n PathPart = \"test\",\n });\n\n var testMethod = new Aws.ApiGateway.Method(\"test\", new()\n {\n RestApi = testRestApi.Id,\n ResourceId = testResource.Id,\n HttpMethod = \"GET\",\n Authorization = \"NONE\",\n RequestModels = \n {\n { \"application/json\", \"Error\" },\n },\n });\n\n var testIntegration = new Aws.ApiGateway.Integration(\"test\", new()\n {\n RestApi = testRestApi.Id,\n ResourceId = testResource.Id,\n HttpMethod = testMethod.HttpMethod,\n RequestTemplates = \n {\n { \"application/json\", \"\" },\n { \"application/xml\", @\"#set($inputRoot = $input.path('$'))\n{ }\" },\n },\n RequestParameters = \n {\n { \"integration.request.header.X-Authorization\", \"'static'\" },\n { \"integration.request.header.X-Foo\", \"'Bar'\" },\n },\n Type = \"HTTP\",\n Uri = \"https://www.google.de\",\n IntegrationHttpMethod = \"GET\",\n PassthroughBehavior = \"WHEN_NO_MATCH\",\n ContentHandling = \"CONVERT_TO_TEXT\",\n ConnectionType = \"VPC_LINK\",\n ConnectionId = testVpcLink.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/apigateway\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tname := cfg.RequireObject(\"name\")\n\t\tsubnetId := cfg.RequireObject(\"subnetId\")\n\t\ttest, err := lb.NewLoadBalancer(ctx, \"test\", \u0026lb.LoadBalancerArgs{\n\t\t\tName: pulumi.Any(name),\n\t\t\tInternal: pulumi.Bool(true),\n\t\t\tLoadBalancerType: pulumi.String(\"network\"),\n\t\t\tSubnets: pulumi.StringArray{\n\t\t\t\tsubnetId,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestVpcLink, err := apigateway.NewVpcLink(ctx, \"test\", \u0026apigateway.VpcLinkArgs{\n\t\t\tName: pulumi.Any(name),\n\t\t\tTargetArn: test.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestRestApi, err := apigateway.NewRestApi(ctx, \"test\", \u0026apigateway.RestApiArgs{\n\t\t\tName: pulumi.Any(name),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestResource, err := apigateway.NewResource(ctx, \"test\", \u0026apigateway.ResourceArgs{\n\t\t\tRestApi: testRestApi.ID(),\n\t\t\tParentId: testRestApi.RootResourceId,\n\t\t\tPathPart: pulumi.String(\"test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestMethod, err := apigateway.NewMethod(ctx, \"test\", \u0026apigateway.MethodArgs{\n\t\t\tRestApi: testRestApi.ID(),\n\t\t\tResourceId: testResource.ID(),\n\t\t\tHttpMethod: pulumi.String(\"GET\"),\n\t\t\tAuthorization: pulumi.String(\"NONE\"),\n\t\t\tRequestModels: pulumi.StringMap{\n\t\t\t\t\"application/json\": pulumi.String(\"Error\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigateway.NewIntegration(ctx, \"test\", \u0026apigateway.IntegrationArgs{\n\t\t\tRestApi: testRestApi.ID(),\n\t\t\tResourceId: testResource.ID(),\n\t\t\tHttpMethod: testMethod.HttpMethod,\n\t\t\tRequestTemplates: pulumi.StringMap{\n\t\t\t\t\"application/json\": pulumi.String(\"\"),\n\t\t\t\t\"application/xml\": pulumi.String(\"#set($inputRoot = $input.path('$'))\\n{ }\"),\n\t\t\t},\n\t\t\tRequestParameters: pulumi.StringMap{\n\t\t\t\t\"integration.request.header.X-Authorization\": pulumi.String(\"'static'\"),\n\t\t\t\t\"integration.request.header.X-Foo\": pulumi.String(\"'Bar'\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"HTTP\"),\n\t\t\tUri: pulumi.String(\"https://www.google.de\"),\n\t\t\tIntegrationHttpMethod: pulumi.String(\"GET\"),\n\t\t\tPassthroughBehavior: pulumi.String(\"WHEN_NO_MATCH\"),\n\t\t\tContentHandling: pulumi.String(\"CONVERT_TO_TEXT\"),\n\t\t\tConnectionType: pulumi.String(\"VPC_LINK\"),\n\t\t\tConnectionId: testVpcLink.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lb.LoadBalancer;\nimport com.pulumi.aws.lb.LoadBalancerArgs;\nimport com.pulumi.aws.apigateway.VpcLink;\nimport com.pulumi.aws.apigateway.VpcLinkArgs;\nimport com.pulumi.aws.apigateway.RestApi;\nimport com.pulumi.aws.apigateway.RestApiArgs;\nimport com.pulumi.aws.apigateway.Resource;\nimport com.pulumi.aws.apigateway.ResourceArgs;\nimport com.pulumi.aws.apigateway.Method;\nimport com.pulumi.aws.apigateway.MethodArgs;\nimport com.pulumi.aws.apigateway.Integration;\nimport com.pulumi.aws.apigateway.IntegrationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var name = config.get(\"name\");\n final var subnetId = config.get(\"subnetId\");\n var test = new LoadBalancer(\"test\", LoadBalancerArgs.builder()\n .name(name)\n .internal(true)\n .loadBalancerType(\"network\")\n .subnets(subnetId)\n .build());\n\n var testVpcLink = new VpcLink(\"testVpcLink\", VpcLinkArgs.builder()\n .name(name)\n .targetArn(test.arn())\n .build());\n\n var testRestApi = new RestApi(\"testRestApi\", RestApiArgs.builder()\n .name(name)\n .build());\n\n var testResource = new Resource(\"testResource\", ResourceArgs.builder()\n .restApi(testRestApi.id())\n .parentId(testRestApi.rootResourceId())\n .pathPart(\"test\")\n .build());\n\n var testMethod = new Method(\"testMethod\", MethodArgs.builder()\n .restApi(testRestApi.id())\n .resourceId(testResource.id())\n .httpMethod(\"GET\")\n .authorization(\"NONE\")\n .requestModels(Map.of(\"application/json\", \"Error\"))\n .build());\n\n var testIntegration = new Integration(\"testIntegration\", IntegrationArgs.builder()\n .restApi(testRestApi.id())\n .resourceId(testResource.id())\n .httpMethod(testMethod.httpMethod())\n .requestTemplates(Map.ofEntries(\n Map.entry(\"application/json\", \"\"),\n Map.entry(\"application/xml\", \"\"\"\n#set($inputRoot = $input.path('$'))\n{ } \"\"\")\n ))\n .requestParameters(Map.ofEntries(\n Map.entry(\"integration.request.header.X-Authorization\", \"'static'\"),\n Map.entry(\"integration.request.header.X-Foo\", \"'Bar'\")\n ))\n .type(\"HTTP\")\n .uri(\"https://www.google.de\")\n .integrationHttpMethod(\"GET\")\n .passthroughBehavior(\"WHEN_NO_MATCH\")\n .contentHandling(\"CONVERT_TO_TEXT\")\n .connectionType(\"VPC_LINK\")\n .connectionId(testVpcLink.id())\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n name:\n type: dynamic\n subnetId:\n type: dynamic\nresources:\n test:\n type: aws:lb:LoadBalancer\n properties:\n name: ${name}\n internal: true\n loadBalancerType: network\n subnets:\n - ${subnetId}\n testVpcLink:\n type: aws:apigateway:VpcLink\n name: test\n properties:\n name: ${name}\n targetArn: ${test.arn}\n testRestApi:\n type: aws:apigateway:RestApi\n name: test\n properties:\n name: ${name}\n testResource:\n type: aws:apigateway:Resource\n name: test\n properties:\n restApi: ${testRestApi.id}\n parentId: ${testRestApi.rootResourceId}\n pathPart: test\n testMethod:\n type: aws:apigateway:Method\n name: test\n properties:\n restApi: ${testRestApi.id}\n resourceId: ${testResource.id}\n httpMethod: GET\n authorization: NONE\n requestModels:\n application/json: Error\n testIntegration:\n type: aws:apigateway:Integration\n name: test\n properties:\n restApi: ${testRestApi.id}\n resourceId: ${testResource.id}\n httpMethod: ${testMethod.httpMethod}\n requestTemplates:\n application/json: \"\"\n application/xml: |-\n #set($inputRoot = $input.path('$'))\n { }\n requestParameters:\n integration.request.header.X-Authorization: '''static'''\n integration.request.header.X-Foo: '''Bar'''\n type: HTTP\n uri: https://www.google.de\n integrationHttpMethod: GET\n passthroughBehavior: WHEN_NO_MATCH\n contentHandling: CONVERT_TO_TEXT\n connectionType: VPC_LINK\n connectionId: ${testVpcLink.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import `aws_api_gateway_integration` using `REST-API-ID/RESOURCE-ID/HTTP-METHOD`. For example:\n\n```sh\n$ pulumi import aws:apigateway/integration:Integration example 12345abcde/67890fghij/GET\n```\n", + "description": "Provides an HTTP Method Integration for an API Gateway Integration.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst myDemoAPI = new aws.apigateway.RestApi(\"MyDemoAPI\", {\n name: \"MyDemoAPI\",\n description: \"This is my API for demonstration purposes\",\n});\nconst myDemoResource = new aws.apigateway.Resource(\"MyDemoResource\", {\n restApi: myDemoAPI.id,\n parentId: myDemoAPI.rootResourceId,\n pathPart: \"mydemoresource\",\n});\nconst myDemoMethod = new aws.apigateway.Method(\"MyDemoMethod\", {\n restApi: myDemoAPI.id,\n resourceId: myDemoResource.id,\n httpMethod: \"GET\",\n authorization: \"NONE\",\n});\nconst myDemoIntegration = new aws.apigateway.Integration(\"MyDemoIntegration\", {\n restApi: myDemoAPI.id,\n resourceId: myDemoResource.id,\n httpMethod: myDemoMethod.httpMethod,\n type: \"MOCK\",\n cacheKeyParameters: [\"method.request.path.param\"],\n cacheNamespace: \"foobar\",\n timeoutMilliseconds: 29000,\n requestParameters: {\n \"integration.request.header.X-Authorization\": \"'static'\",\n },\n requestTemplates: {\n \"application/xml\": `{\n \\\\\"body\\\\\" : input.json('')\n}\n`,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nmy_demo_api = aws.apigateway.RestApi(\"MyDemoAPI\",\n name=\"MyDemoAPI\",\n description=\"This is my API for demonstration purposes\")\nmy_demo_resource = aws.apigateway.Resource(\"MyDemoResource\",\n rest_api=my_demo_api.id,\n parent_id=my_demo_api.root_resource_id,\n path_part=\"mydemoresource\")\nmy_demo_method = aws.apigateway.Method(\"MyDemoMethod\",\n rest_api=my_demo_api.id,\n resource_id=my_demo_resource.id,\n http_method=\"GET\",\n authorization=\"NONE\")\nmy_demo_integration = aws.apigateway.Integration(\"MyDemoIntegration\",\n rest_api=my_demo_api.id,\n resource_id=my_demo_resource.id,\n http_method=my_demo_method.http_method,\n type=\"MOCK\",\n cache_key_parameters=[\"method.request.path.param\"],\n cache_namespace=\"foobar\",\n timeout_milliseconds=29000,\n request_parameters={\n \"integration.request.header.X-Authorization\": \"'static'\",\n },\n request_templates={\n \"application/xml\": \"\"\"{\n \\\"body\\\" : $input.json('$')\n}\n\"\"\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myDemoAPI = new Aws.ApiGateway.RestApi(\"MyDemoAPI\", new()\n {\n Name = \"MyDemoAPI\",\n Description = \"This is my API for demonstration purposes\",\n });\n\n var myDemoResource = new Aws.ApiGateway.Resource(\"MyDemoResource\", new()\n {\n RestApi = myDemoAPI.Id,\n ParentId = myDemoAPI.RootResourceId,\n PathPart = \"mydemoresource\",\n });\n\n var myDemoMethod = new Aws.ApiGateway.Method(\"MyDemoMethod\", new()\n {\n RestApi = myDemoAPI.Id,\n ResourceId = myDemoResource.Id,\n HttpMethod = \"GET\",\n Authorization = \"NONE\",\n });\n\n var myDemoIntegration = new Aws.ApiGateway.Integration(\"MyDemoIntegration\", new()\n {\n RestApi = myDemoAPI.Id,\n ResourceId = myDemoResource.Id,\n HttpMethod = myDemoMethod.HttpMethod,\n Type = \"MOCK\",\n CacheKeyParameters = new[]\n {\n \"method.request.path.param\",\n },\n CacheNamespace = \"foobar\",\n TimeoutMilliseconds = 29000,\n RequestParameters = \n {\n { \"integration.request.header.X-Authorization\", \"'static'\" },\n },\n RequestTemplates = \n {\n { \"application/xml\", @\"{\n \\\"\"body\\\"\" : $input.json('$')\n}\n\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/apigateway\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyDemoAPI, err := apigateway.NewRestApi(ctx, \"MyDemoAPI\", \u0026apigateway.RestApiArgs{\n\t\t\tName: pulumi.String(\"MyDemoAPI\"),\n\t\t\tDescription: pulumi.String(\"This is my API for demonstration purposes\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyDemoResource, err := apigateway.NewResource(ctx, \"MyDemoResource\", \u0026apigateway.ResourceArgs{\n\t\t\tRestApi: myDemoAPI.ID(),\n\t\t\tParentId: myDemoAPI.RootResourceId,\n\t\t\tPathPart: pulumi.String(\"mydemoresource\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyDemoMethod, err := apigateway.NewMethod(ctx, \"MyDemoMethod\", \u0026apigateway.MethodArgs{\n\t\t\tRestApi: myDemoAPI.ID(),\n\t\t\tResourceId: myDemoResource.ID(),\n\t\t\tHttpMethod: pulumi.String(\"GET\"),\n\t\t\tAuthorization: pulumi.String(\"NONE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigateway.NewIntegration(ctx, \"MyDemoIntegration\", \u0026apigateway.IntegrationArgs{\n\t\t\tRestApi: myDemoAPI.ID(),\n\t\t\tResourceId: myDemoResource.ID(),\n\t\t\tHttpMethod: myDemoMethod.HttpMethod,\n\t\t\tType: pulumi.String(\"MOCK\"),\n\t\t\tCacheKeyParameters: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"method.request.path.param\"),\n\t\t\t},\n\t\t\tCacheNamespace: pulumi.String(\"foobar\"),\n\t\t\tTimeoutMilliseconds: pulumi.Int(29000),\n\t\t\tRequestParameters: pulumi.StringMap{\n\t\t\t\t\"integration.request.header.X-Authorization\": pulumi.String(\"'static'\"),\n\t\t\t},\n\t\t\tRequestTemplates: pulumi.StringMap{\n\t\t\t\t\"application/xml\": pulumi.String(\"{\\n \\\\\\\"body\\\\\\\" : $input.json('$')\\n}\\n\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.apigateway.RestApi;\nimport com.pulumi.aws.apigateway.RestApiArgs;\nimport com.pulumi.aws.apigateway.Resource;\nimport com.pulumi.aws.apigateway.ResourceArgs;\nimport com.pulumi.aws.apigateway.Method;\nimport com.pulumi.aws.apigateway.MethodArgs;\nimport com.pulumi.aws.apigateway.Integration;\nimport com.pulumi.aws.apigateway.IntegrationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var myDemoAPI = new RestApi(\"myDemoAPI\", RestApiArgs.builder()\n .name(\"MyDemoAPI\")\n .description(\"This is my API for demonstration purposes\")\n .build());\n\n var myDemoResource = new Resource(\"myDemoResource\", ResourceArgs.builder()\n .restApi(myDemoAPI.id())\n .parentId(myDemoAPI.rootResourceId())\n .pathPart(\"mydemoresource\")\n .build());\n\n var myDemoMethod = new Method(\"myDemoMethod\", MethodArgs.builder()\n .restApi(myDemoAPI.id())\n .resourceId(myDemoResource.id())\n .httpMethod(\"GET\")\n .authorization(\"NONE\")\n .build());\n\n var myDemoIntegration = new Integration(\"myDemoIntegration\", IntegrationArgs.builder()\n .restApi(myDemoAPI.id())\n .resourceId(myDemoResource.id())\n .httpMethod(myDemoMethod.httpMethod())\n .type(\"MOCK\")\n .cacheKeyParameters(\"method.request.path.param\")\n .cacheNamespace(\"foobar\")\n .timeoutMilliseconds(29000)\n .requestParameters(Map.of(\"integration.request.header.X-Authorization\", \"'static'\"))\n .requestTemplates(Map.of(\"application/xml\", \"\"\"\n{\n \\\"body\\\" : $input.json('$')\n}\n \"\"\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myDemoAPI:\n type: aws:apigateway:RestApi\n name: MyDemoAPI\n properties:\n name: MyDemoAPI\n description: This is my API for demonstration purposes\n myDemoResource:\n type: aws:apigateway:Resource\n name: MyDemoResource\n properties:\n restApi: ${myDemoAPI.id}\n parentId: ${myDemoAPI.rootResourceId}\n pathPart: mydemoresource\n myDemoMethod:\n type: aws:apigateway:Method\n name: MyDemoMethod\n properties:\n restApi: ${myDemoAPI.id}\n resourceId: ${myDemoResource.id}\n httpMethod: GET\n authorization: NONE\n myDemoIntegration:\n type: aws:apigateway:Integration\n name: MyDemoIntegration\n properties:\n restApi: ${myDemoAPI.id}\n resourceId: ${myDemoResource.id}\n httpMethod: ${myDemoMethod.httpMethod}\n type: MOCK\n cacheKeyParameters:\n - method.request.path.param\n cacheNamespace: foobar\n timeoutMilliseconds: 29000\n requestParameters:\n integration.request.header.X-Authorization: '''static'''\n requestTemplates:\n application/xml: |\n {\n \\\"body\\\" : $input.json('$')\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Lambda integration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst config = new pulumi.Config();\nconst myregion = config.requireObject\u003cany\u003e(\"myregion\");\nconst accountId = config.requireObject\u003cany\u003e(\"accountId\");\n// API Gateway\nconst api = new aws.apigateway.RestApi(\"api\", {name: \"myapi\"});\nconst resource = new aws.apigateway.Resource(\"resource\", {\n pathPart: \"resource\",\n parentId: api.rootResourceId,\n restApi: api.id,\n});\nconst method = new aws.apigateway.Method(\"method\", {\n restApi: api.id,\n resourceId: resource.id,\n httpMethod: \"GET\",\n authorization: \"NONE\",\n});\n// IAM\nconst assumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"lambda.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst role = new aws.iam.Role(\"role\", {\n name: \"myrole\",\n assumeRolePolicy: assumeRole.then(assumeRole =\u003e assumeRole.json),\n});\nconst lambda = new aws.lambda.Function(\"lambda\", {\n code: new pulumi.asset.FileArchive(\"lambda.zip\"),\n name: \"mylambda\",\n role: role.arn,\n handler: \"lambda.lambda_handler\",\n runtime: aws.lambda.Runtime.Python3d12,\n sourceCodeHash: std.filebase64sha256({\n input: \"lambda.zip\",\n }).then(invoke =\u003e invoke.result),\n});\nconst integration = new aws.apigateway.Integration(\"integration\", {\n restApi: api.id,\n resourceId: resource.id,\n httpMethod: method.httpMethod,\n integrationHttpMethod: \"POST\",\n type: \"AWS_PROXY\",\n uri: lambda.invokeArn,\n});\n// Lambda\nconst apigwLambda = new aws.lambda.Permission(\"apigw_lambda\", {\n statementId: \"AllowExecutionFromAPIGateway\",\n action: \"lambda:InvokeFunction\",\n \"function\": lambda.name,\n principal: \"apigateway.amazonaws.com\",\n sourceArn: pulumi.interpolate`arn:aws:execute-api:${myregion}:${accountId}:${api.id}/*/${method.httpMethod}${resource.path}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nconfig = pulumi.Config()\nmyregion = config.require_object(\"myregion\")\naccount_id = config.require_object(\"accountId\")\n# API Gateway\napi = aws.apigateway.RestApi(\"api\", name=\"myapi\")\nresource = aws.apigateway.Resource(\"resource\",\n path_part=\"resource\",\n parent_id=api.root_resource_id,\n rest_api=api.id)\nmethod = aws.apigateway.Method(\"method\",\n rest_api=api.id,\n resource_id=resource.id,\n http_method=\"GET\",\n authorization=\"NONE\")\n# IAM\nassume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"lambda.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nrole = aws.iam.Role(\"role\",\n name=\"myrole\",\n assume_role_policy=assume_role.json)\nlambda_ = aws.lambda_.Function(\"lambda\",\n code=pulumi.FileArchive(\"lambda.zip\"),\n name=\"mylambda\",\n role=role.arn,\n handler=\"lambda.lambda_handler\",\n runtime=aws.lambda_.Runtime.PYTHON3D12,\n source_code_hash=std.filebase64sha256(input=\"lambda.zip\").result)\nintegration = aws.apigateway.Integration(\"integration\",\n rest_api=api.id,\n resource_id=resource.id,\n http_method=method.http_method,\n integration_http_method=\"POST\",\n type=\"AWS_PROXY\",\n uri=lambda_.invoke_arn)\n# Lambda\napigw_lambda = aws.lambda_.Permission(\"apigw_lambda\",\n statement_id=\"AllowExecutionFromAPIGateway\",\n action=\"lambda:InvokeFunction\",\n function=lambda_.name,\n principal=\"apigateway.amazonaws.com\",\n source_arn=pulumi.Output.all(\n id=api.id,\n http_method=method.http_method,\n path=resource.path\n).apply(lambda resolved_outputs: f\"arn:aws:execute-api:{myregion}:{account_id}:{resolved_outputs['id']}/*/{resolved_outputs['http_method']}{resolved_outputs['path']}\")\n)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var myregion = config.RequireObject\u003cdynamic\u003e(\"myregion\");\n var accountId = config.RequireObject\u003cdynamic\u003e(\"accountId\");\n // API Gateway\n var api = new Aws.ApiGateway.RestApi(\"api\", new()\n {\n Name = \"myapi\",\n });\n\n var resource = new Aws.ApiGateway.Resource(\"resource\", new()\n {\n PathPart = \"resource\",\n ParentId = api.RootResourceId,\n RestApi = api.Id,\n });\n\n var method = new Aws.ApiGateway.Method(\"method\", new()\n {\n RestApi = api.Id,\n ResourceId = resource.Id,\n HttpMethod = \"GET\",\n Authorization = \"NONE\",\n });\n\n // IAM\n var assumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"lambda.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var role = new Aws.Iam.Role(\"role\", new()\n {\n Name = \"myrole\",\n AssumeRolePolicy = assumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var lambda = new Aws.Lambda.Function(\"lambda\", new()\n {\n Code = new FileArchive(\"lambda.zip\"),\n Name = \"mylambda\",\n Role = role.Arn,\n Handler = \"lambda.lambda_handler\",\n Runtime = Aws.Lambda.Runtime.Python3d12,\n SourceCodeHash = Std.Filebase64sha256.Invoke(new()\n {\n Input = \"lambda.zip\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var integration = new Aws.ApiGateway.Integration(\"integration\", new()\n {\n RestApi = api.Id,\n ResourceId = resource.Id,\n HttpMethod = method.HttpMethod,\n IntegrationHttpMethod = \"POST\",\n Type = \"AWS_PROXY\",\n Uri = lambda.InvokeArn,\n });\n\n // Lambda\n var apigwLambda = new Aws.Lambda.Permission(\"apigw_lambda\", new()\n {\n StatementId = \"AllowExecutionFromAPIGateway\",\n Action = \"lambda:InvokeFunction\",\n Function = lambda.Name,\n Principal = \"apigateway.amazonaws.com\",\n SourceArn = Output.Tuple(api.Id, method.HttpMethod, resource.Path).Apply(values =\u003e\n {\n var id = values.Item1;\n var httpMethod = values.Item2;\n var path = values.Item3;\n return $\"arn:aws:execute-api:{myregion}:{accountId}:{id}/*/{httpMethod}{path}\";\n }),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/apigateway\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tmyregion := cfg.RequireObject(\"myregion\")\n\t\taccountId := cfg.RequireObject(\"accountId\")\n\t\t// API Gateway\n\t\tapi, err := apigateway.NewRestApi(ctx, \"api\", \u0026apigateway.RestApiArgs{\n\t\t\tName: pulumi.String(\"myapi\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tresource, err := apigateway.NewResource(ctx, \"resource\", \u0026apigateway.ResourceArgs{\n\t\t\tPathPart: pulumi.String(\"resource\"),\n\t\t\tParentId: api.RootResourceId,\n\t\t\tRestApi: api.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmethod, err := apigateway.NewMethod(ctx, \"method\", \u0026apigateway.MethodArgs{\n\t\t\tRestApi: api.ID(),\n\t\t\tResourceId: resource.ID(),\n\t\t\tHttpMethod: pulumi.String(\"GET\"),\n\t\t\tAuthorization: pulumi.String(\"NONE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// IAM\n\t\tassumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"lambda.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trole, err := iam.NewRole(ctx, \"role\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"myrole\"),\n\t\t\tAssumeRolePolicy: pulumi.String(assumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilebase64sha256, err := std.Filebase64sha256(ctx, \u0026std.Filebase64sha256Args{\n\t\t\tInput: \"lambda.zip\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlambda, err := lambda.NewFunction(ctx, \"lambda\", \u0026lambda.FunctionArgs{\n\t\t\tCode: pulumi.NewFileArchive(\"lambda.zip\"),\n\t\t\tName: pulumi.String(\"mylambda\"),\n\t\t\tRole: role.Arn,\n\t\t\tHandler: pulumi.String(\"lambda.lambda_handler\"),\n\t\t\tRuntime: pulumi.String(lambda.RuntimePython3d12),\n\t\t\tSourceCodeHash: pulumi.String(invokeFilebase64sha256.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigateway.NewIntegration(ctx, \"integration\", \u0026apigateway.IntegrationArgs{\n\t\t\tRestApi: api.ID(),\n\t\t\tResourceId: resource.ID(),\n\t\t\tHttpMethod: method.HttpMethod,\n\t\t\tIntegrationHttpMethod: pulumi.String(\"POST\"),\n\t\t\tType: pulumi.String(\"AWS_PROXY\"),\n\t\t\tUri: lambda.InvokeArn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Lambda\n\t\t_, err = lambda.NewPermission(ctx, \"apigw_lambda\", \u0026lambda.PermissionArgs{\n\t\t\tStatementId: pulumi.String(\"AllowExecutionFromAPIGateway\"),\n\t\t\tAction: pulumi.String(\"lambda:InvokeFunction\"),\n\t\t\tFunction: lambda.Name,\n\t\t\tPrincipal: pulumi.String(\"apigateway.amazonaws.com\"),\n\t\t\tSourceArn: pulumi.All(api.ID(), method.HttpMethod, resource.Path).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\tid := _args[0].(string)\n\t\t\t\thttpMethod := _args[1].(string)\n\t\t\t\tpath := _args[2].(string)\n\t\t\t\treturn fmt.Sprintf(\"arn:aws:execute-api:%v:%v:%v/*/%v%v\", myregion, accountId, id, httpMethod, path), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.apigateway.RestApi;\nimport com.pulumi.aws.apigateway.RestApiArgs;\nimport com.pulumi.aws.apigateway.Resource;\nimport com.pulumi.aws.apigateway.ResourceArgs;\nimport com.pulumi.aws.apigateway.Method;\nimport com.pulumi.aws.apigateway.MethodArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.lambda.Function;\nimport com.pulumi.aws.lambda.FunctionArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.Filebase64sha256Args;\nimport com.pulumi.aws.apigateway.Integration;\nimport com.pulumi.aws.apigateway.IntegrationArgs;\nimport com.pulumi.aws.lambda.Permission;\nimport com.pulumi.aws.lambda.PermissionArgs;\nimport com.pulumi.asset.FileArchive;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var myregion = config.get(\"myregion\");\n final var accountId = config.get(\"accountId\");\n // API Gateway\n var api = new RestApi(\"api\", RestApiArgs.builder()\n .name(\"myapi\")\n .build());\n\n var resource = new Resource(\"resource\", ResourceArgs.builder()\n .pathPart(\"resource\")\n .parentId(api.rootResourceId())\n .restApi(api.id())\n .build());\n\n var method = new Method(\"method\", MethodArgs.builder()\n .restApi(api.id())\n .resourceId(resource.id())\n .httpMethod(\"GET\")\n .authorization(\"NONE\")\n .build());\n\n // IAM\n final var assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"lambda.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var role = new Role(\"role\", RoleArgs.builder()\n .name(\"myrole\")\n .assumeRolePolicy(assumeRole.json())\n .build());\n\n var lambda = new Function(\"lambda\", FunctionArgs.builder()\n .code(new FileArchive(\"lambda.zip\"))\n .name(\"mylambda\")\n .role(role.arn())\n .handler(\"lambda.lambda_handler\")\n .runtime(\"python3.12\")\n .sourceCodeHash(StdFunctions.filebase64sha256(Filebase64sha256Args.builder()\n .input(\"lambda.zip\")\n .build()).result())\n .build());\n\n var integration = new Integration(\"integration\", IntegrationArgs.builder()\n .restApi(api.id())\n .resourceId(resource.id())\n .httpMethod(method.httpMethod())\n .integrationHttpMethod(\"POST\")\n .type(\"AWS_PROXY\")\n .uri(lambda.invokeArn())\n .build());\n\n // Lambda\n var apigwLambda = new Permission(\"apigwLambda\", PermissionArgs.builder()\n .statementId(\"AllowExecutionFromAPIGateway\")\n .action(\"lambda:InvokeFunction\")\n .function(lambda.name())\n .principal(\"apigateway.amazonaws.com\")\n .sourceArn(Output.tuple(api.id(), method.httpMethod(), resource.path()).applyValue(values -\u003e {\n var id = values.t1;\n var httpMethod = values.t2;\n var path = values.t3;\n return String.format(\"arn:aws:execute-api:%s:%s:%s/*/%s%s\", myregion,accountId,id,httpMethod,path);\n }))\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n # Variables\n myregion:\n type: dynamic\n accountId:\n type: dynamic\nresources:\n # API Gateway\n api:\n type: aws:apigateway:RestApi\n properties:\n name: myapi\n resource:\n type: aws:apigateway:Resource\n properties:\n pathPart: resource\n parentId: ${api.rootResourceId}\n restApi: ${api.id}\n method:\n type: aws:apigateway:Method\n properties:\n restApi: ${api.id}\n resourceId: ${resource.id}\n httpMethod: GET\n authorization: NONE\n integration:\n type: aws:apigateway:Integration\n properties:\n restApi: ${api.id}\n resourceId: ${resource.id}\n httpMethod: ${method.httpMethod}\n integrationHttpMethod: POST\n type: AWS_PROXY\n uri: ${lambda.invokeArn}\n # Lambda\n apigwLambda:\n type: aws:lambda:Permission\n name: apigw_lambda\n properties:\n statementId: AllowExecutionFromAPIGateway\n action: lambda:InvokeFunction\n function: ${lambda.name}\n principal: apigateway.amazonaws.com\n sourceArn: arn:aws:execute-api:${myregion}:${accountId}:${api.id}/*/${method.httpMethod}${resource.path}\n lambda:\n type: aws:lambda:Function\n properties:\n code:\n fn::FileArchive: lambda.zip\n name: mylambda\n role: ${role.arn}\n handler: lambda.lambda_handler\n runtime: python3.12\n sourceCodeHash:\n fn::invoke:\n function: std:filebase64sha256\n arguments:\n input: lambda.zip\n return: result\n role:\n type: aws:iam:Role\n properties:\n name: myrole\n assumeRolePolicy: ${assumeRole.json}\nvariables:\n # IAM\n assumeRole:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - lambda.amazonaws.com\n actions:\n - sts:AssumeRole\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## VPC Link\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst config = new pulumi.Config();\nconst name = config.requireObject\u003cany\u003e(\"name\");\nconst subnetId = config.requireObject\u003cany\u003e(\"subnetId\");\nconst test = new aws.lb.LoadBalancer(\"test\", {\n name: name,\n internal: true,\n loadBalancerType: \"network\",\n subnets: [subnetId],\n});\nconst testVpcLink = new aws.apigateway.VpcLink(\"test\", {\n name: name,\n targetArn: test.arn,\n});\nconst testRestApi = new aws.apigateway.RestApi(\"test\", {name: name});\nconst testResource = new aws.apigateway.Resource(\"test\", {\n restApi: testRestApi.id,\n parentId: testRestApi.rootResourceId,\n pathPart: \"test\",\n});\nconst testMethod = new aws.apigateway.Method(\"test\", {\n restApi: testRestApi.id,\n resourceId: testResource.id,\n httpMethod: \"GET\",\n authorization: \"NONE\",\n requestModels: {\n \"application/json\": \"Error\",\n },\n});\nconst testIntegration = new aws.apigateway.Integration(\"test\", {\n restApi: testRestApi.id,\n resourceId: testResource.id,\n httpMethod: testMethod.httpMethod,\n requestTemplates: {\n \"application/json\": \"\",\n \"application/xml\": `#set(inputRoot = input.path(''))\n{ }`,\n },\n requestParameters: {\n \"integration.request.header.X-Authorization\": \"'static'\",\n \"integration.request.header.X-Foo\": \"'Bar'\",\n },\n type: \"HTTP\",\n uri: \"https://www.google.de\",\n integrationHttpMethod: \"GET\",\n passthroughBehavior: \"WHEN_NO_MATCH\",\n contentHandling: \"CONVERT_TO_TEXT\",\n connectionType: \"VPC_LINK\",\n connectionId: testVpcLink.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nconfig = pulumi.Config()\nname = config.require_object(\"name\")\nsubnet_id = config.require_object(\"subnetId\")\ntest = aws.lb.LoadBalancer(\"test\",\n name=name,\n internal=True,\n load_balancer_type=\"network\",\n subnets=[subnet_id])\ntest_vpc_link = aws.apigateway.VpcLink(\"test\",\n name=name,\n target_arn=test.arn)\ntest_rest_api = aws.apigateway.RestApi(\"test\", name=name)\ntest_resource = aws.apigateway.Resource(\"test\",\n rest_api=test_rest_api.id,\n parent_id=test_rest_api.root_resource_id,\n path_part=\"test\")\ntest_method = aws.apigateway.Method(\"test\",\n rest_api=test_rest_api.id,\n resource_id=test_resource.id,\n http_method=\"GET\",\n authorization=\"NONE\",\n request_models={\n \"application/json\": \"Error\",\n })\ntest_integration = aws.apigateway.Integration(\"test\",\n rest_api=test_rest_api.id,\n resource_id=test_resource.id,\n http_method=test_method.http_method,\n request_templates={\n \"application/json\": \"\",\n \"application/xml\": \"\"\"#set($inputRoot = $input.path('$'))\n{ }\"\"\",\n },\n request_parameters={\n \"integration.request.header.X-Authorization\": \"'static'\",\n \"integration.request.header.X-Foo\": \"'Bar'\",\n },\n type=\"HTTP\",\n uri=\"https://www.google.de\",\n integration_http_method=\"GET\",\n passthrough_behavior=\"WHEN_NO_MATCH\",\n content_handling=\"CONVERT_TO_TEXT\",\n connection_type=\"VPC_LINK\",\n connection_id=test_vpc_link.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var name = config.RequireObject\u003cdynamic\u003e(\"name\");\n var subnetId = config.RequireObject\u003cdynamic\u003e(\"subnetId\");\n var test = new Aws.LB.LoadBalancer(\"test\", new()\n {\n Name = name,\n Internal = true,\n LoadBalancerType = \"network\",\n Subnets = new[]\n {\n subnetId,\n },\n });\n\n var testVpcLink = new Aws.ApiGateway.VpcLink(\"test\", new()\n {\n Name = name,\n TargetArn = test.Arn,\n });\n\n var testRestApi = new Aws.ApiGateway.RestApi(\"test\", new()\n {\n Name = name,\n });\n\n var testResource = new Aws.ApiGateway.Resource(\"test\", new()\n {\n RestApi = testRestApi.Id,\n ParentId = testRestApi.RootResourceId,\n PathPart = \"test\",\n });\n\n var testMethod = new Aws.ApiGateway.Method(\"test\", new()\n {\n RestApi = testRestApi.Id,\n ResourceId = testResource.Id,\n HttpMethod = \"GET\",\n Authorization = \"NONE\",\n RequestModels = \n {\n { \"application/json\", \"Error\" },\n },\n });\n\n var testIntegration = new Aws.ApiGateway.Integration(\"test\", new()\n {\n RestApi = testRestApi.Id,\n ResourceId = testResource.Id,\n HttpMethod = testMethod.HttpMethod,\n RequestTemplates = \n {\n { \"application/json\", \"\" },\n { \"application/xml\", @\"#set($inputRoot = $input.path('$'))\n{ }\" },\n },\n RequestParameters = \n {\n { \"integration.request.header.X-Authorization\", \"'static'\" },\n { \"integration.request.header.X-Foo\", \"'Bar'\" },\n },\n Type = \"HTTP\",\n Uri = \"https://www.google.de\",\n IntegrationHttpMethod = \"GET\",\n PassthroughBehavior = \"WHEN_NO_MATCH\",\n ContentHandling = \"CONVERT_TO_TEXT\",\n ConnectionType = \"VPC_LINK\",\n ConnectionId = testVpcLink.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/apigateway\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tname := cfg.RequireObject(\"name\")\n\t\tsubnetId := cfg.RequireObject(\"subnetId\")\n\t\ttest, err := lb.NewLoadBalancer(ctx, \"test\", \u0026lb.LoadBalancerArgs{\n\t\t\tName: pulumi.Any(name),\n\t\t\tInternal: pulumi.Bool(true),\n\t\t\tLoadBalancerType: pulumi.String(\"network\"),\n\t\t\tSubnets: pulumi.StringArray{\n\t\t\t\tsubnetId,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestVpcLink, err := apigateway.NewVpcLink(ctx, \"test\", \u0026apigateway.VpcLinkArgs{\n\t\t\tName: pulumi.Any(name),\n\t\t\tTargetArn: test.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestRestApi, err := apigateway.NewRestApi(ctx, \"test\", \u0026apigateway.RestApiArgs{\n\t\t\tName: pulumi.Any(name),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestResource, err := apigateway.NewResource(ctx, \"test\", \u0026apigateway.ResourceArgs{\n\t\t\tRestApi: testRestApi.ID(),\n\t\t\tParentId: testRestApi.RootResourceId,\n\t\t\tPathPart: pulumi.String(\"test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestMethod, err := apigateway.NewMethod(ctx, \"test\", \u0026apigateway.MethodArgs{\n\t\t\tRestApi: testRestApi.ID(),\n\t\t\tResourceId: testResource.ID(),\n\t\t\tHttpMethod: pulumi.String(\"GET\"),\n\t\t\tAuthorization: pulumi.String(\"NONE\"),\n\t\t\tRequestModels: pulumi.StringMap{\n\t\t\t\t\"application/json\": pulumi.String(\"Error\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigateway.NewIntegration(ctx, \"test\", \u0026apigateway.IntegrationArgs{\n\t\t\tRestApi: testRestApi.ID(),\n\t\t\tResourceId: testResource.ID(),\n\t\t\tHttpMethod: testMethod.HttpMethod,\n\t\t\tRequestTemplates: pulumi.StringMap{\n\t\t\t\t\"application/json\": pulumi.String(\"\"),\n\t\t\t\t\"application/xml\": pulumi.String(\"#set($inputRoot = $input.path('$'))\\n{ }\"),\n\t\t\t},\n\t\t\tRequestParameters: pulumi.StringMap{\n\t\t\t\t\"integration.request.header.X-Authorization\": pulumi.String(\"'static'\"),\n\t\t\t\t\"integration.request.header.X-Foo\": pulumi.String(\"'Bar'\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"HTTP\"),\n\t\t\tUri: pulumi.String(\"https://www.google.de\"),\n\t\t\tIntegrationHttpMethod: pulumi.String(\"GET\"),\n\t\t\tPassthroughBehavior: pulumi.String(\"WHEN_NO_MATCH\"),\n\t\t\tContentHandling: pulumi.String(\"CONVERT_TO_TEXT\"),\n\t\t\tConnectionType: pulumi.String(\"VPC_LINK\"),\n\t\t\tConnectionId: testVpcLink.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lb.LoadBalancer;\nimport com.pulumi.aws.lb.LoadBalancerArgs;\nimport com.pulumi.aws.apigateway.VpcLink;\nimport com.pulumi.aws.apigateway.VpcLinkArgs;\nimport com.pulumi.aws.apigateway.RestApi;\nimport com.pulumi.aws.apigateway.RestApiArgs;\nimport com.pulumi.aws.apigateway.Resource;\nimport com.pulumi.aws.apigateway.ResourceArgs;\nimport com.pulumi.aws.apigateway.Method;\nimport com.pulumi.aws.apigateway.MethodArgs;\nimport com.pulumi.aws.apigateway.Integration;\nimport com.pulumi.aws.apigateway.IntegrationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var name = config.get(\"name\");\n final var subnetId = config.get(\"subnetId\");\n var test = new LoadBalancer(\"test\", LoadBalancerArgs.builder()\n .name(name)\n .internal(true)\n .loadBalancerType(\"network\")\n .subnets(subnetId)\n .build());\n\n var testVpcLink = new VpcLink(\"testVpcLink\", VpcLinkArgs.builder()\n .name(name)\n .targetArn(test.arn())\n .build());\n\n var testRestApi = new RestApi(\"testRestApi\", RestApiArgs.builder()\n .name(name)\n .build());\n\n var testResource = new Resource(\"testResource\", ResourceArgs.builder()\n .restApi(testRestApi.id())\n .parentId(testRestApi.rootResourceId())\n .pathPart(\"test\")\n .build());\n\n var testMethod = new Method(\"testMethod\", MethodArgs.builder()\n .restApi(testRestApi.id())\n .resourceId(testResource.id())\n .httpMethod(\"GET\")\n .authorization(\"NONE\")\n .requestModels(Map.of(\"application/json\", \"Error\"))\n .build());\n\n var testIntegration = new Integration(\"testIntegration\", IntegrationArgs.builder()\n .restApi(testRestApi.id())\n .resourceId(testResource.id())\n .httpMethod(testMethod.httpMethod())\n .requestTemplates(Map.ofEntries(\n Map.entry(\"application/json\", \"\"),\n Map.entry(\"application/xml\", \"\"\"\n#set($inputRoot = $input.path('$'))\n{ } \"\"\")\n ))\n .requestParameters(Map.ofEntries(\n Map.entry(\"integration.request.header.X-Authorization\", \"'static'\"),\n Map.entry(\"integration.request.header.X-Foo\", \"'Bar'\")\n ))\n .type(\"HTTP\")\n .uri(\"https://www.google.de\")\n .integrationHttpMethod(\"GET\")\n .passthroughBehavior(\"WHEN_NO_MATCH\")\n .contentHandling(\"CONVERT_TO_TEXT\")\n .connectionType(\"VPC_LINK\")\n .connectionId(testVpcLink.id())\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n name:\n type: dynamic\n subnetId:\n type: dynamic\nresources:\n test:\n type: aws:lb:LoadBalancer\n properties:\n name: ${name}\n internal: true\n loadBalancerType: network\n subnets:\n - ${subnetId}\n testVpcLink:\n type: aws:apigateway:VpcLink\n name: test\n properties:\n name: ${name}\n targetArn: ${test.arn}\n testRestApi:\n type: aws:apigateway:RestApi\n name: test\n properties:\n name: ${name}\n testResource:\n type: aws:apigateway:Resource\n name: test\n properties:\n restApi: ${testRestApi.id}\n parentId: ${testRestApi.rootResourceId}\n pathPart: test\n testMethod:\n type: aws:apigateway:Method\n name: test\n properties:\n restApi: ${testRestApi.id}\n resourceId: ${testResource.id}\n httpMethod: GET\n authorization: NONE\n requestModels:\n application/json: Error\n testIntegration:\n type: aws:apigateway:Integration\n name: test\n properties:\n restApi: ${testRestApi.id}\n resourceId: ${testResource.id}\n httpMethod: ${testMethod.httpMethod}\n requestTemplates:\n application/json: \"\"\n application/xml: |-\n #set($inputRoot = $input.path('$'))\n { }\n requestParameters:\n integration.request.header.X-Authorization: '''static'''\n integration.request.header.X-Foo: '''Bar'''\n type: HTTP\n uri: https://www.google.de\n integrationHttpMethod: GET\n passthroughBehavior: WHEN_NO_MATCH\n contentHandling: CONVERT_TO_TEXT\n connectionType: VPC_LINK\n connectionId: ${testVpcLink.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import `aws_api_gateway_integration` using `REST-API-ID/RESOURCE-ID/HTTP-METHOD`. For example:\n\n```sh\n$ pulumi import aws:apigateway/integration:Integration example 12345abcde/67890fghij/GET\n```\n", "properties": { "cacheKeyParameters": { "type": "array", @@ -196571,7 +196571,7 @@ } }, "aws:apigateway/integrationResponse:IntegrationResponse": { - "description": "Provides an HTTP Method Integration Response for an API Gateway Resource.\n\n\u003e **Note:** Depends on having \u003cspan pulumi-lang-nodejs=\"`aws.apigateway.Integration`\" pulumi-lang-dotnet=\"`aws.apigateway.Integration`\" pulumi-lang-go=\"`apigateway.Integration`\" pulumi-lang-python=\"`apigateway.Integration`\" pulumi-lang-yaml=\"`aws.apigateway.Integration`\" pulumi-lang-java=\"`aws.apigateway.Integration`\"\u003e`aws.apigateway.Integration`\u003c/span\u003e inside your rest api. To ensure this\nyou might need to add an explicit \u003cspan pulumi-lang-nodejs=\"`dependsOn`\" pulumi-lang-dotnet=\"`DependsOn`\" pulumi-lang-go=\"`dependsOn`\" pulumi-lang-python=\"`depends_on`\" pulumi-lang-yaml=\"`dependsOn`\" pulumi-lang-java=\"`dependsOn`\"\u003e`depends_on`\u003c/span\u003e for clean runs.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst myDemoAPI = new aws.apigateway.RestApi(\"MyDemoAPI\", {\n name: \"MyDemoAPI\",\n description: \"This is my API for demonstration purposes\",\n});\nconst myDemoResource = new aws.apigateway.Resource(\"MyDemoResource\", {\n restApi: myDemoAPI.id,\n parentId: myDemoAPI.rootResourceId,\n pathPart: \"mydemoresource\",\n});\nconst myDemoMethod = new aws.apigateway.Method(\"MyDemoMethod\", {\n restApi: myDemoAPI.id,\n resourceId: myDemoResource.id,\n httpMethod: \"GET\",\n authorization: \"NONE\",\n});\nconst myDemoIntegration = new aws.apigateway.Integration(\"MyDemoIntegration\", {\n restApi: myDemoAPI.id,\n resourceId: myDemoResource.id,\n httpMethod: myDemoMethod.httpMethod,\n type: \"MOCK\",\n});\nconst response200 = new aws.apigateway.MethodResponse(\"response_200\", {\n restApi: myDemoAPI.id,\n resourceId: myDemoResource.id,\n httpMethod: myDemoMethod.httpMethod,\n statusCode: \"200\",\n});\nconst myDemoIntegrationResponse = new aws.apigateway.IntegrationResponse(\"MyDemoIntegrationResponse\", {\n restApi: myDemoAPI.id,\n resourceId: myDemoResource.id,\n httpMethod: myDemoMethod.httpMethod,\n statusCode: response200.statusCode,\n responseTemplates: {\n \"application/xml\": `#set(inputRoot = input.path(''))\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cmessage\u003e\n inputRoot.body\n\u003c/message\u003e\n`,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nmy_demo_api = aws.apigateway.RestApi(\"MyDemoAPI\",\n name=\"MyDemoAPI\",\n description=\"This is my API for demonstration purposes\")\nmy_demo_resource = aws.apigateway.Resource(\"MyDemoResource\",\n rest_api=my_demo_api.id,\n parent_id=my_demo_api.root_resource_id,\n path_part=\"mydemoresource\")\nmy_demo_method = aws.apigateway.Method(\"MyDemoMethod\",\n rest_api=my_demo_api.id,\n resource_id=my_demo_resource.id,\n http_method=\"GET\",\n authorization=\"NONE\")\nmy_demo_integration = aws.apigateway.Integration(\"MyDemoIntegration\",\n rest_api=my_demo_api.id,\n resource_id=my_demo_resource.id,\n http_method=my_demo_method.http_method,\n type=\"MOCK\")\nresponse200 = aws.apigateway.MethodResponse(\"response_200\",\n rest_api=my_demo_api.id,\n resource_id=my_demo_resource.id,\n http_method=my_demo_method.http_method,\n status_code=\"200\")\nmy_demo_integration_response = aws.apigateway.IntegrationResponse(\"MyDemoIntegrationResponse\",\n rest_api=my_demo_api.id,\n resource_id=my_demo_resource.id,\n http_method=my_demo_method.http_method,\n status_code=response200.status_code,\n response_templates={\n \"application/xml\": \"\"\"#set($inputRoot = $input.path('$'))\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cmessage\u003e\n $inputRoot.body\n\u003c/message\u003e\n\"\"\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myDemoAPI = new Aws.ApiGateway.RestApi(\"MyDemoAPI\", new()\n {\n Name = \"MyDemoAPI\",\n Description = \"This is my API for demonstration purposes\",\n });\n\n var myDemoResource = new Aws.ApiGateway.Resource(\"MyDemoResource\", new()\n {\n RestApi = myDemoAPI.Id,\n ParentId = myDemoAPI.RootResourceId,\n PathPart = \"mydemoresource\",\n });\n\n var myDemoMethod = new Aws.ApiGateway.Method(\"MyDemoMethod\", new()\n {\n RestApi = myDemoAPI.Id,\n ResourceId = myDemoResource.Id,\n HttpMethod = \"GET\",\n Authorization = \"NONE\",\n });\n\n var myDemoIntegration = new Aws.ApiGateway.Integration(\"MyDemoIntegration\", new()\n {\n RestApi = myDemoAPI.Id,\n ResourceId = myDemoResource.Id,\n HttpMethod = myDemoMethod.HttpMethod,\n Type = \"MOCK\",\n });\n\n var response200 = new Aws.ApiGateway.MethodResponse(\"response_200\", new()\n {\n RestApi = myDemoAPI.Id,\n ResourceId = myDemoResource.Id,\n HttpMethod = myDemoMethod.HttpMethod,\n StatusCode = \"200\",\n });\n\n var myDemoIntegrationResponse = new Aws.ApiGateway.IntegrationResponse(\"MyDemoIntegrationResponse\", new()\n {\n RestApi = myDemoAPI.Id,\n ResourceId = myDemoResource.Id,\n HttpMethod = myDemoMethod.HttpMethod,\n StatusCode = response200.StatusCode,\n ResponseTemplates = \n {\n { \"application/xml\", @\"#set($inputRoot = $input.path('$'))\n\u003c?xml version=\"\"1.0\"\" encoding=\"\"UTF-8\"\"?\u003e\n\u003cmessage\u003e\n $inputRoot.body\n\u003c/message\u003e\n\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/apigateway\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyDemoAPI, err := apigateway.NewRestApi(ctx, \"MyDemoAPI\", \u0026apigateway.RestApiArgs{\n\t\t\tName: pulumi.String(\"MyDemoAPI\"),\n\t\t\tDescription: pulumi.String(\"This is my API for demonstration purposes\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyDemoResource, err := apigateway.NewResource(ctx, \"MyDemoResource\", \u0026apigateway.ResourceArgs{\n\t\t\tRestApi: myDemoAPI.ID(),\n\t\t\tParentId: myDemoAPI.RootResourceId,\n\t\t\tPathPart: pulumi.String(\"mydemoresource\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyDemoMethod, err := apigateway.NewMethod(ctx, \"MyDemoMethod\", \u0026apigateway.MethodArgs{\n\t\t\tRestApi: myDemoAPI.ID(),\n\t\t\tResourceId: myDemoResource.ID(),\n\t\t\tHttpMethod: pulumi.String(\"GET\"),\n\t\t\tAuthorization: pulumi.String(\"NONE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigateway.NewIntegration(ctx, \"MyDemoIntegration\", \u0026apigateway.IntegrationArgs{\n\t\t\tRestApi: myDemoAPI.ID(),\n\t\t\tResourceId: myDemoResource.ID(),\n\t\t\tHttpMethod: myDemoMethod.HttpMethod,\n\t\t\tType: pulumi.String(\"MOCK\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tresponse200, err := apigateway.NewMethodResponse(ctx, \"response_200\", \u0026apigateway.MethodResponseArgs{\n\t\t\tRestApi: myDemoAPI.ID(),\n\t\t\tResourceId: myDemoResource.ID(),\n\t\t\tHttpMethod: myDemoMethod.HttpMethod,\n\t\t\tStatusCode: pulumi.String(\"200\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigateway.NewIntegrationResponse(ctx, \"MyDemoIntegrationResponse\", \u0026apigateway.IntegrationResponseArgs{\n\t\t\tRestApi: myDemoAPI.ID(),\n\t\t\tResourceId: myDemoResource.ID(),\n\t\t\tHttpMethod: myDemoMethod.HttpMethod,\n\t\t\tStatusCode: response200.StatusCode,\n\t\t\tResponseTemplates: pulumi.StringMap{\n\t\t\t\t\"application/xml\": pulumi.String(`#set($inputRoot = $input.path('$'))\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cmessage\u003e\n $inputRoot.body\n\u003c/message\u003e\n`),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.apigateway.RestApi;\nimport com.pulumi.aws.apigateway.RestApiArgs;\nimport com.pulumi.aws.apigateway.Resource;\nimport com.pulumi.aws.apigateway.ResourceArgs;\nimport com.pulumi.aws.apigateway.Method;\nimport com.pulumi.aws.apigateway.MethodArgs;\nimport com.pulumi.aws.apigateway.Integration;\nimport com.pulumi.aws.apigateway.IntegrationArgs;\nimport com.pulumi.aws.apigateway.MethodResponse;\nimport com.pulumi.aws.apigateway.MethodResponseArgs;\nimport com.pulumi.aws.apigateway.IntegrationResponse;\nimport com.pulumi.aws.apigateway.IntegrationResponseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var myDemoAPI = new RestApi(\"myDemoAPI\", RestApiArgs.builder()\n .name(\"MyDemoAPI\")\n .description(\"This is my API for demonstration purposes\")\n .build());\n\n var myDemoResource = new Resource(\"myDemoResource\", ResourceArgs.builder()\n .restApi(myDemoAPI.id())\n .parentId(myDemoAPI.rootResourceId())\n .pathPart(\"mydemoresource\")\n .build());\n\n var myDemoMethod = new Method(\"myDemoMethod\", MethodArgs.builder()\n .restApi(myDemoAPI.id())\n .resourceId(myDemoResource.id())\n .httpMethod(\"GET\")\n .authorization(\"NONE\")\n .build());\n\n var myDemoIntegration = new Integration(\"myDemoIntegration\", IntegrationArgs.builder()\n .restApi(myDemoAPI.id())\n .resourceId(myDemoResource.id())\n .httpMethod(myDemoMethod.httpMethod())\n .type(\"MOCK\")\n .build());\n\n var response200 = new MethodResponse(\"response200\", MethodResponseArgs.builder()\n .restApi(myDemoAPI.id())\n .resourceId(myDemoResource.id())\n .httpMethod(myDemoMethod.httpMethod())\n .statusCode(\"200\")\n .build());\n\n var myDemoIntegrationResponse = new IntegrationResponse(\"myDemoIntegrationResponse\", IntegrationResponseArgs.builder()\n .restApi(myDemoAPI.id())\n .resourceId(myDemoResource.id())\n .httpMethod(myDemoMethod.httpMethod())\n .statusCode(response200.statusCode())\n .responseTemplates(Map.of(\"application/xml\", \"\"\"\n#set($inputRoot = $input.path('$'))\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cmessage\u003e\n $inputRoot.body\n\u003c/message\u003e\n \"\"\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myDemoAPI:\n type: aws:apigateway:RestApi\n name: MyDemoAPI\n properties:\n name: MyDemoAPI\n description: This is my API for demonstration purposes\n myDemoResource:\n type: aws:apigateway:Resource\n name: MyDemoResource\n properties:\n restApi: ${myDemoAPI.id}\n parentId: ${myDemoAPI.rootResourceId}\n pathPart: mydemoresource\n myDemoMethod:\n type: aws:apigateway:Method\n name: MyDemoMethod\n properties:\n restApi: ${myDemoAPI.id}\n resourceId: ${myDemoResource.id}\n httpMethod: GET\n authorization: NONE\n myDemoIntegration:\n type: aws:apigateway:Integration\n name: MyDemoIntegration\n properties:\n restApi: ${myDemoAPI.id}\n resourceId: ${myDemoResource.id}\n httpMethod: ${myDemoMethod.httpMethod}\n type: MOCK\n response200:\n type: aws:apigateway:MethodResponse\n name: response_200\n properties:\n restApi: ${myDemoAPI.id}\n resourceId: ${myDemoResource.id}\n httpMethod: ${myDemoMethod.httpMethod}\n statusCode: '200'\n myDemoIntegrationResponse:\n type: aws:apigateway:IntegrationResponse\n name: MyDemoIntegrationResponse\n properties:\n restApi: ${myDemoAPI.id}\n resourceId: ${myDemoResource.id}\n httpMethod: ${myDemoMethod.httpMethod}\n statusCode: ${response200.statusCode}\n responseTemplates:\n application/xml: |\n #set($inputRoot = $input.path('$'))\n \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003cmessage\u003e\n $inputRoot.body\n \u003c/message\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import `aws_api_gateway_integration_response` using `REST-API-ID/RESOURCE-ID/HTTP-METHOD/STATUS-CODE`. For example:\n\n```sh\n$ pulumi import aws:apigateway/integrationResponse:IntegrationResponse example 12345abcde/67890fghij/GET/200\n```\n", + "description": "Provides an HTTP Method Integration Response for an API Gateway Resource.\n\n\u003e **Note:** Depends on having \u003cspan pulumi-lang-nodejs=\"`aws.apigateway.Integration`\" pulumi-lang-dotnet=\"`aws.apigateway.Integration`\" pulumi-lang-go=\"`apigateway.Integration`\" pulumi-lang-python=\"`apigateway.Integration`\" pulumi-lang-yaml=\"`aws.apigateway.Integration`\" pulumi-lang-java=\"`aws.apigateway.Integration`\"\u003e`aws.apigateway.Integration`\u003c/span\u003e inside your rest api. To ensure this\nyou might need to add an explicit \u003cspan pulumi-lang-nodejs=\"`dependsOn`\" pulumi-lang-dotnet=\"`DependsOn`\" pulumi-lang-go=\"`dependsOn`\" pulumi-lang-python=\"`depends_on`\" pulumi-lang-yaml=\"`dependsOn`\" pulumi-lang-java=\"`dependsOn`\"\u003e`depends_on`\u003c/span\u003e for clean runs.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst myDemoAPI = new aws.apigateway.RestApi(\"MyDemoAPI\", {\n name: \"MyDemoAPI\",\n description: \"This is my API for demonstration purposes\",\n});\nconst myDemoResource = new aws.apigateway.Resource(\"MyDemoResource\", {\n restApi: myDemoAPI.id,\n parentId: myDemoAPI.rootResourceId,\n pathPart: \"mydemoresource\",\n});\nconst myDemoMethod = new aws.apigateway.Method(\"MyDemoMethod\", {\n restApi: myDemoAPI.id,\n resourceId: myDemoResource.id,\n httpMethod: \"GET\",\n authorization: \"NONE\",\n});\nconst myDemoIntegration = new aws.apigateway.Integration(\"MyDemoIntegration\", {\n restApi: myDemoAPI.id,\n resourceId: myDemoResource.id,\n httpMethod: myDemoMethod.httpMethod,\n type: \"MOCK\",\n});\nconst response200 = new aws.apigateway.MethodResponse(\"response_200\", {\n restApi: myDemoAPI.id,\n resourceId: myDemoResource.id,\n httpMethod: myDemoMethod.httpMethod,\n statusCode: \"200\",\n});\nconst myDemoIntegrationResponse = new aws.apigateway.IntegrationResponse(\"MyDemoIntegrationResponse\", {\n restApi: myDemoAPI.id,\n resourceId: myDemoResource.id,\n httpMethod: myDemoMethod.httpMethod,\n statusCode: response200.statusCode,\n responseTemplates: {\n \"application/xml\": `#set(inputRoot = input.path(''))\n\u003c?xml version=\\\\\"1.0\\\\\" encoding=\\\\\"UTF-8\\\\\"?\u003e\n\u003cmessage\u003e\n inputRoot.body\n\u003c/message\u003e\n`,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nmy_demo_api = aws.apigateway.RestApi(\"MyDemoAPI\",\n name=\"MyDemoAPI\",\n description=\"This is my API for demonstration purposes\")\nmy_demo_resource = aws.apigateway.Resource(\"MyDemoResource\",\n rest_api=my_demo_api.id,\n parent_id=my_demo_api.root_resource_id,\n path_part=\"mydemoresource\")\nmy_demo_method = aws.apigateway.Method(\"MyDemoMethod\",\n rest_api=my_demo_api.id,\n resource_id=my_demo_resource.id,\n http_method=\"GET\",\n authorization=\"NONE\")\nmy_demo_integration = aws.apigateway.Integration(\"MyDemoIntegration\",\n rest_api=my_demo_api.id,\n resource_id=my_demo_resource.id,\n http_method=my_demo_method.http_method,\n type=\"MOCK\")\nresponse200 = aws.apigateway.MethodResponse(\"response_200\",\n rest_api=my_demo_api.id,\n resource_id=my_demo_resource.id,\n http_method=my_demo_method.http_method,\n status_code=\"200\")\nmy_demo_integration_response = aws.apigateway.IntegrationResponse(\"MyDemoIntegrationResponse\",\n rest_api=my_demo_api.id,\n resource_id=my_demo_resource.id,\n http_method=my_demo_method.http_method,\n status_code=response200.status_code,\n response_templates={\n \"application/xml\": \"\"\"#set($inputRoot = $input.path('$'))\n\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\n\u003cmessage\u003e\n $inputRoot.body\n\u003c/message\u003e\n\"\"\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myDemoAPI = new Aws.ApiGateway.RestApi(\"MyDemoAPI\", new()\n {\n Name = \"MyDemoAPI\",\n Description = \"This is my API for demonstration purposes\",\n });\n\n var myDemoResource = new Aws.ApiGateway.Resource(\"MyDemoResource\", new()\n {\n RestApi = myDemoAPI.Id,\n ParentId = myDemoAPI.RootResourceId,\n PathPart = \"mydemoresource\",\n });\n\n var myDemoMethod = new Aws.ApiGateway.Method(\"MyDemoMethod\", new()\n {\n RestApi = myDemoAPI.Id,\n ResourceId = myDemoResource.Id,\n HttpMethod = \"GET\",\n Authorization = \"NONE\",\n });\n\n var myDemoIntegration = new Aws.ApiGateway.Integration(\"MyDemoIntegration\", new()\n {\n RestApi = myDemoAPI.Id,\n ResourceId = myDemoResource.Id,\n HttpMethod = myDemoMethod.HttpMethod,\n Type = \"MOCK\",\n });\n\n var response200 = new Aws.ApiGateway.MethodResponse(\"response_200\", new()\n {\n RestApi = myDemoAPI.Id,\n ResourceId = myDemoResource.Id,\n HttpMethod = myDemoMethod.HttpMethod,\n StatusCode = \"200\",\n });\n\n var myDemoIntegrationResponse = new Aws.ApiGateway.IntegrationResponse(\"MyDemoIntegrationResponse\", new()\n {\n RestApi = myDemoAPI.Id,\n ResourceId = myDemoResource.Id,\n HttpMethod = myDemoMethod.HttpMethod,\n StatusCode = response200.StatusCode,\n ResponseTemplates = \n {\n { \"application/xml\", @\"#set($inputRoot = $input.path('$'))\n\u003c?xml version=\\\"\"1.0\\\"\" encoding=\\\"\"UTF-8\\\"\"?\u003e\n\u003cmessage\u003e\n $inputRoot.body\n\u003c/message\u003e\n\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/apigateway\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyDemoAPI, err := apigateway.NewRestApi(ctx, \"MyDemoAPI\", \u0026apigateway.RestApiArgs{\n\t\t\tName: pulumi.String(\"MyDemoAPI\"),\n\t\t\tDescription: pulumi.String(\"This is my API for demonstration purposes\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyDemoResource, err := apigateway.NewResource(ctx, \"MyDemoResource\", \u0026apigateway.ResourceArgs{\n\t\t\tRestApi: myDemoAPI.ID(),\n\t\t\tParentId: myDemoAPI.RootResourceId,\n\t\t\tPathPart: pulumi.String(\"mydemoresource\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyDemoMethod, err := apigateway.NewMethod(ctx, \"MyDemoMethod\", \u0026apigateway.MethodArgs{\n\t\t\tRestApi: myDemoAPI.ID(),\n\t\t\tResourceId: myDemoResource.ID(),\n\t\t\tHttpMethod: pulumi.String(\"GET\"),\n\t\t\tAuthorization: pulumi.String(\"NONE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigateway.NewIntegration(ctx, \"MyDemoIntegration\", \u0026apigateway.IntegrationArgs{\n\t\t\tRestApi: myDemoAPI.ID(),\n\t\t\tResourceId: myDemoResource.ID(),\n\t\t\tHttpMethod: myDemoMethod.HttpMethod,\n\t\t\tType: pulumi.String(\"MOCK\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tresponse200, err := apigateway.NewMethodResponse(ctx, \"response_200\", \u0026apigateway.MethodResponseArgs{\n\t\t\tRestApi: myDemoAPI.ID(),\n\t\t\tResourceId: myDemoResource.ID(),\n\t\t\tHttpMethod: myDemoMethod.HttpMethod,\n\t\t\tStatusCode: pulumi.String(\"200\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigateway.NewIntegrationResponse(ctx, \"MyDemoIntegrationResponse\", \u0026apigateway.IntegrationResponseArgs{\n\t\t\tRestApi: myDemoAPI.ID(),\n\t\t\tResourceId: myDemoResource.ID(),\n\t\t\tHttpMethod: myDemoMethod.HttpMethod,\n\t\t\tStatusCode: response200.StatusCode,\n\t\t\tResponseTemplates: pulumi.StringMap{\n\t\t\t\t\"application/xml\": pulumi.String(`#set($inputRoot = $input.path('$'))\n\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\n\u003cmessage\u003e\n $inputRoot.body\n\u003c/message\u003e\n`),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.apigateway.RestApi;\nimport com.pulumi.aws.apigateway.RestApiArgs;\nimport com.pulumi.aws.apigateway.Resource;\nimport com.pulumi.aws.apigateway.ResourceArgs;\nimport com.pulumi.aws.apigateway.Method;\nimport com.pulumi.aws.apigateway.MethodArgs;\nimport com.pulumi.aws.apigateway.Integration;\nimport com.pulumi.aws.apigateway.IntegrationArgs;\nimport com.pulumi.aws.apigateway.MethodResponse;\nimport com.pulumi.aws.apigateway.MethodResponseArgs;\nimport com.pulumi.aws.apigateway.IntegrationResponse;\nimport com.pulumi.aws.apigateway.IntegrationResponseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var myDemoAPI = new RestApi(\"myDemoAPI\", RestApiArgs.builder()\n .name(\"MyDemoAPI\")\n .description(\"This is my API for demonstration purposes\")\n .build());\n\n var myDemoResource = new Resource(\"myDemoResource\", ResourceArgs.builder()\n .restApi(myDemoAPI.id())\n .parentId(myDemoAPI.rootResourceId())\n .pathPart(\"mydemoresource\")\n .build());\n\n var myDemoMethod = new Method(\"myDemoMethod\", MethodArgs.builder()\n .restApi(myDemoAPI.id())\n .resourceId(myDemoResource.id())\n .httpMethod(\"GET\")\n .authorization(\"NONE\")\n .build());\n\n var myDemoIntegration = new Integration(\"myDemoIntegration\", IntegrationArgs.builder()\n .restApi(myDemoAPI.id())\n .resourceId(myDemoResource.id())\n .httpMethod(myDemoMethod.httpMethod())\n .type(\"MOCK\")\n .build());\n\n var response200 = new MethodResponse(\"response200\", MethodResponseArgs.builder()\n .restApi(myDemoAPI.id())\n .resourceId(myDemoResource.id())\n .httpMethod(myDemoMethod.httpMethod())\n .statusCode(\"200\")\n .build());\n\n var myDemoIntegrationResponse = new IntegrationResponse(\"myDemoIntegrationResponse\", IntegrationResponseArgs.builder()\n .restApi(myDemoAPI.id())\n .resourceId(myDemoResource.id())\n .httpMethod(myDemoMethod.httpMethod())\n .statusCode(response200.statusCode())\n .responseTemplates(Map.of(\"application/xml\", \"\"\"\n#set($inputRoot = $input.path('$'))\n\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\n\u003cmessage\u003e\n $inputRoot.body\n\u003c/message\u003e\n \"\"\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myDemoAPI:\n type: aws:apigateway:RestApi\n name: MyDemoAPI\n properties:\n name: MyDemoAPI\n description: This is my API for demonstration purposes\n myDemoResource:\n type: aws:apigateway:Resource\n name: MyDemoResource\n properties:\n restApi: ${myDemoAPI.id}\n parentId: ${myDemoAPI.rootResourceId}\n pathPart: mydemoresource\n myDemoMethod:\n type: aws:apigateway:Method\n name: MyDemoMethod\n properties:\n restApi: ${myDemoAPI.id}\n resourceId: ${myDemoResource.id}\n httpMethod: GET\n authorization: NONE\n myDemoIntegration:\n type: aws:apigateway:Integration\n name: MyDemoIntegration\n properties:\n restApi: ${myDemoAPI.id}\n resourceId: ${myDemoResource.id}\n httpMethod: ${myDemoMethod.httpMethod}\n type: MOCK\n response200:\n type: aws:apigateway:MethodResponse\n name: response_200\n properties:\n restApi: ${myDemoAPI.id}\n resourceId: ${myDemoResource.id}\n httpMethod: ${myDemoMethod.httpMethod}\n statusCode: '200'\n myDemoIntegrationResponse:\n type: aws:apigateway:IntegrationResponse\n name: MyDemoIntegrationResponse\n properties:\n restApi: ${myDemoAPI.id}\n resourceId: ${myDemoResource.id}\n httpMethod: ${myDemoMethod.httpMethod}\n statusCode: ${response200.statusCode}\n responseTemplates:\n application/xml: |\n #set($inputRoot = $input.path('$'))\n \u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\n \u003cmessage\u003e\n $inputRoot.body\n \u003c/message\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import `aws_api_gateway_integration_response` using `REST-API-ID/RESOURCE-ID/HTTP-METHOD/STATUS-CODE`. For example:\n\n```sh\n$ pulumi import aws:apigateway/integrationResponse:IntegrationResponse example 12345abcde/67890fghij/GET/200\n```\n", "properties": { "contentHandling": { "type": "string", @@ -208328,7 +208328,7 @@ } }, "aws:appsync/function:Function": { - "description": "Provides an AppSync Function.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.appsync.GraphQLApi(\"example\", {\n authenticationType: \"API_KEY\",\n name: \"example\",\n schema: `type Mutation {\n putPost(id: ID!, title: String!): Post\n}\n\ntype Post {\n id: ID!\n title: String!\n}\n\ntype Query {\n singlePost(id: ID!): Post\n}\n\nschema {\n query: Query\n mutation: Mutation\n}\n`,\n});\nconst exampleDataSource = new aws.appsync.DataSource(\"example\", {\n apiId: example.id,\n name: \"example\",\n type: \"HTTP\",\n httpConfig: {\n endpoint: \"http://example.com\",\n },\n});\nconst exampleFunction = new aws.appsync.Function(\"example\", {\n apiId: example.id,\n dataSource: exampleDataSource.name,\n name: \"example\",\n requestMappingTemplate: `{\n \"version\": \"2018-05-29\",\n \"method\": \"GET\",\n \"resourcePath\": \"/\",\n \"params\":{\n \"headers\": utils.http.copyheaders(ctx.request.headers)\n }\n}\n`,\n responseMappingTemplate: `#if(ctx.result.statusCode == 200)\n ctx.result.body\n#else\n utils.appendError(ctx.result.body, ctx.result.statusCode)\n#end\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.appsync.GraphQLApi(\"example\",\n authentication_type=\"API_KEY\",\n name=\"example\",\n schema=\"\"\"type Mutation {\n putPost(id: ID!, title: String!): Post\n}\n\ntype Post {\n id: ID!\n title: String!\n}\n\ntype Query {\n singlePost(id: ID!): Post\n}\n\nschema {\n query: Query\n mutation: Mutation\n}\n\"\"\")\nexample_data_source = aws.appsync.DataSource(\"example\",\n api_id=example.id,\n name=\"example\",\n type=\"HTTP\",\n http_config={\n \"endpoint\": \"http://example.com\",\n })\nexample_function = aws.appsync.Function(\"example\",\n api_id=example.id,\n data_source=example_data_source.name,\n name=\"example\",\n request_mapping_template=\"\"\"{\n \"version\": \"2018-05-29\",\n \"method\": \"GET\",\n \"resourcePath\": \"/\",\n \"params\":{\n \"headers\": $utils.http.copyheaders($ctx.request.headers)\n }\n}\n\"\"\",\n response_mapping_template=\"\"\"#if($ctx.result.statusCode == 200)\n $ctx.result.body\n#else\n $utils.appendError($ctx.result.body, $ctx.result.statusCode)\n#end\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.GraphQLApi(\"example\", new()\n {\n AuthenticationType = \"API_KEY\",\n Name = \"example\",\n Schema = @\"type Mutation {\n putPost(id: ID!, title: String!): Post\n}\n\ntype Post {\n id: ID!\n title: String!\n}\n\ntype Query {\n singlePost(id: ID!): Post\n}\n\nschema {\n query: Query\n mutation: Mutation\n}\n\",\n });\n\n var exampleDataSource = new Aws.AppSync.DataSource(\"example\", new()\n {\n ApiId = example.Id,\n Name = \"example\",\n Type = \"HTTP\",\n HttpConfig = new Aws.AppSync.Inputs.DataSourceHttpConfigArgs\n {\n Endpoint = \"http://example.com\",\n },\n });\n\n var exampleFunction = new Aws.AppSync.Function(\"example\", new()\n {\n ApiId = example.Id,\n DataSource = exampleDataSource.Name,\n Name = \"example\",\n RequestMappingTemplate = @\"{\n \"\"version\"\": \"\"2018-05-29\"\",\n \"\"method\"\": \"\"GET\"\",\n \"\"resourcePath\"\": \"\"/\"\",\n \"\"params\"\":{\n \"\"headers\"\": $utils.http.copyheaders($ctx.request.headers)\n }\n}\n\",\n ResponseMappingTemplate = @\"#if($ctx.result.statusCode == 200)\n $ctx.result.body\n#else\n $utils.appendError($ctx.result.body, $ctx.result.statusCode)\n#end\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := appsync.NewGraphQLApi(ctx, \"example\", \u0026appsync.GraphQLApiArgs{\n\t\t\tAuthenticationType: pulumi.String(\"API_KEY\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tSchema: pulumi.String(`type Mutation {\n putPost(id: ID!, title: String!): Post\n}\n\ntype Post {\n id: ID!\n title: String!\n}\n\ntype Query {\n singlePost(id: ID!): Post\n}\n\nschema {\n query: Query\n mutation: Mutation\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDataSource, err := appsync.NewDataSource(ctx, \"example\", \u0026appsync.DataSourceArgs{\n\t\t\tApiId: example.ID(),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tType: pulumi.String(\"HTTP\"),\n\t\t\tHttpConfig: \u0026appsync.DataSourceHttpConfigArgs{\n\t\t\t\tEndpoint: pulumi.String(\"http://example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appsync.NewFunction(ctx, \"example\", \u0026appsync.FunctionArgs{\n\t\t\tApiId: example.ID(),\n\t\t\tDataSource: exampleDataSource.Name,\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tRequestMappingTemplate: pulumi.String(`{\n \"version\": \"2018-05-29\",\n \"method\": \"GET\",\n \"resourcePath\": \"/\",\n \"params\":{\n \"headers\": $utils.http.copyheaders($ctx.request.headers)\n }\n}\n`),\n\t\t\tResponseMappingTemplate: pulumi.String(`#if($ctx.result.statusCode == 200)\n $ctx.result.body\n#else\n $utils.appendError($ctx.result.body, $ctx.result.statusCode)\n#end\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport com.pulumi.aws.appsync.DataSource;\nimport com.pulumi.aws.appsync.DataSourceArgs;\nimport com.pulumi.aws.appsync.inputs.DataSourceHttpConfigArgs;\nimport com.pulumi.aws.appsync.Function;\nimport com.pulumi.aws.appsync.FunctionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new GraphQLApi(\"example\", GraphQLApiArgs.builder()\n .authenticationType(\"API_KEY\")\n .name(\"example\")\n .schema(\"\"\"\ntype Mutation {\n putPost(id: ID!, title: String!): Post\n}\n\ntype Post {\n id: ID!\n title: String!\n}\n\ntype Query {\n singlePost(id: ID!): Post\n}\n\nschema {\n query: Query\n mutation: Mutation\n}\n \"\"\")\n .build());\n\n var exampleDataSource = new DataSource(\"exampleDataSource\", DataSourceArgs.builder()\n .apiId(example.id())\n .name(\"example\")\n .type(\"HTTP\")\n .httpConfig(DataSourceHttpConfigArgs.builder()\n .endpoint(\"http://example.com\")\n .build())\n .build());\n\n var exampleFunction = new Function(\"exampleFunction\", FunctionArgs.builder()\n .apiId(example.id())\n .dataSource(exampleDataSource.name())\n .name(\"example\")\n .requestMappingTemplate(\"\"\"\n{\n \"version\": \"2018-05-29\",\n \"method\": \"GET\",\n \"resourcePath\": \"/\",\n \"params\":{\n \"headers\": $utils.http.copyheaders($ctx.request.headers)\n }\n}\n \"\"\")\n .responseMappingTemplate(\"\"\"\n#if($ctx.result.statusCode == 200)\n $ctx.result.body\n#else\n $utils.appendError($ctx.result.body, $ctx.result.statusCode)\n#end\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: API_KEY\n name: example\n schema: |\n type Mutation {\n putPost(id: ID!, title: String!): Post\n }\n\n type Post {\n id: ID!\n title: String!\n }\n\n type Query {\n singlePost(id: ID!): Post\n }\n\n schema {\n query: Query\n mutation: Mutation\n }\n exampleDataSource:\n type: aws:appsync:DataSource\n name: example\n properties:\n apiId: ${example.id}\n name: example\n type: HTTP\n httpConfig:\n endpoint: http://example.com\n exampleFunction:\n type: aws:appsync:Function\n name: example\n properties:\n apiId: ${example.id}\n dataSource: ${exampleDataSource.name}\n name: example\n requestMappingTemplate: |\n {\n \"version\": \"2018-05-29\",\n \"method\": \"GET\",\n \"resourcePath\": \"/\",\n \"params\":{\n \"headers\": $utils.http.copyheaders($ctx.request.headers)\n }\n }\n responseMappingTemplate: |\n #if($ctx.result.statusCode == 200)\n $ctx.result.body\n #else\n $utils.appendError($ctx.result.body, $ctx.result.statusCode)\n #end\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Code\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new aws.appsync.Function(\"example\", {\n apiId: exampleAwsAppsyncGraphqlApi.id,\n dataSource: exampleAwsAppsyncDatasource.name,\n name: \"example\",\n code: std.file({\n input: \"some-code-dir\",\n }).then(invoke =\u003e invoke.result),\n runtime: {\n name: \"APPSYNC_JS\",\n runtimeVersion: \"1.0.0\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.appsync.Function(\"example\",\n api_id=example_aws_appsync_graphql_api[\"id\"],\n data_source=example_aws_appsync_datasource[\"name\"],\n name=\"example\",\n code=std.file(input=\"some-code-dir\").result,\n runtime={\n \"name\": \"APPSYNC_JS\",\n \"runtime_version\": \"1.0.0\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.Function(\"example\", new()\n {\n ApiId = exampleAwsAppsyncGraphqlApi.Id,\n DataSource = exampleAwsAppsyncDatasource.Name,\n Name = \"example\",\n Code = Std.File.Invoke(new()\n {\n Input = \"some-code-dir\",\n }).Apply(invoke =\u003e invoke.Result),\n Runtime = new Aws.AppSync.Inputs.FunctionRuntimeArgs\n {\n Name = \"APPSYNC_JS\",\n RuntimeVersion = \"1.0.0\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"some-code-dir\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appsync.NewFunction(ctx, \"example\", \u0026appsync.FunctionArgs{\n\t\t\tApiId: pulumi.Any(exampleAwsAppsyncGraphqlApi.Id),\n\t\t\tDataSource: pulumi.Any(exampleAwsAppsyncDatasource.Name),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tCode: pulumi.String(invokeFile.Result),\n\t\t\tRuntime: \u0026appsync.FunctionRuntimeArgs{\n\t\t\t\tName: pulumi.String(\"APPSYNC_JS\"),\n\t\t\t\tRuntimeVersion: pulumi.String(\"1.0.0\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.Function;\nimport com.pulumi.aws.appsync.FunctionArgs;\nimport com.pulumi.aws.appsync.inputs.FunctionRuntimeArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Function(\"example\", FunctionArgs.builder()\n .apiId(exampleAwsAppsyncGraphqlApi.id())\n .dataSource(exampleAwsAppsyncDatasource.name())\n .name(\"example\")\n .code(StdFunctions.file(FileArgs.builder()\n .input(\"some-code-dir\")\n .build()).result())\n .runtime(FunctionRuntimeArgs.builder()\n .name(\"APPSYNC_JS\")\n .runtimeVersion(\"1.0.0\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:Function\n properties:\n apiId: ${exampleAwsAppsyncGraphqlApi.id}\n dataSource: ${exampleAwsAppsyncDatasource.name}\n name: example\n code:\n fn::invoke:\n function: std:file\n arguments:\n input: some-code-dir\n return: result\n runtime:\n name: APPSYNC_JS\n runtimeVersion: 1.0.0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import `aws_appsync_function` using the AppSync API ID and Function ID separated by `-`. For example:\n\n```sh\n$ pulumi import aws:appsync/function:Function example xxxxx-yyyyy\n```\n", + "description": "Provides an AppSync Function.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.appsync.GraphQLApi(\"example\", {\n authenticationType: \"API_KEY\",\n name: \"example\",\n schema: `type Mutation {\n putPost(id: ID!, title: String!): Post\n}\n\ntype Post {\n id: ID!\n title: String!\n}\n\ntype Query {\n singlePost(id: ID!): Post\n}\n\nschema {\n query: Query\n mutation: Mutation\n}\n`,\n});\nconst exampleDataSource = new aws.appsync.DataSource(\"example\", {\n apiId: example.id,\n name: \"example\",\n type: \"HTTP\",\n httpConfig: {\n endpoint: \"http://example.com\",\n },\n});\nconst exampleFunction = new aws.appsync.Function(\"example\", {\n apiId: example.id,\n dataSource: exampleDataSource.name,\n name: \"example\",\n requestMappingTemplate: `{\n \\\\\"version\\\\\": \\\\\"2018-05-29\\\\\",\n \\\\\"method\\\\\": \\\\\"GET\\\\\",\n \\\\\"resourcePath\\\\\": \\\\\"/\\\\\",\n \\\\\"params\\\\\":{\n \\\\\"headers\\\\\": utils.http.copyheaders(ctx.request.headers)\n }\n}\n`,\n responseMappingTemplate: `#if(ctx.result.statusCode == 200)\n ctx.result.body\n#else\n utils.appendError(ctx.result.body, ctx.result.statusCode)\n#end\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.appsync.GraphQLApi(\"example\",\n authentication_type=\"API_KEY\",\n name=\"example\",\n schema=\"\"\"type Mutation {\n putPost(id: ID!, title: String!): Post\n}\n\ntype Post {\n id: ID!\n title: String!\n}\n\ntype Query {\n singlePost(id: ID!): Post\n}\n\nschema {\n query: Query\n mutation: Mutation\n}\n\"\"\")\nexample_data_source = aws.appsync.DataSource(\"example\",\n api_id=example.id,\n name=\"example\",\n type=\"HTTP\",\n http_config={\n \"endpoint\": \"http://example.com\",\n })\nexample_function = aws.appsync.Function(\"example\",\n api_id=example.id,\n data_source=example_data_source.name,\n name=\"example\",\n request_mapping_template=\"\"\"{\n \\\"version\\\": \\\"2018-05-29\\\",\n \\\"method\\\": \\\"GET\\\",\n \\\"resourcePath\\\": \\\"/\\\",\n \\\"params\\\":{\n \\\"headers\\\": $utils.http.copyheaders($ctx.request.headers)\n }\n}\n\"\"\",\n response_mapping_template=\"\"\"#if($ctx.result.statusCode == 200)\n $ctx.result.body\n#else\n $utils.appendError($ctx.result.body, $ctx.result.statusCode)\n#end\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.GraphQLApi(\"example\", new()\n {\n AuthenticationType = \"API_KEY\",\n Name = \"example\",\n Schema = @\"type Mutation {\n putPost(id: ID!, title: String!): Post\n}\n\ntype Post {\n id: ID!\n title: String!\n}\n\ntype Query {\n singlePost(id: ID!): Post\n}\n\nschema {\n query: Query\n mutation: Mutation\n}\n\",\n });\n\n var exampleDataSource = new Aws.AppSync.DataSource(\"example\", new()\n {\n ApiId = example.Id,\n Name = \"example\",\n Type = \"HTTP\",\n HttpConfig = new Aws.AppSync.Inputs.DataSourceHttpConfigArgs\n {\n Endpoint = \"http://example.com\",\n },\n });\n\n var exampleFunction = new Aws.AppSync.Function(\"example\", new()\n {\n ApiId = example.Id,\n DataSource = exampleDataSource.Name,\n Name = \"example\",\n RequestMappingTemplate = @\"{\n \\\"\"version\\\"\": \\\"\"2018-05-29\\\"\",\n \\\"\"method\\\"\": \\\"\"GET\\\"\",\n \\\"\"resourcePath\\\"\": \\\"\"/\\\"\",\n \\\"\"params\\\"\":{\n \\\"\"headers\\\"\": $utils.http.copyheaders($ctx.request.headers)\n }\n}\n\",\n ResponseMappingTemplate = @\"#if($ctx.result.statusCode == 200)\n $ctx.result.body\n#else\n $utils.appendError($ctx.result.body, $ctx.result.statusCode)\n#end\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := appsync.NewGraphQLApi(ctx, \"example\", \u0026appsync.GraphQLApiArgs{\n\t\t\tAuthenticationType: pulumi.String(\"API_KEY\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tSchema: pulumi.String(`type Mutation {\n putPost(id: ID!, title: String!): Post\n}\n\ntype Post {\n id: ID!\n title: String!\n}\n\ntype Query {\n singlePost(id: ID!): Post\n}\n\nschema {\n query: Query\n mutation: Mutation\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDataSource, err := appsync.NewDataSource(ctx, \"example\", \u0026appsync.DataSourceArgs{\n\t\t\tApiId: example.ID(),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tType: pulumi.String(\"HTTP\"),\n\t\t\tHttpConfig: \u0026appsync.DataSourceHttpConfigArgs{\n\t\t\t\tEndpoint: pulumi.String(\"http://example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appsync.NewFunction(ctx, \"example\", \u0026appsync.FunctionArgs{\n\t\t\tApiId: example.ID(),\n\t\t\tDataSource: exampleDataSource.Name,\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tRequestMappingTemplate: pulumi.String(`{\n \\\"version\\\": \\\"2018-05-29\\\",\n \\\"method\\\": \\\"GET\\\",\n \\\"resourcePath\\\": \\\"/\\\",\n \\\"params\\\":{\n \\\"headers\\\": $utils.http.copyheaders($ctx.request.headers)\n }\n}\n`),\n\t\t\tResponseMappingTemplate: pulumi.String(`#if($ctx.result.statusCode == 200)\n $ctx.result.body\n#else\n $utils.appendError($ctx.result.body, $ctx.result.statusCode)\n#end\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport com.pulumi.aws.appsync.DataSource;\nimport com.pulumi.aws.appsync.DataSourceArgs;\nimport com.pulumi.aws.appsync.inputs.DataSourceHttpConfigArgs;\nimport com.pulumi.aws.appsync.Function;\nimport com.pulumi.aws.appsync.FunctionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new GraphQLApi(\"example\", GraphQLApiArgs.builder()\n .authenticationType(\"API_KEY\")\n .name(\"example\")\n .schema(\"\"\"\ntype Mutation {\n putPost(id: ID!, title: String!): Post\n}\n\ntype Post {\n id: ID!\n title: String!\n}\n\ntype Query {\n singlePost(id: ID!): Post\n}\n\nschema {\n query: Query\n mutation: Mutation\n}\n \"\"\")\n .build());\n\n var exampleDataSource = new DataSource(\"exampleDataSource\", DataSourceArgs.builder()\n .apiId(example.id())\n .name(\"example\")\n .type(\"HTTP\")\n .httpConfig(DataSourceHttpConfigArgs.builder()\n .endpoint(\"http://example.com\")\n .build())\n .build());\n\n var exampleFunction = new Function(\"exampleFunction\", FunctionArgs.builder()\n .apiId(example.id())\n .dataSource(exampleDataSource.name())\n .name(\"example\")\n .requestMappingTemplate(\"\"\"\n{\n \\\"version\\\": \\\"2018-05-29\\\",\n \\\"method\\\": \\\"GET\\\",\n \\\"resourcePath\\\": \\\"/\\\",\n \\\"params\\\":{\n \\\"headers\\\": $utils.http.copyheaders($ctx.request.headers)\n }\n}\n \"\"\")\n .responseMappingTemplate(\"\"\"\n#if($ctx.result.statusCode == 200)\n $ctx.result.body\n#else\n $utils.appendError($ctx.result.body, $ctx.result.statusCode)\n#end\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: API_KEY\n name: example\n schema: |\n type Mutation {\n putPost(id: ID!, title: String!): Post\n }\n\n type Post {\n id: ID!\n title: String!\n }\n\n type Query {\n singlePost(id: ID!): Post\n }\n\n schema {\n query: Query\n mutation: Mutation\n }\n exampleDataSource:\n type: aws:appsync:DataSource\n name: example\n properties:\n apiId: ${example.id}\n name: example\n type: HTTP\n httpConfig:\n endpoint: http://example.com\n exampleFunction:\n type: aws:appsync:Function\n name: example\n properties:\n apiId: ${example.id}\n dataSource: ${exampleDataSource.name}\n name: example\n requestMappingTemplate: |\n {\n \\\"version\\\": \\\"2018-05-29\\\",\n \\\"method\\\": \\\"GET\\\",\n \\\"resourcePath\\\": \\\"/\\\",\n \\\"params\\\":{\n \\\"headers\\\": $utils.http.copyheaders($ctx.request.headers)\n }\n }\n responseMappingTemplate: |\n #if($ctx.result.statusCode == 200)\n $ctx.result.body\n #else\n $utils.appendError($ctx.result.body, $ctx.result.statusCode)\n #end\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Code\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new aws.appsync.Function(\"example\", {\n apiId: exampleAwsAppsyncGraphqlApi.id,\n dataSource: exampleAwsAppsyncDatasource.name,\n name: \"example\",\n code: std.file({\n input: \"some-code-dir\",\n }).then(invoke =\u003e invoke.result),\n runtime: {\n name: \"APPSYNC_JS\",\n runtimeVersion: \"1.0.0\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.appsync.Function(\"example\",\n api_id=example_aws_appsync_graphql_api[\"id\"],\n data_source=example_aws_appsync_datasource[\"name\"],\n name=\"example\",\n code=std.file(input=\"some-code-dir\").result,\n runtime={\n \"name\": \"APPSYNC_JS\",\n \"runtime_version\": \"1.0.0\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.Function(\"example\", new()\n {\n ApiId = exampleAwsAppsyncGraphqlApi.Id,\n DataSource = exampleAwsAppsyncDatasource.Name,\n Name = \"example\",\n Code = Std.File.Invoke(new()\n {\n Input = \"some-code-dir\",\n }).Apply(invoke =\u003e invoke.Result),\n Runtime = new Aws.AppSync.Inputs.FunctionRuntimeArgs\n {\n Name = \"APPSYNC_JS\",\n RuntimeVersion = \"1.0.0\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"some-code-dir\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appsync.NewFunction(ctx, \"example\", \u0026appsync.FunctionArgs{\n\t\t\tApiId: pulumi.Any(exampleAwsAppsyncGraphqlApi.Id),\n\t\t\tDataSource: pulumi.Any(exampleAwsAppsyncDatasource.Name),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tCode: pulumi.String(invokeFile.Result),\n\t\t\tRuntime: \u0026appsync.FunctionRuntimeArgs{\n\t\t\t\tName: pulumi.String(\"APPSYNC_JS\"),\n\t\t\t\tRuntimeVersion: pulumi.String(\"1.0.0\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.Function;\nimport com.pulumi.aws.appsync.FunctionArgs;\nimport com.pulumi.aws.appsync.inputs.FunctionRuntimeArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Function(\"example\", FunctionArgs.builder()\n .apiId(exampleAwsAppsyncGraphqlApi.id())\n .dataSource(exampleAwsAppsyncDatasource.name())\n .name(\"example\")\n .code(StdFunctions.file(FileArgs.builder()\n .input(\"some-code-dir\")\n .build()).result())\n .runtime(FunctionRuntimeArgs.builder()\n .name(\"APPSYNC_JS\")\n .runtimeVersion(\"1.0.0\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:Function\n properties:\n apiId: ${exampleAwsAppsyncGraphqlApi.id}\n dataSource: ${exampleAwsAppsyncDatasource.name}\n name: example\n code:\n fn::invoke:\n function: std:file\n arguments:\n input: some-code-dir\n return: result\n runtime:\n name: APPSYNC_JS\n runtimeVersion: 1.0.0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import `aws_appsync_function` using the AppSync API ID and Function ID separated by `-`. For example:\n\n```sh\n$ pulumi import aws:appsync/function:Function example xxxxx-yyyyy\n```\n", "properties": { "apiId": { "type": "string", @@ -208516,7 +208516,7 @@ } }, "aws:appsync/graphQLApi:GraphQLApi": { - "description": "Provides an AppSync GraphQL API.\n\n## Example Usage\n\n### API Key Authentication\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.appsync.GraphQLApi(\"example\", {\n authenticationType: \"API_KEY\",\n name: \"example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.appsync.GraphQLApi(\"example\",\n authentication_type=\"API_KEY\",\n name=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.GraphQLApi(\"example\", new()\n {\n AuthenticationType = \"API_KEY\",\n Name = \"example\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := appsync.NewGraphQLApi(ctx, \"example\", \u0026appsync.GraphQLApiArgs{\n\t\t\tAuthenticationType: pulumi.String(\"API_KEY\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new GraphQLApi(\"example\", GraphQLApiArgs.builder()\n .authenticationType(\"API_KEY\")\n .name(\"example\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: API_KEY\n name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### AWS IAM Authentication\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.appsync.GraphQLApi(\"example\", {\n authenticationType: \"AWS_IAM\",\n name: \"example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.appsync.GraphQLApi(\"example\",\n authentication_type=\"AWS_IAM\",\n name=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.GraphQLApi(\"example\", new()\n {\n AuthenticationType = \"AWS_IAM\",\n Name = \"example\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := appsync.NewGraphQLApi(ctx, \"example\", \u0026appsync.GraphQLApiArgs{\n\t\t\tAuthenticationType: pulumi.String(\"AWS_IAM\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new GraphQLApi(\"example\", GraphQLApiArgs.builder()\n .authenticationType(\"AWS_IAM\")\n .name(\"example\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: AWS_IAM\n name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### AWS Cognito User Pool Authentication\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.appsync.GraphQLApi(\"example\", {\n authenticationType: \"AMAZON_COGNITO_USER_POOLS\",\n name: \"example\",\n userPoolConfig: {\n awsRegion: current.region,\n defaultAction: \"DENY\",\n userPoolId: exampleAwsCognitoUserPool.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.appsync.GraphQLApi(\"example\",\n authentication_type=\"AMAZON_COGNITO_USER_POOLS\",\n name=\"example\",\n user_pool_config={\n \"aws_region\": current[\"region\"],\n \"default_action\": \"DENY\",\n \"user_pool_id\": example_aws_cognito_user_pool[\"id\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.GraphQLApi(\"example\", new()\n {\n AuthenticationType = \"AMAZON_COGNITO_USER_POOLS\",\n Name = \"example\",\n UserPoolConfig = new Aws.AppSync.Inputs.GraphQLApiUserPoolConfigArgs\n {\n AwsRegion = current.Region,\n DefaultAction = \"DENY\",\n UserPoolId = exampleAwsCognitoUserPool.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := appsync.NewGraphQLApi(ctx, \"example\", \u0026appsync.GraphQLApiArgs{\n\t\t\tAuthenticationType: pulumi.String(\"AMAZON_COGNITO_USER_POOLS\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tUserPoolConfig: \u0026appsync.GraphQLApiUserPoolConfigArgs{\n\t\t\t\tAwsRegion: pulumi.Any(current.Region),\n\t\t\t\tDefaultAction: pulumi.String(\"DENY\"),\n\t\t\t\tUserPoolId: pulumi.Any(exampleAwsCognitoUserPool.Id),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport com.pulumi.aws.appsync.inputs.GraphQLApiUserPoolConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new GraphQLApi(\"example\", GraphQLApiArgs.builder()\n .authenticationType(\"AMAZON_COGNITO_USER_POOLS\")\n .name(\"example\")\n .userPoolConfig(GraphQLApiUserPoolConfigArgs.builder()\n .awsRegion(current.region())\n .defaultAction(\"DENY\")\n .userPoolId(exampleAwsCognitoUserPool.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: AMAZON_COGNITO_USER_POOLS\n name: example\n userPoolConfig:\n awsRegion: ${current.region}\n defaultAction: DENY\n userPoolId: ${exampleAwsCognitoUserPool.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenID Connect Authentication\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.appsync.GraphQLApi(\"example\", {\n authenticationType: \"OPENID_CONNECT\",\n name: \"example\",\n openidConnectConfig: {\n issuer: \"https://example.com\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.appsync.GraphQLApi(\"example\",\n authentication_type=\"OPENID_CONNECT\",\n name=\"example\",\n openid_connect_config={\n \"issuer\": \"https://example.com\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.GraphQLApi(\"example\", new()\n {\n AuthenticationType = \"OPENID_CONNECT\",\n Name = \"example\",\n OpenidConnectConfig = new Aws.AppSync.Inputs.GraphQLApiOpenidConnectConfigArgs\n {\n Issuer = \"https://example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := appsync.NewGraphQLApi(ctx, \"example\", \u0026appsync.GraphQLApiArgs{\n\t\t\tAuthenticationType: pulumi.String(\"OPENID_CONNECT\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tOpenidConnectConfig: \u0026appsync.GraphQLApiOpenidConnectConfigArgs{\n\t\t\t\tIssuer: pulumi.String(\"https://example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport com.pulumi.aws.appsync.inputs.GraphQLApiOpenidConnectConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new GraphQLApi(\"example\", GraphQLApiArgs.builder()\n .authenticationType(\"OPENID_CONNECT\")\n .name(\"example\")\n .openidConnectConfig(GraphQLApiOpenidConnectConfigArgs.builder()\n .issuer(\"https://example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: OPENID_CONNECT\n name: example\n openidConnectConfig:\n issuer: https://example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### AWS Lambda Authorizer Authentication\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.appsync.GraphQLApi(\"example\", {\n authenticationType: \"AWS_LAMBDA\",\n name: \"example\",\n lambdaAuthorizerConfig: {\n authorizerUri: \"arn:aws:lambda:us-east-1:123456789012:function:custom_lambda_authorizer\",\n },\n});\nconst appsyncLambdaAuthorizer = new aws.lambda.Permission(\"appsync_lambda_authorizer\", {\n statementId: \"appsync_lambda_authorizer\",\n action: \"lambda:InvokeFunction\",\n \"function\": \"custom_lambda_authorizer\",\n principal: \"appsync.amazonaws.com\",\n sourceArn: example.arn,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.appsync.GraphQLApi(\"example\",\n authentication_type=\"AWS_LAMBDA\",\n name=\"example\",\n lambda_authorizer_config={\n \"authorizer_uri\": \"arn:aws:lambda:us-east-1:123456789012:function:custom_lambda_authorizer\",\n })\nappsync_lambda_authorizer = aws.lambda_.Permission(\"appsync_lambda_authorizer\",\n statement_id=\"appsync_lambda_authorizer\",\n action=\"lambda:InvokeFunction\",\n function=\"custom_lambda_authorizer\",\n principal=\"appsync.amazonaws.com\",\n source_arn=example.arn)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.GraphQLApi(\"example\", new()\n {\n AuthenticationType = \"AWS_LAMBDA\",\n Name = \"example\",\n LambdaAuthorizerConfig = new Aws.AppSync.Inputs.GraphQLApiLambdaAuthorizerConfigArgs\n {\n AuthorizerUri = \"arn:aws:lambda:us-east-1:123456789012:function:custom_lambda_authorizer\",\n },\n });\n\n var appsyncLambdaAuthorizer = new Aws.Lambda.Permission(\"appsync_lambda_authorizer\", new()\n {\n StatementId = \"appsync_lambda_authorizer\",\n Action = \"lambda:InvokeFunction\",\n Function = \"custom_lambda_authorizer\",\n Principal = \"appsync.amazonaws.com\",\n SourceArn = example.Arn,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := appsync.NewGraphQLApi(ctx, \"example\", \u0026appsync.GraphQLApiArgs{\n\t\t\tAuthenticationType: pulumi.String(\"AWS_LAMBDA\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tLambdaAuthorizerConfig: \u0026appsync.GraphQLApiLambdaAuthorizerConfigArgs{\n\t\t\t\tAuthorizerUri: pulumi.String(\"arn:aws:lambda:us-east-1:123456789012:function:custom_lambda_authorizer\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lambda.NewPermission(ctx, \"appsync_lambda_authorizer\", \u0026lambda.PermissionArgs{\n\t\t\tStatementId: pulumi.String(\"appsync_lambda_authorizer\"),\n\t\t\tAction: pulumi.String(\"lambda:InvokeFunction\"),\n\t\t\tFunction: pulumi.Any(\"custom_lambda_authorizer\"),\n\t\t\tPrincipal: pulumi.String(\"appsync.amazonaws.com\"),\n\t\t\tSourceArn: example.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport com.pulumi.aws.appsync.inputs.GraphQLApiLambdaAuthorizerConfigArgs;\nimport com.pulumi.aws.lambda.Permission;\nimport com.pulumi.aws.lambda.PermissionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new GraphQLApi(\"example\", GraphQLApiArgs.builder()\n .authenticationType(\"AWS_LAMBDA\")\n .name(\"example\")\n .lambdaAuthorizerConfig(GraphQLApiLambdaAuthorizerConfigArgs.builder()\n .authorizerUri(\"arn:aws:lambda:us-east-1:123456789012:function:custom_lambda_authorizer\")\n .build())\n .build());\n\n var appsyncLambdaAuthorizer = new Permission(\"appsyncLambdaAuthorizer\", PermissionArgs.builder()\n .statementId(\"appsync_lambda_authorizer\")\n .action(\"lambda:InvokeFunction\")\n .function(\"custom_lambda_authorizer\")\n .principal(\"appsync.amazonaws.com\")\n .sourceArn(example.arn())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: AWS_LAMBDA\n name: example\n lambdaAuthorizerConfig:\n authorizerUri: arn:aws:lambda:us-east-1:123456789012:function:custom_lambda_authorizer\n appsyncLambdaAuthorizer:\n type: aws:lambda:Permission\n name: appsync_lambda_authorizer\n properties:\n statementId: appsync_lambda_authorizer\n action: lambda:InvokeFunction\n function: custom_lambda_authorizer\n principal: appsync.amazonaws.com\n sourceArn: ${example.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Multiple Authentication Providers\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.appsync.GraphQLApi(\"example\", {\n authenticationType: \"API_KEY\",\n name: \"example\",\n additionalAuthenticationProviders: [{\n authenticationType: \"AWS_IAM\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.appsync.GraphQLApi(\"example\",\n authentication_type=\"API_KEY\",\n name=\"example\",\n additional_authentication_providers=[{\n \"authentication_type\": \"AWS_IAM\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.GraphQLApi(\"example\", new()\n {\n AuthenticationType = \"API_KEY\",\n Name = \"example\",\n AdditionalAuthenticationProviders = new[]\n {\n new Aws.AppSync.Inputs.GraphQLApiAdditionalAuthenticationProviderArgs\n {\n AuthenticationType = \"AWS_IAM\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := appsync.NewGraphQLApi(ctx, \"example\", \u0026appsync.GraphQLApiArgs{\n\t\t\tAuthenticationType: pulumi.String(\"API_KEY\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tAdditionalAuthenticationProviders: appsync.GraphQLApiAdditionalAuthenticationProviderArray{\n\t\t\t\t\u0026appsync.GraphQLApiAdditionalAuthenticationProviderArgs{\n\t\t\t\t\tAuthenticationType: pulumi.String(\"AWS_IAM\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport com.pulumi.aws.appsync.inputs.GraphQLApiAdditionalAuthenticationProviderArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new GraphQLApi(\"example\", GraphQLApiArgs.builder()\n .authenticationType(\"API_KEY\")\n .name(\"example\")\n .additionalAuthenticationProviders(GraphQLApiAdditionalAuthenticationProviderArgs.builder()\n .authenticationType(\"AWS_IAM\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: API_KEY\n name: example\n additionalAuthenticationProviders:\n - authenticationType: AWS_IAM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Schema\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.appsync.GraphQLApi(\"example\", {\n authenticationType: \"AWS_IAM\",\n name: \"example\",\n schema: `schema {\n\\x09query: Query\n}\ntype Query {\n test: Int\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.appsync.GraphQLApi(\"example\",\n authentication_type=\"AWS_IAM\",\n name=\"example\",\n schema=\"\"\"schema {\n\\x09query: Query\n}\ntype Query {\n test: Int\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.GraphQLApi(\"example\", new()\n {\n AuthenticationType = \"AWS_IAM\",\n Name = \"example\",\n Schema = @\"schema {\n\tquery: Query\n}\ntype Query {\n test: Int\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := appsync.NewGraphQLApi(ctx, \"example\", \u0026appsync.GraphQLApiArgs{\n\t\t\tAuthenticationType: pulumi.String(\"AWS_IAM\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tSchema: pulumi.String(`schema {\n\tquery: Query\n}\ntype Query {\n test: Int\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new GraphQLApi(\"example\", GraphQLApiArgs.builder()\n .authenticationType(\"AWS_IAM\")\n .name(\"example\")\n .schema(\"\"\"\nschema {\n\tquery: Query\n}\ntype Query {\n test: Int\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: AWS_IAM\n name: example\n schema: |\n schema {\n \tquery: Query\n }\n type Query {\n test: Int\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Enabling Logging\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst assumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"appsync.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst example = new aws.iam.Role(\"example\", {\n name: \"example\",\n assumeRolePolicy: assumeRole.then(assumeRole =\u003e assumeRole.json),\n});\nconst exampleRolePolicyAttachment = new aws.iam.RolePolicyAttachment(\"example\", {\n policyArn: \"arn:aws:iam::aws:policy/service-role/AWSAppSyncPushToCloudWatchLogs\",\n role: example.name,\n});\nconst exampleGraphQLApi = new aws.appsync.GraphQLApi(\"example\", {logConfig: {\n cloudwatchLogsRoleArn: example.arn,\n fieldLogLevel: \"ERROR\",\n}});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nassume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"appsync.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nexample = aws.iam.Role(\"example\",\n name=\"example\",\n assume_role_policy=assume_role.json)\nexample_role_policy_attachment = aws.iam.RolePolicyAttachment(\"example\",\n policy_arn=\"arn:aws:iam::aws:policy/service-role/AWSAppSyncPushToCloudWatchLogs\",\n role=example.name)\nexample_graph_ql_api = aws.appsync.GraphQLApi(\"example\", log_config={\n \"cloudwatch_logs_role_arn\": example.arn,\n \"field_log_level\": \"ERROR\",\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var assumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"appsync.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var example = new Aws.Iam.Role(\"example\", new()\n {\n Name = \"example\",\n AssumeRolePolicy = assumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var exampleRolePolicyAttachment = new Aws.Iam.RolePolicyAttachment(\"example\", new()\n {\n PolicyArn = \"arn:aws:iam::aws:policy/service-role/AWSAppSyncPushToCloudWatchLogs\",\n Role = example.Name,\n });\n\n var exampleGraphQLApi = new Aws.AppSync.GraphQLApi(\"example\", new()\n {\n LogConfig = new Aws.AppSync.Inputs.GraphQLApiLogConfigArgs\n {\n CloudwatchLogsRoleArn = example.Arn,\n FieldLogLevel = \"ERROR\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tassumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"appsync.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := iam.NewRole(ctx, \"example\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tAssumeRolePolicy: pulumi.String(assumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewRolePolicyAttachment(ctx, \"example\", \u0026iam.RolePolicyAttachmentArgs{\n\t\t\tPolicyArn: pulumi.String(\"arn:aws:iam::aws:policy/service-role/AWSAppSyncPushToCloudWatchLogs\"),\n\t\t\tRole: example.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appsync.NewGraphQLApi(ctx, \"example\", \u0026appsync.GraphQLApiArgs{\n\t\t\tLogConfig: \u0026appsync.GraphQLApiLogConfigArgs{\n\t\t\t\tCloudwatchLogsRoleArn: example.Arn,\n\t\t\t\tFieldLogLevel: pulumi.String(\"ERROR\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.iam.RolePolicyAttachment;\nimport com.pulumi.aws.iam.RolePolicyAttachmentArgs;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport com.pulumi.aws.appsync.inputs.GraphQLApiLogConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"appsync.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var example = new Role(\"example\", RoleArgs.builder()\n .name(\"example\")\n .assumeRolePolicy(assumeRole.json())\n .build());\n\n var exampleRolePolicyAttachment = new RolePolicyAttachment(\"exampleRolePolicyAttachment\", RolePolicyAttachmentArgs.builder()\n .policyArn(\"arn:aws:iam::aws:policy/service-role/AWSAppSyncPushToCloudWatchLogs\")\n .role(example.name())\n .build());\n\n var exampleGraphQLApi = new GraphQLApi(\"exampleGraphQLApi\", GraphQLApiArgs.builder()\n .logConfig(GraphQLApiLogConfigArgs.builder()\n .cloudwatchLogsRoleArn(example.arn())\n .fieldLogLevel(\"ERROR\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:iam:Role\n properties:\n name: example\n assumeRolePolicy: ${assumeRole.json}\n exampleRolePolicyAttachment:\n type: aws:iam:RolePolicyAttachment\n name: example\n properties:\n policyArn: arn:aws:iam::aws:policy/service-role/AWSAppSyncPushToCloudWatchLogs\n role: ${example.name}\n exampleGraphQLApi:\n type: aws:appsync:GraphQLApi\n name: example\n properties:\n logConfig:\n cloudwatchLogsRoleArn: ${example.arn}\n fieldLogLevel: ERROR\nvariables:\n assumeRole:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - appsync.amazonaws.com\n actions:\n - sts:AssumeRole\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Associate Web ACL (v2)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n example:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: API_KEY\n name: example\n exampleWebAclAssociation:\n type: aws:wafv2:WebAclAssociation\n name: example\n properties:\n resourceArn: ${example.arn}\n webAclArn: ${exampleWebAcl.arn}\n exampleWebAcl:\n type: aws:wafv2:WebAcl\n name: example\n properties:\n name: managed-rule-example\n description: Example of a managed rule.\n scope: REGIONAL\n defaultAction:\n allow: {}\n rules:\n - name: rule-1\n priority: 1\n overrideAction:\n block:\n - {}\n statement:\n managedRuleGroupStatement:\n name: AWSManagedRulesCommonRuleSet\n vendorName: AWS\n visibilityConfig:\n cloudwatchMetricsEnabled: false\n metricName: friendly-rule-metric-name\n sampledRequestsEnabled: false\n visibilityConfig:\n cloudwatchMetricsEnabled: false\n metricName: friendly-metric-name\n sampledRequestsEnabled: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### GraphQL run complexity, query depth, and introspection\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.appsync.GraphQLApi(\"example\", {\n authenticationType: \"AWS_IAM\",\n name: \"example\",\n introspectionConfig: \"ENABLED\",\n queryDepthLimit: 2,\n resolverCountLimit: 2,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.appsync.GraphQLApi(\"example\",\n authentication_type=\"AWS_IAM\",\n name=\"example\",\n introspection_config=\"ENABLED\",\n query_depth_limit=2,\n resolver_count_limit=2)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.GraphQLApi(\"example\", new()\n {\n AuthenticationType = \"AWS_IAM\",\n Name = \"example\",\n IntrospectionConfig = \"ENABLED\",\n QueryDepthLimit = 2,\n ResolverCountLimit = 2,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := appsync.NewGraphQLApi(ctx, \"example\", \u0026appsync.GraphQLApiArgs{\n\t\t\tAuthenticationType: pulumi.String(\"AWS_IAM\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tIntrospectionConfig: pulumi.String(\"ENABLED\"),\n\t\t\tQueryDepthLimit: pulumi.Int(2),\n\t\t\tResolverCountLimit: pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new GraphQLApi(\"example\", GraphQLApiArgs.builder()\n .authenticationType(\"AWS_IAM\")\n .name(\"example\")\n .introspectionConfig(\"ENABLED\")\n .queryDepthLimit(2)\n .resolverCountLimit(2)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: AWS_IAM\n name: example\n introspectionConfig: ENABLED\n queryDepthLimit: 2\n resolverCountLimit: 2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import AppSync GraphQL API using the GraphQL API ID. For example:\n\n```sh\n$ pulumi import aws:appsync/graphQLApi:GraphQLApi example 0123456789\n```\n", + "description": "Provides an AppSync GraphQL API.\n\n## Example Usage\n\n### API Key Authentication\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.appsync.GraphQLApi(\"example\", {\n authenticationType: \"API_KEY\",\n name: \"example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.appsync.GraphQLApi(\"example\",\n authentication_type=\"API_KEY\",\n name=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.GraphQLApi(\"example\", new()\n {\n AuthenticationType = \"API_KEY\",\n Name = \"example\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := appsync.NewGraphQLApi(ctx, \"example\", \u0026appsync.GraphQLApiArgs{\n\t\t\tAuthenticationType: pulumi.String(\"API_KEY\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new GraphQLApi(\"example\", GraphQLApiArgs.builder()\n .authenticationType(\"API_KEY\")\n .name(\"example\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: API_KEY\n name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### AWS IAM Authentication\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.appsync.GraphQLApi(\"example\", {\n authenticationType: \"AWS_IAM\",\n name: \"example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.appsync.GraphQLApi(\"example\",\n authentication_type=\"AWS_IAM\",\n name=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.GraphQLApi(\"example\", new()\n {\n AuthenticationType = \"AWS_IAM\",\n Name = \"example\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := appsync.NewGraphQLApi(ctx, \"example\", \u0026appsync.GraphQLApiArgs{\n\t\t\tAuthenticationType: pulumi.String(\"AWS_IAM\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new GraphQLApi(\"example\", GraphQLApiArgs.builder()\n .authenticationType(\"AWS_IAM\")\n .name(\"example\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: AWS_IAM\n name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### AWS Cognito User Pool Authentication\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.appsync.GraphQLApi(\"example\", {\n authenticationType: \"AMAZON_COGNITO_USER_POOLS\",\n name: \"example\",\n userPoolConfig: {\n awsRegion: current.region,\n defaultAction: \"DENY\",\n userPoolId: exampleAwsCognitoUserPool.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.appsync.GraphQLApi(\"example\",\n authentication_type=\"AMAZON_COGNITO_USER_POOLS\",\n name=\"example\",\n user_pool_config={\n \"aws_region\": current[\"region\"],\n \"default_action\": \"DENY\",\n \"user_pool_id\": example_aws_cognito_user_pool[\"id\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.GraphQLApi(\"example\", new()\n {\n AuthenticationType = \"AMAZON_COGNITO_USER_POOLS\",\n Name = \"example\",\n UserPoolConfig = new Aws.AppSync.Inputs.GraphQLApiUserPoolConfigArgs\n {\n AwsRegion = current.Region,\n DefaultAction = \"DENY\",\n UserPoolId = exampleAwsCognitoUserPool.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := appsync.NewGraphQLApi(ctx, \"example\", \u0026appsync.GraphQLApiArgs{\n\t\t\tAuthenticationType: pulumi.String(\"AMAZON_COGNITO_USER_POOLS\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tUserPoolConfig: \u0026appsync.GraphQLApiUserPoolConfigArgs{\n\t\t\t\tAwsRegion: pulumi.Any(current.Region),\n\t\t\t\tDefaultAction: pulumi.String(\"DENY\"),\n\t\t\t\tUserPoolId: pulumi.Any(exampleAwsCognitoUserPool.Id),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport com.pulumi.aws.appsync.inputs.GraphQLApiUserPoolConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new GraphQLApi(\"example\", GraphQLApiArgs.builder()\n .authenticationType(\"AMAZON_COGNITO_USER_POOLS\")\n .name(\"example\")\n .userPoolConfig(GraphQLApiUserPoolConfigArgs.builder()\n .awsRegion(current.region())\n .defaultAction(\"DENY\")\n .userPoolId(exampleAwsCognitoUserPool.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: AMAZON_COGNITO_USER_POOLS\n name: example\n userPoolConfig:\n awsRegion: ${current.region}\n defaultAction: DENY\n userPoolId: ${exampleAwsCognitoUserPool.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenID Connect Authentication\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.appsync.GraphQLApi(\"example\", {\n authenticationType: \"OPENID_CONNECT\",\n name: \"example\",\n openidConnectConfig: {\n issuer: \"https://example.com\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.appsync.GraphQLApi(\"example\",\n authentication_type=\"OPENID_CONNECT\",\n name=\"example\",\n openid_connect_config={\n \"issuer\": \"https://example.com\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.GraphQLApi(\"example\", new()\n {\n AuthenticationType = \"OPENID_CONNECT\",\n Name = \"example\",\n OpenidConnectConfig = new Aws.AppSync.Inputs.GraphQLApiOpenidConnectConfigArgs\n {\n Issuer = \"https://example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := appsync.NewGraphQLApi(ctx, \"example\", \u0026appsync.GraphQLApiArgs{\n\t\t\tAuthenticationType: pulumi.String(\"OPENID_CONNECT\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tOpenidConnectConfig: \u0026appsync.GraphQLApiOpenidConnectConfigArgs{\n\t\t\t\tIssuer: pulumi.String(\"https://example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport com.pulumi.aws.appsync.inputs.GraphQLApiOpenidConnectConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new GraphQLApi(\"example\", GraphQLApiArgs.builder()\n .authenticationType(\"OPENID_CONNECT\")\n .name(\"example\")\n .openidConnectConfig(GraphQLApiOpenidConnectConfigArgs.builder()\n .issuer(\"https://example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: OPENID_CONNECT\n name: example\n openidConnectConfig:\n issuer: https://example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### AWS Lambda Authorizer Authentication\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.appsync.GraphQLApi(\"example\", {\n authenticationType: \"AWS_LAMBDA\",\n name: \"example\",\n lambdaAuthorizerConfig: {\n authorizerUri: \"arn:aws:lambda:us-east-1:123456789012:function:custom_lambda_authorizer\",\n },\n});\nconst appsyncLambdaAuthorizer = new aws.lambda.Permission(\"appsync_lambda_authorizer\", {\n statementId: \"appsync_lambda_authorizer\",\n action: \"lambda:InvokeFunction\",\n \"function\": \"custom_lambda_authorizer\",\n principal: \"appsync.amazonaws.com\",\n sourceArn: example.arn,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.appsync.GraphQLApi(\"example\",\n authentication_type=\"AWS_LAMBDA\",\n name=\"example\",\n lambda_authorizer_config={\n \"authorizer_uri\": \"arn:aws:lambda:us-east-1:123456789012:function:custom_lambda_authorizer\",\n })\nappsync_lambda_authorizer = aws.lambda_.Permission(\"appsync_lambda_authorizer\",\n statement_id=\"appsync_lambda_authorizer\",\n action=\"lambda:InvokeFunction\",\n function=\"custom_lambda_authorizer\",\n principal=\"appsync.amazonaws.com\",\n source_arn=example.arn)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.GraphQLApi(\"example\", new()\n {\n AuthenticationType = \"AWS_LAMBDA\",\n Name = \"example\",\n LambdaAuthorizerConfig = new Aws.AppSync.Inputs.GraphQLApiLambdaAuthorizerConfigArgs\n {\n AuthorizerUri = \"arn:aws:lambda:us-east-1:123456789012:function:custom_lambda_authorizer\",\n },\n });\n\n var appsyncLambdaAuthorizer = new Aws.Lambda.Permission(\"appsync_lambda_authorizer\", new()\n {\n StatementId = \"appsync_lambda_authorizer\",\n Action = \"lambda:InvokeFunction\",\n Function = \"custom_lambda_authorizer\",\n Principal = \"appsync.amazonaws.com\",\n SourceArn = example.Arn,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := appsync.NewGraphQLApi(ctx, \"example\", \u0026appsync.GraphQLApiArgs{\n\t\t\tAuthenticationType: pulumi.String(\"AWS_LAMBDA\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tLambdaAuthorizerConfig: \u0026appsync.GraphQLApiLambdaAuthorizerConfigArgs{\n\t\t\t\tAuthorizerUri: pulumi.String(\"arn:aws:lambda:us-east-1:123456789012:function:custom_lambda_authorizer\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lambda.NewPermission(ctx, \"appsync_lambda_authorizer\", \u0026lambda.PermissionArgs{\n\t\t\tStatementId: pulumi.String(\"appsync_lambda_authorizer\"),\n\t\t\tAction: pulumi.String(\"lambda:InvokeFunction\"),\n\t\t\tFunction: pulumi.Any(\"custom_lambda_authorizer\"),\n\t\t\tPrincipal: pulumi.String(\"appsync.amazonaws.com\"),\n\t\t\tSourceArn: example.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport com.pulumi.aws.appsync.inputs.GraphQLApiLambdaAuthorizerConfigArgs;\nimport com.pulumi.aws.lambda.Permission;\nimport com.pulumi.aws.lambda.PermissionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new GraphQLApi(\"example\", GraphQLApiArgs.builder()\n .authenticationType(\"AWS_LAMBDA\")\n .name(\"example\")\n .lambdaAuthorizerConfig(GraphQLApiLambdaAuthorizerConfigArgs.builder()\n .authorizerUri(\"arn:aws:lambda:us-east-1:123456789012:function:custom_lambda_authorizer\")\n .build())\n .build());\n\n var appsyncLambdaAuthorizer = new Permission(\"appsyncLambdaAuthorizer\", PermissionArgs.builder()\n .statementId(\"appsync_lambda_authorizer\")\n .action(\"lambda:InvokeFunction\")\n .function(\"custom_lambda_authorizer\")\n .principal(\"appsync.amazonaws.com\")\n .sourceArn(example.arn())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: AWS_LAMBDA\n name: example\n lambdaAuthorizerConfig:\n authorizerUri: arn:aws:lambda:us-east-1:123456789012:function:custom_lambda_authorizer\n appsyncLambdaAuthorizer:\n type: aws:lambda:Permission\n name: appsync_lambda_authorizer\n properties:\n statementId: appsync_lambda_authorizer\n action: lambda:InvokeFunction\n function: custom_lambda_authorizer\n principal: appsync.amazonaws.com\n sourceArn: ${example.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Multiple Authentication Providers\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.appsync.GraphQLApi(\"example\", {\n authenticationType: \"API_KEY\",\n name: \"example\",\n additionalAuthenticationProviders: [{\n authenticationType: \"AWS_IAM\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.appsync.GraphQLApi(\"example\",\n authentication_type=\"API_KEY\",\n name=\"example\",\n additional_authentication_providers=[{\n \"authentication_type\": \"AWS_IAM\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.GraphQLApi(\"example\", new()\n {\n AuthenticationType = \"API_KEY\",\n Name = \"example\",\n AdditionalAuthenticationProviders = new[]\n {\n new Aws.AppSync.Inputs.GraphQLApiAdditionalAuthenticationProviderArgs\n {\n AuthenticationType = \"AWS_IAM\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := appsync.NewGraphQLApi(ctx, \"example\", \u0026appsync.GraphQLApiArgs{\n\t\t\tAuthenticationType: pulumi.String(\"API_KEY\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tAdditionalAuthenticationProviders: appsync.GraphQLApiAdditionalAuthenticationProviderArray{\n\t\t\t\t\u0026appsync.GraphQLApiAdditionalAuthenticationProviderArgs{\n\t\t\t\t\tAuthenticationType: pulumi.String(\"AWS_IAM\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport com.pulumi.aws.appsync.inputs.GraphQLApiAdditionalAuthenticationProviderArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new GraphQLApi(\"example\", GraphQLApiArgs.builder()\n .authenticationType(\"API_KEY\")\n .name(\"example\")\n .additionalAuthenticationProviders(GraphQLApiAdditionalAuthenticationProviderArgs.builder()\n .authenticationType(\"AWS_IAM\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: API_KEY\n name: example\n additionalAuthenticationProviders:\n - authenticationType: AWS_IAM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Schema\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.appsync.GraphQLApi(\"example\", {\n authenticationType: \"AWS_IAM\",\n name: \"example\",\n schema: `schema {\n\\\\tquery: Query\n}\ntype Query {\n test: Int\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.appsync.GraphQLApi(\"example\",\n authentication_type=\"AWS_IAM\",\n name=\"example\",\n schema=\"\"\"schema {\n\\tquery: Query\n}\ntype Query {\n test: Int\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.GraphQLApi(\"example\", new()\n {\n AuthenticationType = \"AWS_IAM\",\n Name = \"example\",\n Schema = @\"schema {\n\\tquery: Query\n}\ntype Query {\n test: Int\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := appsync.NewGraphQLApi(ctx, \"example\", \u0026appsync.GraphQLApiArgs{\n\t\t\tAuthenticationType: pulumi.String(\"AWS_IAM\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tSchema: pulumi.String(`schema {\n\\tquery: Query\n}\ntype Query {\n test: Int\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new GraphQLApi(\"example\", GraphQLApiArgs.builder()\n .authenticationType(\"AWS_IAM\")\n .name(\"example\")\n .schema(\"\"\"\nschema {\n\\tquery: Query\n}\ntype Query {\n test: Int\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: AWS_IAM\n name: example\n schema: |\n schema {\n \\tquery: Query\n }\n type Query {\n test: Int\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Enabling Logging\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst assumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"appsync.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst example = new aws.iam.Role(\"example\", {\n name: \"example\",\n assumeRolePolicy: assumeRole.then(assumeRole =\u003e assumeRole.json),\n});\nconst exampleRolePolicyAttachment = new aws.iam.RolePolicyAttachment(\"example\", {\n policyArn: \"arn:aws:iam::aws:policy/service-role/AWSAppSyncPushToCloudWatchLogs\",\n role: example.name,\n});\nconst exampleGraphQLApi = new aws.appsync.GraphQLApi(\"example\", {logConfig: {\n cloudwatchLogsRoleArn: example.arn,\n fieldLogLevel: \"ERROR\",\n}});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nassume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"appsync.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nexample = aws.iam.Role(\"example\",\n name=\"example\",\n assume_role_policy=assume_role.json)\nexample_role_policy_attachment = aws.iam.RolePolicyAttachment(\"example\",\n policy_arn=\"arn:aws:iam::aws:policy/service-role/AWSAppSyncPushToCloudWatchLogs\",\n role=example.name)\nexample_graph_ql_api = aws.appsync.GraphQLApi(\"example\", log_config={\n \"cloudwatch_logs_role_arn\": example.arn,\n \"field_log_level\": \"ERROR\",\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var assumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"appsync.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var example = new Aws.Iam.Role(\"example\", new()\n {\n Name = \"example\",\n AssumeRolePolicy = assumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var exampleRolePolicyAttachment = new Aws.Iam.RolePolicyAttachment(\"example\", new()\n {\n PolicyArn = \"arn:aws:iam::aws:policy/service-role/AWSAppSyncPushToCloudWatchLogs\",\n Role = example.Name,\n });\n\n var exampleGraphQLApi = new Aws.AppSync.GraphQLApi(\"example\", new()\n {\n LogConfig = new Aws.AppSync.Inputs.GraphQLApiLogConfigArgs\n {\n CloudwatchLogsRoleArn = example.Arn,\n FieldLogLevel = \"ERROR\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tassumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"appsync.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := iam.NewRole(ctx, \"example\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tAssumeRolePolicy: pulumi.String(assumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewRolePolicyAttachment(ctx, \"example\", \u0026iam.RolePolicyAttachmentArgs{\n\t\t\tPolicyArn: pulumi.String(\"arn:aws:iam::aws:policy/service-role/AWSAppSyncPushToCloudWatchLogs\"),\n\t\t\tRole: example.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appsync.NewGraphQLApi(ctx, \"example\", \u0026appsync.GraphQLApiArgs{\n\t\t\tLogConfig: \u0026appsync.GraphQLApiLogConfigArgs{\n\t\t\t\tCloudwatchLogsRoleArn: example.Arn,\n\t\t\t\tFieldLogLevel: pulumi.String(\"ERROR\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.iam.RolePolicyAttachment;\nimport com.pulumi.aws.iam.RolePolicyAttachmentArgs;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport com.pulumi.aws.appsync.inputs.GraphQLApiLogConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"appsync.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var example = new Role(\"example\", RoleArgs.builder()\n .name(\"example\")\n .assumeRolePolicy(assumeRole.json())\n .build());\n\n var exampleRolePolicyAttachment = new RolePolicyAttachment(\"exampleRolePolicyAttachment\", RolePolicyAttachmentArgs.builder()\n .policyArn(\"arn:aws:iam::aws:policy/service-role/AWSAppSyncPushToCloudWatchLogs\")\n .role(example.name())\n .build());\n\n var exampleGraphQLApi = new GraphQLApi(\"exampleGraphQLApi\", GraphQLApiArgs.builder()\n .logConfig(GraphQLApiLogConfigArgs.builder()\n .cloudwatchLogsRoleArn(example.arn())\n .fieldLogLevel(\"ERROR\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:iam:Role\n properties:\n name: example\n assumeRolePolicy: ${assumeRole.json}\n exampleRolePolicyAttachment:\n type: aws:iam:RolePolicyAttachment\n name: example\n properties:\n policyArn: arn:aws:iam::aws:policy/service-role/AWSAppSyncPushToCloudWatchLogs\n role: ${example.name}\n exampleGraphQLApi:\n type: aws:appsync:GraphQLApi\n name: example\n properties:\n logConfig:\n cloudwatchLogsRoleArn: ${example.arn}\n fieldLogLevel: ERROR\nvariables:\n assumeRole:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - appsync.amazonaws.com\n actions:\n - sts:AssumeRole\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Associate Web ACL (v2)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n example:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: API_KEY\n name: example\n exampleWebAclAssociation:\n type: aws:wafv2:WebAclAssociation\n name: example\n properties:\n resourceArn: ${example.arn}\n webAclArn: ${exampleWebAcl.arn}\n exampleWebAcl:\n type: aws:wafv2:WebAcl\n name: example\n properties:\n name: managed-rule-example\n description: Example of a managed rule.\n scope: REGIONAL\n defaultAction:\n allow: {}\n rules:\n - name: rule-1\n priority: 1\n overrideAction:\n block:\n - {}\n statement:\n managedRuleGroupStatement:\n name: AWSManagedRulesCommonRuleSet\n vendorName: AWS\n visibilityConfig:\n cloudwatchMetricsEnabled: false\n metricName: friendly-rule-metric-name\n sampledRequestsEnabled: false\n visibilityConfig:\n cloudwatchMetricsEnabled: false\n metricName: friendly-metric-name\n sampledRequestsEnabled: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### GraphQL run complexity, query depth, and introspection\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.appsync.GraphQLApi(\"example\", {\n authenticationType: \"AWS_IAM\",\n name: \"example\",\n introspectionConfig: \"ENABLED\",\n queryDepthLimit: 2,\n resolverCountLimit: 2,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.appsync.GraphQLApi(\"example\",\n authentication_type=\"AWS_IAM\",\n name=\"example\",\n introspection_config=\"ENABLED\",\n query_depth_limit=2,\n resolver_count_limit=2)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.GraphQLApi(\"example\", new()\n {\n AuthenticationType = \"AWS_IAM\",\n Name = \"example\",\n IntrospectionConfig = \"ENABLED\",\n QueryDepthLimit = 2,\n ResolverCountLimit = 2,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := appsync.NewGraphQLApi(ctx, \"example\", \u0026appsync.GraphQLApiArgs{\n\t\t\tAuthenticationType: pulumi.String(\"AWS_IAM\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tIntrospectionConfig: pulumi.String(\"ENABLED\"),\n\t\t\tQueryDepthLimit: pulumi.Int(2),\n\t\t\tResolverCountLimit: pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new GraphQLApi(\"example\", GraphQLApiArgs.builder()\n .authenticationType(\"AWS_IAM\")\n .name(\"example\")\n .introspectionConfig(\"ENABLED\")\n .queryDepthLimit(2)\n .resolverCountLimit(2)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: AWS_IAM\n name: example\n introspectionConfig: ENABLED\n queryDepthLimit: 2\n resolverCountLimit: 2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import AppSync GraphQL API using the GraphQL API ID. For example:\n\n```sh\n$ pulumi import aws:appsync/graphQLApi:GraphQLApi example 0123456789\n```\n", "properties": { "additionalAuthenticationProviders": { "type": "array", @@ -208814,7 +208814,7 @@ } }, "aws:appsync/resolver:Resolver": { - "description": "Provides an AppSync Resolver.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.appsync.GraphQLApi(\"test\", {\n authenticationType: \"API_KEY\",\n name: \"tf-example\",\n schema: `type Mutation {\n\\x09putPost(id: ID!, title: String!): Post\n}\n\ntype Post {\n\\x09id: ID!\n\\x09title: String!\n}\n\ntype Query {\n\\x09singlePost(id: ID!): Post\n}\n\nschema {\n\\x09query: Query\n\\x09mutation: Mutation\n}\n`,\n});\nconst testDataSource = new aws.appsync.DataSource(\"test\", {\n apiId: test.id,\n name: \"my_example\",\n type: \"HTTP\",\n httpConfig: {\n endpoint: \"http://example.com\",\n },\n});\n// UNIT type resolver (default)\nconst testResolver = new aws.appsync.Resolver(\"test\", {\n apiId: test.id,\n field: \"singlePost\",\n type: \"Query\",\n dataSource: testDataSource.name,\n requestTemplate: `{\n \"version\": \"2018-05-29\",\n \"method\": \"GET\",\n \"resourcePath\": \"/\",\n \"params\":{\n \"headers\": utils.http.copyheaders(ctx.request.headers)\n }\n}\n`,\n responseTemplate: `#if(ctx.result.statusCode == 200)\n ctx.result.body\n#else\n utils.appendError(ctx.result.body, ctx.result.statusCode)\n#end\n`,\n cachingConfig: {\n cachingKeys: [\n \"$context.identity.sub\",\n \"$context.arguments.id\",\n ],\n ttl: 60,\n },\n});\n// PIPELINE type resolver\nconst mutationPipelineTest = new aws.appsync.Resolver(\"Mutation_pipelineTest\", {\n type: \"Mutation\",\n apiId: test.id,\n field: \"pipelineTest\",\n requestTemplate: \"{}\",\n responseTemplate: \"$util.toJson($ctx.result)\",\n kind: \"PIPELINE\",\n pipelineConfig: {\n functions: [\n test1.functionId,\n test2.functionId,\n test3.functionId,\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.appsync.GraphQLApi(\"test\",\n authentication_type=\"API_KEY\",\n name=\"tf-example\",\n schema=\"\"\"type Mutation {\n\\x09putPost(id: ID!, title: String!): Post\n}\n\ntype Post {\n\\x09id: ID!\n\\x09title: String!\n}\n\ntype Query {\n\\x09singlePost(id: ID!): Post\n}\n\nschema {\n\\x09query: Query\n\\x09mutation: Mutation\n}\n\"\"\")\ntest_data_source = aws.appsync.DataSource(\"test\",\n api_id=test.id,\n name=\"my_example\",\n type=\"HTTP\",\n http_config={\n \"endpoint\": \"http://example.com\",\n })\n# UNIT type resolver (default)\ntest_resolver = aws.appsync.Resolver(\"test\",\n api_id=test.id,\n field=\"singlePost\",\n type=\"Query\",\n data_source=test_data_source.name,\n request_template=\"\"\"{\n \"version\": \"2018-05-29\",\n \"method\": \"GET\",\n \"resourcePath\": \"/\",\n \"params\":{\n \"headers\": $utils.http.copyheaders($ctx.request.headers)\n }\n}\n\"\"\",\n response_template=\"\"\"#if($ctx.result.statusCode == 200)\n $ctx.result.body\n#else\n $utils.appendError($ctx.result.body, $ctx.result.statusCode)\n#end\n\"\"\",\n caching_config={\n \"caching_keys\": [\n \"$context.identity.sub\",\n \"$context.arguments.id\",\n ],\n \"ttl\": 60,\n })\n# PIPELINE type resolver\nmutation_pipeline_test = aws.appsync.Resolver(\"Mutation_pipelineTest\",\n type=\"Mutation\",\n api_id=test.id,\n field=\"pipelineTest\",\n request_template=\"{}\",\n response_template=\"$util.toJson($ctx.result)\",\n kind=\"PIPELINE\",\n pipeline_config={\n \"functions\": [\n test1[\"functionId\"],\n test2[\"functionId\"],\n test3[\"functionId\"],\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Aws.AppSync.GraphQLApi(\"test\", new()\n {\n AuthenticationType = \"API_KEY\",\n Name = \"tf-example\",\n Schema = @\"type Mutation {\n\tputPost(id: ID!, title: String!): Post\n}\n\ntype Post {\n\tid: ID!\n\ttitle: String!\n}\n\ntype Query {\n\tsinglePost(id: ID!): Post\n}\n\nschema {\n\tquery: Query\n\tmutation: Mutation\n}\n\",\n });\n\n var testDataSource = new Aws.AppSync.DataSource(\"test\", new()\n {\n ApiId = test.Id,\n Name = \"my_example\",\n Type = \"HTTP\",\n HttpConfig = new Aws.AppSync.Inputs.DataSourceHttpConfigArgs\n {\n Endpoint = \"http://example.com\",\n },\n });\n\n // UNIT type resolver (default)\n var testResolver = new Aws.AppSync.Resolver(\"test\", new()\n {\n ApiId = test.Id,\n Field = \"singlePost\",\n Type = \"Query\",\n DataSource = testDataSource.Name,\n RequestTemplate = @\"{\n \"\"version\"\": \"\"2018-05-29\"\",\n \"\"method\"\": \"\"GET\"\",\n \"\"resourcePath\"\": \"\"/\"\",\n \"\"params\"\":{\n \"\"headers\"\": $utils.http.copyheaders($ctx.request.headers)\n }\n}\n\",\n ResponseTemplate = @\"#if($ctx.result.statusCode == 200)\n $ctx.result.body\n#else\n $utils.appendError($ctx.result.body, $ctx.result.statusCode)\n#end\n\",\n CachingConfig = new Aws.AppSync.Inputs.ResolverCachingConfigArgs\n {\n CachingKeys = new[]\n {\n \"$context.identity.sub\",\n \"$context.arguments.id\",\n },\n Ttl = 60,\n },\n });\n\n // PIPELINE type resolver\n var mutationPipelineTest = new Aws.AppSync.Resolver(\"Mutation_pipelineTest\", new()\n {\n Type = \"Mutation\",\n ApiId = test.Id,\n Field = \"pipelineTest\",\n RequestTemplate = \"{}\",\n ResponseTemplate = \"$util.toJson($ctx.result)\",\n Kind = \"PIPELINE\",\n PipelineConfig = new Aws.AppSync.Inputs.ResolverPipelineConfigArgs\n {\n Functions = new[]\n {\n test1.FunctionId,\n test2.FunctionId,\n test3.FunctionId,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := appsync.NewGraphQLApi(ctx, \"test\", \u0026appsync.GraphQLApiArgs{\n\t\t\tAuthenticationType: pulumi.String(\"API_KEY\"),\n\t\t\tName: pulumi.String(\"tf-example\"),\n\t\t\tSchema: pulumi.String(`type Mutation {\n\tputPost(id: ID!, title: String!): Post\n}\n\ntype Post {\n\tid: ID!\n\ttitle: String!\n}\n\ntype Query {\n\tsinglePost(id: ID!): Post\n}\n\nschema {\n\tquery: Query\n\tmutation: Mutation\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestDataSource, err := appsync.NewDataSource(ctx, \"test\", \u0026appsync.DataSourceArgs{\n\t\t\tApiId: test.ID(),\n\t\t\tName: pulumi.String(\"my_example\"),\n\t\t\tType: pulumi.String(\"HTTP\"),\n\t\t\tHttpConfig: \u0026appsync.DataSourceHttpConfigArgs{\n\t\t\t\tEndpoint: pulumi.String(\"http://example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// UNIT type resolver (default)\n\t\t_, err = appsync.NewResolver(ctx, \"test\", \u0026appsync.ResolverArgs{\n\t\t\tApiId: test.ID(),\n\t\t\tField: pulumi.String(\"singlePost\"),\n\t\t\tType: pulumi.String(\"Query\"),\n\t\t\tDataSource: testDataSource.Name,\n\t\t\tRequestTemplate: pulumi.String(`{\n \"version\": \"2018-05-29\",\n \"method\": \"GET\",\n \"resourcePath\": \"/\",\n \"params\":{\n \"headers\": $utils.http.copyheaders($ctx.request.headers)\n }\n}\n`),\n\t\t\tResponseTemplate: pulumi.String(`#if($ctx.result.statusCode == 200)\n $ctx.result.body\n#else\n $utils.appendError($ctx.result.body, $ctx.result.statusCode)\n#end\n`),\n\t\t\tCachingConfig: \u0026appsync.ResolverCachingConfigArgs{\n\t\t\t\tCachingKeys: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"$context.identity.sub\"),\n\t\t\t\t\tpulumi.String(\"$context.arguments.id\"),\n\t\t\t\t},\n\t\t\t\tTtl: pulumi.Int(60),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// PIPELINE type resolver\n\t\t_, err = appsync.NewResolver(ctx, \"Mutation_pipelineTest\", \u0026appsync.ResolverArgs{\n\t\t\tType: pulumi.String(\"Mutation\"),\n\t\t\tApiId: test.ID(),\n\t\t\tField: pulumi.String(\"pipelineTest\"),\n\t\t\tRequestTemplate: pulumi.String(\"{}\"),\n\t\t\tResponseTemplate: pulumi.String(\"$util.toJson($ctx.result)\"),\n\t\t\tKind: pulumi.String(\"PIPELINE\"),\n\t\t\tPipelineConfig: \u0026appsync.ResolverPipelineConfigArgs{\n\t\t\t\tFunctions: pulumi.StringArray{\n\t\t\t\t\ttest1.FunctionId,\n\t\t\t\t\ttest2.FunctionId,\n\t\t\t\t\ttest3.FunctionId,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport com.pulumi.aws.appsync.DataSource;\nimport com.pulumi.aws.appsync.DataSourceArgs;\nimport com.pulumi.aws.appsync.inputs.DataSourceHttpConfigArgs;\nimport com.pulumi.aws.appsync.Resolver;\nimport com.pulumi.aws.appsync.ResolverArgs;\nimport com.pulumi.aws.appsync.inputs.ResolverCachingConfigArgs;\nimport com.pulumi.aws.appsync.inputs.ResolverPipelineConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new GraphQLApi(\"test\", GraphQLApiArgs.builder()\n .authenticationType(\"API_KEY\")\n .name(\"tf-example\")\n .schema(\"\"\"\ntype Mutation {\n\tputPost(id: ID!, title: String!): Post\n}\n\ntype Post {\n\tid: ID!\n\ttitle: String!\n}\n\ntype Query {\n\tsinglePost(id: ID!): Post\n}\n\nschema {\n\tquery: Query\n\tmutation: Mutation\n}\n \"\"\")\n .build());\n\n var testDataSource = new DataSource(\"testDataSource\", DataSourceArgs.builder()\n .apiId(test.id())\n .name(\"my_example\")\n .type(\"HTTP\")\n .httpConfig(DataSourceHttpConfigArgs.builder()\n .endpoint(\"http://example.com\")\n .build())\n .build());\n\n // UNIT type resolver (default)\n var testResolver = new Resolver(\"testResolver\", ResolverArgs.builder()\n .apiId(test.id())\n .field(\"singlePost\")\n .type(\"Query\")\n .dataSource(testDataSource.name())\n .requestTemplate(\"\"\"\n{\n \"version\": \"2018-05-29\",\n \"method\": \"GET\",\n \"resourcePath\": \"/\",\n \"params\":{\n \"headers\": $utils.http.copyheaders($ctx.request.headers)\n }\n}\n \"\"\")\n .responseTemplate(\"\"\"\n#if($ctx.result.statusCode == 200)\n $ctx.result.body\n#else\n $utils.appendError($ctx.result.body, $ctx.result.statusCode)\n#end\n \"\"\")\n .cachingConfig(ResolverCachingConfigArgs.builder()\n .cachingKeys( \n \"$context.identity.sub\",\n \"$context.arguments.id\")\n .ttl(60)\n .build())\n .build());\n\n // PIPELINE type resolver\n var mutationPipelineTest = new Resolver(\"mutationPipelineTest\", ResolverArgs.builder()\n .type(\"Mutation\")\n .apiId(test.id())\n .field(\"pipelineTest\")\n .requestTemplate(\"{}\")\n .responseTemplate(\"$util.toJson($ctx.result)\")\n .kind(\"PIPELINE\")\n .pipelineConfig(ResolverPipelineConfigArgs.builder()\n .functions( \n test1.functionId(),\n test2.functionId(),\n test3.functionId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: API_KEY\n name: tf-example\n schema: |\n type Mutation {\n \tputPost(id: ID!, title: String!): Post\n }\n\n type Post {\n \tid: ID!\n \ttitle: String!\n }\n\n type Query {\n \tsinglePost(id: ID!): Post\n }\n\n schema {\n \tquery: Query\n \tmutation: Mutation\n }\n testDataSource:\n type: aws:appsync:DataSource\n name: test\n properties:\n apiId: ${test.id}\n name: my_example\n type: HTTP\n httpConfig:\n endpoint: http://example.com\n # UNIT type resolver (default)\n testResolver:\n type: aws:appsync:Resolver\n name: test\n properties:\n apiId: ${test.id}\n field: singlePost\n type: Query\n dataSource: ${testDataSource.name}\n requestTemplate: |\n {\n \"version\": \"2018-05-29\",\n \"method\": \"GET\",\n \"resourcePath\": \"/\",\n \"params\":{\n \"headers\": $utils.http.copyheaders($ctx.request.headers)\n }\n }\n responseTemplate: |\n #if($ctx.result.statusCode == 200)\n $ctx.result.body\n #else\n $utils.appendError($ctx.result.body, $ctx.result.statusCode)\n #end\n cachingConfig:\n cachingKeys:\n - $context.identity.sub\n - $context.arguments.id\n ttl: 60\n # PIPELINE type resolver\n mutationPipelineTest:\n type: aws:appsync:Resolver\n name: Mutation_pipelineTest\n properties:\n type: Mutation\n apiId: ${test.id}\n field: pipelineTest\n requestTemplate: '{}'\n responseTemplate: $util.toJson($ctx.result)\n kind: PIPELINE\n pipelineConfig:\n functions:\n - ${test1.functionId}\n - ${test2.functionId}\n - ${test3.functionId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### JS\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new aws.appsync.Resolver(\"example\", {\n type: \"Query\",\n apiId: testAwsAppsyncGraphqlApi.id,\n field: \"pipelineTest\",\n kind: \"PIPELINE\",\n code: std.file({\n input: \"some-code-dir\",\n }).then(invoke =\u003e invoke.result),\n runtime: {\n name: \"APPSYNC_JS\",\n runtimeVersion: \"1.0.0\",\n },\n pipelineConfig: {\n functions: [test.functionId],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.appsync.Resolver(\"example\",\n type=\"Query\",\n api_id=test_aws_appsync_graphql_api[\"id\"],\n field=\"pipelineTest\",\n kind=\"PIPELINE\",\n code=std.file(input=\"some-code-dir\").result,\n runtime={\n \"name\": \"APPSYNC_JS\",\n \"runtime_version\": \"1.0.0\",\n },\n pipeline_config={\n \"functions\": [test[\"functionId\"]],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.Resolver(\"example\", new()\n {\n Type = \"Query\",\n ApiId = testAwsAppsyncGraphqlApi.Id,\n Field = \"pipelineTest\",\n Kind = \"PIPELINE\",\n Code = Std.File.Invoke(new()\n {\n Input = \"some-code-dir\",\n }).Apply(invoke =\u003e invoke.Result),\n Runtime = new Aws.AppSync.Inputs.ResolverRuntimeArgs\n {\n Name = \"APPSYNC_JS\",\n RuntimeVersion = \"1.0.0\",\n },\n PipelineConfig = new Aws.AppSync.Inputs.ResolverPipelineConfigArgs\n {\n Functions = new[]\n {\n test.FunctionId,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"some-code-dir\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appsync.NewResolver(ctx, \"example\", \u0026appsync.ResolverArgs{\n\t\t\tType: pulumi.String(\"Query\"),\n\t\t\tApiId: pulumi.Any(testAwsAppsyncGraphqlApi.Id),\n\t\t\tField: pulumi.String(\"pipelineTest\"),\n\t\t\tKind: pulumi.String(\"PIPELINE\"),\n\t\t\tCode: pulumi.String(invokeFile.Result),\n\t\t\tRuntime: \u0026appsync.ResolverRuntimeArgs{\n\t\t\t\tName: pulumi.String(\"APPSYNC_JS\"),\n\t\t\t\tRuntimeVersion: pulumi.String(\"1.0.0\"),\n\t\t\t},\n\t\t\tPipelineConfig: \u0026appsync.ResolverPipelineConfigArgs{\n\t\t\t\tFunctions: pulumi.StringArray{\n\t\t\t\t\ttest.FunctionId,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.Resolver;\nimport com.pulumi.aws.appsync.ResolverArgs;\nimport com.pulumi.aws.appsync.inputs.ResolverRuntimeArgs;\nimport com.pulumi.aws.appsync.inputs.ResolverPipelineConfigArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Resolver(\"example\", ResolverArgs.builder()\n .type(\"Query\")\n .apiId(testAwsAppsyncGraphqlApi.id())\n .field(\"pipelineTest\")\n .kind(\"PIPELINE\")\n .code(StdFunctions.file(FileArgs.builder()\n .input(\"some-code-dir\")\n .build()).result())\n .runtime(ResolverRuntimeArgs.builder()\n .name(\"APPSYNC_JS\")\n .runtimeVersion(\"1.0.0\")\n .build())\n .pipelineConfig(ResolverPipelineConfigArgs.builder()\n .functions(test.functionId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:Resolver\n properties:\n type: Query\n apiId: ${testAwsAppsyncGraphqlApi.id}\n field: pipelineTest\n kind: PIPELINE\n code:\n fn::invoke:\n function: std:file\n arguments:\n input: some-code-dir\n return: result\n runtime:\n name: APPSYNC_JS\n runtimeVersion: 1.0.0\n pipelineConfig:\n functions:\n - ${test.functionId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import `aws_appsync_resolver` using the `api_id`, a hyphen, `type`, a hypen and `field`. For example:\n\n```sh\n$ pulumi import aws:appsync/resolver:Resolver example abcdef123456-exampleType-exampleField\n```\n", + "description": "Provides an AppSync Resolver.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.appsync.GraphQLApi(\"test\", {\n authenticationType: \"API_KEY\",\n name: \"tf-example\",\n schema: `type Mutation {\n\\\\tputPost(id: ID!, title: String!): Post\n}\n\ntype Post {\n\\\\tid: ID!\n\\\\ttitle: String!\n}\n\ntype Query {\n\\\\tsinglePost(id: ID!): Post\n}\n\nschema {\n\\\\tquery: Query\n\\\\tmutation: Mutation\n}\n`,\n});\nconst testDataSource = new aws.appsync.DataSource(\"test\", {\n apiId: test.id,\n name: \"my_example\",\n type: \"HTTP\",\n httpConfig: {\n endpoint: \"http://example.com\",\n },\n});\n// UNIT type resolver (default)\nconst testResolver = new aws.appsync.Resolver(\"test\", {\n apiId: test.id,\n field: \"singlePost\",\n type: \"Query\",\n dataSource: testDataSource.name,\n requestTemplate: `{\n \\\\\"version\\\\\": \\\\\"2018-05-29\\\\\",\n \\\\\"method\\\\\": \\\\\"GET\\\\\",\n \\\\\"resourcePath\\\\\": \\\\\"/\\\\\",\n \\\\\"params\\\\\":{\n \\\\\"headers\\\\\": utils.http.copyheaders(ctx.request.headers)\n }\n}\n`,\n responseTemplate: `#if(ctx.result.statusCode == 200)\n ctx.result.body\n#else\n utils.appendError(ctx.result.body, ctx.result.statusCode)\n#end\n`,\n cachingConfig: {\n cachingKeys: [\n \"$context.identity.sub\",\n \"$context.arguments.id\",\n ],\n ttl: 60,\n },\n});\n// PIPELINE type resolver\nconst mutationPipelineTest = new aws.appsync.Resolver(\"Mutation_pipelineTest\", {\n type: \"Mutation\",\n apiId: test.id,\n field: \"pipelineTest\",\n requestTemplate: \"{}\",\n responseTemplate: \"$util.toJson($ctx.result)\",\n kind: \"PIPELINE\",\n pipelineConfig: {\n functions: [\n test1.functionId,\n test2.functionId,\n test3.functionId,\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.appsync.GraphQLApi(\"test\",\n authentication_type=\"API_KEY\",\n name=\"tf-example\",\n schema=\"\"\"type Mutation {\n\\tputPost(id: ID!, title: String!): Post\n}\n\ntype Post {\n\\tid: ID!\n\\ttitle: String!\n}\n\ntype Query {\n\\tsinglePost(id: ID!): Post\n}\n\nschema {\n\\tquery: Query\n\\tmutation: Mutation\n}\n\"\"\")\ntest_data_source = aws.appsync.DataSource(\"test\",\n api_id=test.id,\n name=\"my_example\",\n type=\"HTTP\",\n http_config={\n \"endpoint\": \"http://example.com\",\n })\n# UNIT type resolver (default)\ntest_resolver = aws.appsync.Resolver(\"test\",\n api_id=test.id,\n field=\"singlePost\",\n type=\"Query\",\n data_source=test_data_source.name,\n request_template=\"\"\"{\n \\\"version\\\": \\\"2018-05-29\\\",\n \\\"method\\\": \\\"GET\\\",\n \\\"resourcePath\\\": \\\"/\\\",\n \\\"params\\\":{\n \\\"headers\\\": $utils.http.copyheaders($ctx.request.headers)\n }\n}\n\"\"\",\n response_template=\"\"\"#if($ctx.result.statusCode == 200)\n $ctx.result.body\n#else\n $utils.appendError($ctx.result.body, $ctx.result.statusCode)\n#end\n\"\"\",\n caching_config={\n \"caching_keys\": [\n \"$context.identity.sub\",\n \"$context.arguments.id\",\n ],\n \"ttl\": 60,\n })\n# PIPELINE type resolver\nmutation_pipeline_test = aws.appsync.Resolver(\"Mutation_pipelineTest\",\n type=\"Mutation\",\n api_id=test.id,\n field=\"pipelineTest\",\n request_template=\"{}\",\n response_template=\"$util.toJson($ctx.result)\",\n kind=\"PIPELINE\",\n pipeline_config={\n \"functions\": [\n test1[\"functionId\"],\n test2[\"functionId\"],\n test3[\"functionId\"],\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Aws.AppSync.GraphQLApi(\"test\", new()\n {\n AuthenticationType = \"API_KEY\",\n Name = \"tf-example\",\n Schema = @\"type Mutation {\n\\tputPost(id: ID!, title: String!): Post\n}\n\ntype Post {\n\\tid: ID!\n\\ttitle: String!\n}\n\ntype Query {\n\\tsinglePost(id: ID!): Post\n}\n\nschema {\n\\tquery: Query\n\\tmutation: Mutation\n}\n\",\n });\n\n var testDataSource = new Aws.AppSync.DataSource(\"test\", new()\n {\n ApiId = test.Id,\n Name = \"my_example\",\n Type = \"HTTP\",\n HttpConfig = new Aws.AppSync.Inputs.DataSourceHttpConfigArgs\n {\n Endpoint = \"http://example.com\",\n },\n });\n\n // UNIT type resolver (default)\n var testResolver = new Aws.AppSync.Resolver(\"test\", new()\n {\n ApiId = test.Id,\n Field = \"singlePost\",\n Type = \"Query\",\n DataSource = testDataSource.Name,\n RequestTemplate = @\"{\n \\\"\"version\\\"\": \\\"\"2018-05-29\\\"\",\n \\\"\"method\\\"\": \\\"\"GET\\\"\",\n \\\"\"resourcePath\\\"\": \\\"\"/\\\"\",\n \\\"\"params\\\"\":{\n \\\"\"headers\\\"\": $utils.http.copyheaders($ctx.request.headers)\n }\n}\n\",\n ResponseTemplate = @\"#if($ctx.result.statusCode == 200)\n $ctx.result.body\n#else\n $utils.appendError($ctx.result.body, $ctx.result.statusCode)\n#end\n\",\n CachingConfig = new Aws.AppSync.Inputs.ResolverCachingConfigArgs\n {\n CachingKeys = new[]\n {\n \"$context.identity.sub\",\n \"$context.arguments.id\",\n },\n Ttl = 60,\n },\n });\n\n // PIPELINE type resolver\n var mutationPipelineTest = new Aws.AppSync.Resolver(\"Mutation_pipelineTest\", new()\n {\n Type = \"Mutation\",\n ApiId = test.Id,\n Field = \"pipelineTest\",\n RequestTemplate = \"{}\",\n ResponseTemplate = \"$util.toJson($ctx.result)\",\n Kind = \"PIPELINE\",\n PipelineConfig = new Aws.AppSync.Inputs.ResolverPipelineConfigArgs\n {\n Functions = new[]\n {\n test1.FunctionId,\n test2.FunctionId,\n test3.FunctionId,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := appsync.NewGraphQLApi(ctx, \"test\", \u0026appsync.GraphQLApiArgs{\n\t\t\tAuthenticationType: pulumi.String(\"API_KEY\"),\n\t\t\tName: pulumi.String(\"tf-example\"),\n\t\t\tSchema: pulumi.String(`type Mutation {\n\\tputPost(id: ID!, title: String!): Post\n}\n\ntype Post {\n\\tid: ID!\n\\ttitle: String!\n}\n\ntype Query {\n\\tsinglePost(id: ID!): Post\n}\n\nschema {\n\\tquery: Query\n\\tmutation: Mutation\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestDataSource, err := appsync.NewDataSource(ctx, \"test\", \u0026appsync.DataSourceArgs{\n\t\t\tApiId: test.ID(),\n\t\t\tName: pulumi.String(\"my_example\"),\n\t\t\tType: pulumi.String(\"HTTP\"),\n\t\t\tHttpConfig: \u0026appsync.DataSourceHttpConfigArgs{\n\t\t\t\tEndpoint: pulumi.String(\"http://example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// UNIT type resolver (default)\n\t\t_, err = appsync.NewResolver(ctx, \"test\", \u0026appsync.ResolverArgs{\n\t\t\tApiId: test.ID(),\n\t\t\tField: pulumi.String(\"singlePost\"),\n\t\t\tType: pulumi.String(\"Query\"),\n\t\t\tDataSource: testDataSource.Name,\n\t\t\tRequestTemplate: pulumi.String(`{\n \\\"version\\\": \\\"2018-05-29\\\",\n \\\"method\\\": \\\"GET\\\",\n \\\"resourcePath\\\": \\\"/\\\",\n \\\"params\\\":{\n \\\"headers\\\": $utils.http.copyheaders($ctx.request.headers)\n }\n}\n`),\n\t\t\tResponseTemplate: pulumi.String(`#if($ctx.result.statusCode == 200)\n $ctx.result.body\n#else\n $utils.appendError($ctx.result.body, $ctx.result.statusCode)\n#end\n`),\n\t\t\tCachingConfig: \u0026appsync.ResolverCachingConfigArgs{\n\t\t\t\tCachingKeys: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"$context.identity.sub\"),\n\t\t\t\t\tpulumi.String(\"$context.arguments.id\"),\n\t\t\t\t},\n\t\t\t\tTtl: pulumi.Int(60),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// PIPELINE type resolver\n\t\t_, err = appsync.NewResolver(ctx, \"Mutation_pipelineTest\", \u0026appsync.ResolverArgs{\n\t\t\tType: pulumi.String(\"Mutation\"),\n\t\t\tApiId: test.ID(),\n\t\t\tField: pulumi.String(\"pipelineTest\"),\n\t\t\tRequestTemplate: pulumi.String(\"{}\"),\n\t\t\tResponseTemplate: pulumi.String(\"$util.toJson($ctx.result)\"),\n\t\t\tKind: pulumi.String(\"PIPELINE\"),\n\t\t\tPipelineConfig: \u0026appsync.ResolverPipelineConfigArgs{\n\t\t\t\tFunctions: pulumi.StringArray{\n\t\t\t\t\ttest1.FunctionId,\n\t\t\t\t\ttest2.FunctionId,\n\t\t\t\t\ttest3.FunctionId,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport com.pulumi.aws.appsync.DataSource;\nimport com.pulumi.aws.appsync.DataSourceArgs;\nimport com.pulumi.aws.appsync.inputs.DataSourceHttpConfigArgs;\nimport com.pulumi.aws.appsync.Resolver;\nimport com.pulumi.aws.appsync.ResolverArgs;\nimport com.pulumi.aws.appsync.inputs.ResolverCachingConfigArgs;\nimport com.pulumi.aws.appsync.inputs.ResolverPipelineConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new GraphQLApi(\"test\", GraphQLApiArgs.builder()\n .authenticationType(\"API_KEY\")\n .name(\"tf-example\")\n .schema(\"\"\"\ntype Mutation {\n\\tputPost(id: ID!, title: String!): Post\n}\n\ntype Post {\n\\tid: ID!\n\\ttitle: String!\n}\n\ntype Query {\n\\tsinglePost(id: ID!): Post\n}\n\nschema {\n\\tquery: Query\n\\tmutation: Mutation\n}\n \"\"\")\n .build());\n\n var testDataSource = new DataSource(\"testDataSource\", DataSourceArgs.builder()\n .apiId(test.id())\n .name(\"my_example\")\n .type(\"HTTP\")\n .httpConfig(DataSourceHttpConfigArgs.builder()\n .endpoint(\"http://example.com\")\n .build())\n .build());\n\n // UNIT type resolver (default)\n var testResolver = new Resolver(\"testResolver\", ResolverArgs.builder()\n .apiId(test.id())\n .field(\"singlePost\")\n .type(\"Query\")\n .dataSource(testDataSource.name())\n .requestTemplate(\"\"\"\n{\n \\\"version\\\": \\\"2018-05-29\\\",\n \\\"method\\\": \\\"GET\\\",\n \\\"resourcePath\\\": \\\"/\\\",\n \\\"params\\\":{\n \\\"headers\\\": $utils.http.copyheaders($ctx.request.headers)\n }\n}\n \"\"\")\n .responseTemplate(\"\"\"\n#if($ctx.result.statusCode == 200)\n $ctx.result.body\n#else\n $utils.appendError($ctx.result.body, $ctx.result.statusCode)\n#end\n \"\"\")\n .cachingConfig(ResolverCachingConfigArgs.builder()\n .cachingKeys( \n \"$context.identity.sub\",\n \"$context.arguments.id\")\n .ttl(60)\n .build())\n .build());\n\n // PIPELINE type resolver\n var mutationPipelineTest = new Resolver(\"mutationPipelineTest\", ResolverArgs.builder()\n .type(\"Mutation\")\n .apiId(test.id())\n .field(\"pipelineTest\")\n .requestTemplate(\"{}\")\n .responseTemplate(\"$util.toJson($ctx.result)\")\n .kind(\"PIPELINE\")\n .pipelineConfig(ResolverPipelineConfigArgs.builder()\n .functions( \n test1.functionId(),\n test2.functionId(),\n test3.functionId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:appsync:GraphQLApi\n properties:\n authenticationType: API_KEY\n name: tf-example\n schema: |\n type Mutation {\n \\tputPost(id: ID!, title: String!): Post\n }\n\n type Post {\n \\tid: ID!\n \\ttitle: String!\n }\n\n type Query {\n \\tsinglePost(id: ID!): Post\n }\n\n schema {\n \\tquery: Query\n \\tmutation: Mutation\n }\n testDataSource:\n type: aws:appsync:DataSource\n name: test\n properties:\n apiId: ${test.id}\n name: my_example\n type: HTTP\n httpConfig:\n endpoint: http://example.com\n # UNIT type resolver (default)\n testResolver:\n type: aws:appsync:Resolver\n name: test\n properties:\n apiId: ${test.id}\n field: singlePost\n type: Query\n dataSource: ${testDataSource.name}\n requestTemplate: |\n {\n \\\"version\\\": \\\"2018-05-29\\\",\n \\\"method\\\": \\\"GET\\\",\n \\\"resourcePath\\\": \\\"/\\\",\n \\\"params\\\":{\n \\\"headers\\\": $utils.http.copyheaders($ctx.request.headers)\n }\n }\n responseTemplate: |\n #if($ctx.result.statusCode == 200)\n $ctx.result.body\n #else\n $utils.appendError($ctx.result.body, $ctx.result.statusCode)\n #end\n cachingConfig:\n cachingKeys:\n - $context.identity.sub\n - $context.arguments.id\n ttl: 60\n # PIPELINE type resolver\n mutationPipelineTest:\n type: aws:appsync:Resolver\n name: Mutation_pipelineTest\n properties:\n type: Mutation\n apiId: ${test.id}\n field: pipelineTest\n requestTemplate: '{}'\n responseTemplate: $util.toJson($ctx.result)\n kind: PIPELINE\n pipelineConfig:\n functions:\n - ${test1.functionId}\n - ${test2.functionId}\n - ${test3.functionId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### JS\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new aws.appsync.Resolver(\"example\", {\n type: \"Query\",\n apiId: testAwsAppsyncGraphqlApi.id,\n field: \"pipelineTest\",\n kind: \"PIPELINE\",\n code: std.file({\n input: \"some-code-dir\",\n }).then(invoke =\u003e invoke.result),\n runtime: {\n name: \"APPSYNC_JS\",\n runtimeVersion: \"1.0.0\",\n },\n pipelineConfig: {\n functions: [test.functionId],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.appsync.Resolver(\"example\",\n type=\"Query\",\n api_id=test_aws_appsync_graphql_api[\"id\"],\n field=\"pipelineTest\",\n kind=\"PIPELINE\",\n code=std.file(input=\"some-code-dir\").result,\n runtime={\n \"name\": \"APPSYNC_JS\",\n \"runtime_version\": \"1.0.0\",\n },\n pipeline_config={\n \"functions\": [test[\"functionId\"]],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.AppSync.Resolver(\"example\", new()\n {\n Type = \"Query\",\n ApiId = testAwsAppsyncGraphqlApi.Id,\n Field = \"pipelineTest\",\n Kind = \"PIPELINE\",\n Code = Std.File.Invoke(new()\n {\n Input = \"some-code-dir\",\n }).Apply(invoke =\u003e invoke.Result),\n Runtime = new Aws.AppSync.Inputs.ResolverRuntimeArgs\n {\n Name = \"APPSYNC_JS\",\n RuntimeVersion = \"1.0.0\",\n },\n PipelineConfig = new Aws.AppSync.Inputs.ResolverPipelineConfigArgs\n {\n Functions = new[]\n {\n test.FunctionId,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"some-code-dir\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appsync.NewResolver(ctx, \"example\", \u0026appsync.ResolverArgs{\n\t\t\tType: pulumi.String(\"Query\"),\n\t\t\tApiId: pulumi.Any(testAwsAppsyncGraphqlApi.Id),\n\t\t\tField: pulumi.String(\"pipelineTest\"),\n\t\t\tKind: pulumi.String(\"PIPELINE\"),\n\t\t\tCode: pulumi.String(invokeFile.Result),\n\t\t\tRuntime: \u0026appsync.ResolverRuntimeArgs{\n\t\t\t\tName: pulumi.String(\"APPSYNC_JS\"),\n\t\t\t\tRuntimeVersion: pulumi.String(\"1.0.0\"),\n\t\t\t},\n\t\t\tPipelineConfig: \u0026appsync.ResolverPipelineConfigArgs{\n\t\t\t\tFunctions: pulumi.StringArray{\n\t\t\t\t\ttest.FunctionId,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.appsync.Resolver;\nimport com.pulumi.aws.appsync.ResolverArgs;\nimport com.pulumi.aws.appsync.inputs.ResolverRuntimeArgs;\nimport com.pulumi.aws.appsync.inputs.ResolverPipelineConfigArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Resolver(\"example\", ResolverArgs.builder()\n .type(\"Query\")\n .apiId(testAwsAppsyncGraphqlApi.id())\n .field(\"pipelineTest\")\n .kind(\"PIPELINE\")\n .code(StdFunctions.file(FileArgs.builder()\n .input(\"some-code-dir\")\n .build()).result())\n .runtime(ResolverRuntimeArgs.builder()\n .name(\"APPSYNC_JS\")\n .runtimeVersion(\"1.0.0\")\n .build())\n .pipelineConfig(ResolverPipelineConfigArgs.builder()\n .functions(test.functionId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:appsync:Resolver\n properties:\n type: Query\n apiId: ${testAwsAppsyncGraphqlApi.id}\n field: pipelineTest\n kind: PIPELINE\n code:\n fn::invoke:\n function: std:file\n arguments:\n input: some-code-dir\n return: result\n runtime:\n name: APPSYNC_JS\n runtimeVersion: 1.0.0\n pipelineConfig:\n functions:\n - ${test.functionId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import `aws_appsync_resolver` using the `api_id`, a hyphen, `type`, a hypen and `field`. For example:\n\n```sh\n$ pulumi import aws:appsync/resolver:Resolver example abcdef123456-exampleType-exampleField\n```\n", "properties": { "apiId": { "type": "string", @@ -212319,7 +212319,7 @@ } }, "aws:autoscaling/tag:Tag": { - "description": "Manages an individual Autoscaling Group (ASG) tag. This resource should only be used in cases where ASGs are created outside the provider (e.g., ASGs implicitly created by EKS Node Groups).\n\n\u003e **NOTE:** This tagging resource should not be combined with the resource for managing the parent resource. For example, using \u003cspan pulumi-lang-nodejs=\"`aws.autoscaling.Group`\" pulumi-lang-dotnet=\"`aws.autoscaling.Group`\" pulumi-lang-go=\"`autoscaling.Group`\" pulumi-lang-python=\"`autoscaling.Group`\" pulumi-lang-yaml=\"`aws.autoscaling.Group`\" pulumi-lang-java=\"`aws.autoscaling.Group`\"\u003e`aws.autoscaling.Group`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`aws.autoscaling.Tag`\" pulumi-lang-dotnet=\"`aws.autoscaling.Tag`\" pulumi-lang-go=\"`autoscaling.Tag`\" pulumi-lang-python=\"`autoscaling.Tag`\" pulumi-lang-yaml=\"`aws.autoscaling.Tag`\" pulumi-lang-java=\"`aws.autoscaling.Tag`\"\u003e`aws.autoscaling.Tag`\u003c/span\u003e to manage tags of the same ASG will cause a perpetual difference where the \u003cspan pulumi-lang-nodejs=\"`aws.autoscaling.Group`\" pulumi-lang-dotnet=\"`aws.autoscaling.Group`\" pulumi-lang-go=\"`autoscaling.Group`\" pulumi-lang-python=\"`autoscaling.Group`\" pulumi-lang-yaml=\"`aws.autoscaling.Group`\" pulumi-lang-java=\"`aws.autoscaling.Group`\"\u003e`aws.autoscaling.Group`\u003c/span\u003e resource will try to remove the tag being added by the \u003cspan pulumi-lang-nodejs=\"`aws.autoscaling.Tag`\" pulumi-lang-dotnet=\"`aws.autoscaling.Tag`\" pulumi-lang-go=\"`autoscaling.Tag`\" pulumi-lang-python=\"`autoscaling.Tag`\" pulumi-lang-yaml=\"`aws.autoscaling.Tag`\" pulumi-lang-java=\"`aws.autoscaling.Tag`\"\u003e`aws.autoscaling.Tag`\u003c/span\u003e resource.\n\n\u003e **NOTE:** This tagging resource does not use the provider \u003cspan pulumi-lang-nodejs=\"`ignoreTags`\" pulumi-lang-dotnet=\"`IgnoreTags`\" pulumi-lang-go=\"`ignoreTags`\" pulumi-lang-python=\"`ignore_tags`\" pulumi-lang-yaml=\"`ignoreTags`\" pulumi-lang-java=\"`ignoreTags`\"\u003e`ignore_tags`\u003c/span\u003e configuration.\n\n## Import\n\nUsing `pulumi import`, import `aws_autoscaling_group_tag` using the ASG name and key, separated by a comma (`,`). For example:\n\n```sh\n$ pulumi import aws:autoscaling/tag:Tag example asg-example,k8s.io/cluster-autoscaler/node-template/label/eks.amazonaws.com/capacityType\n```\n", + "description": "Manages an individual Autoscaling Group (ASG) tag. This resource should only be used in cases where ASGs are created outside the provider (e.g., ASGs implicitly created by EKS Node Groups).\n\n\u003e **NOTE:** This tagging resource should not be combined with the resource for managing the parent resource. For example, using \u003cspan pulumi-lang-nodejs=\"`aws.autoscaling.Group`\" pulumi-lang-dotnet=\"`aws.autoscaling.Group`\" pulumi-lang-go=\"`autoscaling.Group`\" pulumi-lang-python=\"`autoscaling.Group`\" pulumi-lang-yaml=\"`aws.autoscaling.Group`\" pulumi-lang-java=\"`aws.autoscaling.Group`\"\u003e`aws.autoscaling.Group`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`aws.autoscaling.Tag`\" pulumi-lang-dotnet=\"`aws.autoscaling.Tag`\" pulumi-lang-go=\"`autoscaling.Tag`\" pulumi-lang-python=\"`autoscaling.Tag`\" pulumi-lang-yaml=\"`aws.autoscaling.Tag`\" pulumi-lang-java=\"`aws.autoscaling.Tag`\"\u003e`aws.autoscaling.Tag`\u003c/span\u003e to manage tags of the same ASG will cause a perpetual difference where the \u003cspan pulumi-lang-nodejs=\"`aws.autoscaling.Group`\" pulumi-lang-dotnet=\"`aws.autoscaling.Group`\" pulumi-lang-go=\"`autoscaling.Group`\" pulumi-lang-python=\"`autoscaling.Group`\" pulumi-lang-yaml=\"`aws.autoscaling.Group`\" pulumi-lang-java=\"`aws.autoscaling.Group`\"\u003e`aws.autoscaling.Group`\u003c/span\u003e resource will try to remove the tag being added by the \u003cspan pulumi-lang-nodejs=\"`aws.autoscaling.Tag`\" pulumi-lang-dotnet=\"`aws.autoscaling.Tag`\" pulumi-lang-go=\"`autoscaling.Tag`\" pulumi-lang-python=\"`autoscaling.Tag`\" pulumi-lang-yaml=\"`aws.autoscaling.Tag`\" pulumi-lang-java=\"`aws.autoscaling.Tag`\"\u003e`aws.autoscaling.Tag`\u003c/span\u003e resource.\n\n\u003e **NOTE:** This tagging resource does not use the provider \u003cspan pulumi-lang-nodejs=\"`ignoreTags`\" pulumi-lang-dotnet=\"`IgnoreTags`\" pulumi-lang-go=\"`ignoreTags`\" pulumi-lang-python=\"`ignore_tags`\" pulumi-lang-yaml=\"`ignoreTags`\" pulumi-lang-java=\"`ignoreTags`\"\u003e`ignore_tags`\u003c/span\u003e configuration.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new aws.eks.NodeGroup(\"example\", {\n clusterName: \"example\",\n nodeGroupName: \"example\",\n});\nconst exampleTag: aws.autoscaling.Tag[] = [];\nstd.tosetOutput({\n input: std.flattenOutput({\n input: example.resources.apply(resources =\u003e resources.map(resources =\u003e (resources.autoscalingGroups))),\n }).apply(invoke =\u003e .map(asg =\u003e (asg.name))),\n}).apply(invoke =\u003e {\n for (const range of invoke.result.map((v, k) =\u003e ({key: k, value: v}))) {\n exampleTag.push(new aws.autoscaling.Tag(`example-${range.key}`, {\n autoscalingGroupName: range.value,\n tag: {\n key: \"k8s.io/cluster-autoscaler/node-template/label/eks.amazonaws.com/capacityType\",\n value: \"SPOT\",\n propagateAtLaunch: false,\n },\n }));\n }\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.eks.NodeGroup(\"example\",\n cluster_name=\"example\",\n node_group_name=\"example\")\nexample_tag = []\ndef create_example(range_body):\n for range in [{\"key\": k, \"value\": v} for [k, v] in enumerate(range_body)]:\n example_tag.append(aws.autoscaling.Tag(f\"example-{range['key']}\",\n autoscaling_group_name=range[\"value\"],\n tag={\n \"key\": \"k8s.io/cluster-autoscaler/node-template/label/eks.amazonaws.com/capacityType\",\n \"value\": \"SPOT\",\n \"propagate_at_launch\": False,\n }))\n\nstd.toset_output(input=std.flatten_output(input=example.resources.apply(lambda resources: [resources.autoscaling_groups for resources in resources])).apply(lambda invoke: [asg[\"name\"] for asg in invoke.result])).apply(lambda resolved_outputs: create_example(resolved_outputs['invoke'].result))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Eks.NodeGroup(\"example\", new()\n {\n ClusterName = \"example\",\n NodeGroupName = \"example\",\n });\n\n var exampleTag = new List\u003cAws.AutoScaling.Tag\u003e();\n foreach (var range in )\n {\n exampleTag.Add(new Aws.AutoScaling.Tag($\"example-{range.Key}\", new()\n {\n AutoscalingGroupName = range.Value,\n TagDetails = new Aws.AutoScaling.Inputs.TagTagArgs\n {\n Key = \"k8s.io/cluster-autoscaler/node-template/label/eks.amazonaws.com/capacityType\",\n Value = \"SPOT\",\n PropagateAtLaunch = false,\n },\n }));\n }\n});\n```\n```yaml\nresources:\n example:\n type: aws:eks:NodeGroup\n properties:\n clusterName: example\n nodeGroupName: example\n exampleTag:\n type: aws:autoscaling:Tag\n name: example\n properties:\n autoscalingGroupName: ${range.value}\n tag:\n key: k8s.io/cluster-autoscaler/node-template/label/eks.amazonaws.com/capacityType\n value: SPOT\n propagateAtLaunch: false\n options: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import `aws_autoscaling_group_tag` using the ASG name and key, separated by a comma (`,`). For example:\n\n```sh\n$ pulumi import aws:autoscaling/tag:Tag example asg-example,k8s.io/cluster-autoscaler/node-template/label/eks.amazonaws.com/capacityType\n```\n", "properties": { "autoscalingGroupName": { "type": "string", @@ -212454,7 +212454,7 @@ } }, "aws:autoscalingplans/scalingPlan:ScalingPlan": { - "description": "Manages an AWS Auto Scaling scaling plan.\nMore information can be found in the [AWS Auto Scaling User Guide](https://docs.aws.amazon.com/autoscaling/plans/userguide/what-is-aws-auto-scaling.html).\n\n\u003e **NOTE:** The AWS Auto Scaling service uses an AWS IAM service-linked role to manage predictive scaling of Amazon EC2 Auto Scaling groups. The service attempts to automatically create this role the first time a scaling plan with predictive scaling enabled is created.\nAn \u003cspan pulumi-lang-nodejs=\"`aws.iam.ServiceLinkedRole`\" pulumi-lang-dotnet=\"`aws.iam.ServiceLinkedRole`\" pulumi-lang-go=\"`iam.ServiceLinkedRole`\" pulumi-lang-python=\"`iam.ServiceLinkedRole`\" pulumi-lang-yaml=\"`aws.iam.ServiceLinkedRole`\" pulumi-lang-java=\"`aws.iam.ServiceLinkedRole`\"\u003e`aws.iam.ServiceLinkedRole`\u003c/span\u003e resource can be used to manually manage this role.\nSee the [AWS documentation](https://docs.aws.amazon.com/autoscaling/plans/userguide/aws-auto-scaling-service-linked-roles.html#create-service-linked-role-manual) for more details.\n\n## Example Usage\n\n## Import\n\nUsing `pulumi import`, import Auto Scaling scaling plans using the `name`. For example:\n\n```sh\n$ pulumi import aws:autoscalingplans/scalingPlan:ScalingPlan example MyScale1\n```\n", + "description": "Manages an AWS Auto Scaling scaling plan.\nMore information can be found in the [AWS Auto Scaling User Guide](https://docs.aws.amazon.com/autoscaling/plans/userguide/what-is-aws-auto-scaling.html).\n\n\u003e **NOTE:** The AWS Auto Scaling service uses an AWS IAM service-linked role to manage predictive scaling of Amazon EC2 Auto Scaling groups. The service attempts to automatically create this role the first time a scaling plan with predictive scaling enabled is created.\nAn \u003cspan pulumi-lang-nodejs=\"`aws.iam.ServiceLinkedRole`\" pulumi-lang-dotnet=\"`aws.iam.ServiceLinkedRole`\" pulumi-lang-go=\"`iam.ServiceLinkedRole`\" pulumi-lang-python=\"`iam.ServiceLinkedRole`\" pulumi-lang-yaml=\"`aws.iam.ServiceLinkedRole`\" pulumi-lang-java=\"`aws.iam.ServiceLinkedRole`\"\u003e`aws.iam.ServiceLinkedRole`\u003c/span\u003e resource can be used to manually manage this role.\nSee the [AWS documentation](https://docs.aws.amazon.com/autoscaling/plans/userguide/aws-auto-scaling-service-linked-roles.html#create-service-linked-role-manual) for more details.\n\n## Example Usage\n\n### Basic Dynamic Scaling\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst available = aws.getAvailabilityZones({});\nconst example = new aws.autoscaling.Group(\"example\", {\n namePrefix: \"example\",\n launchConfiguration: exampleAwsLaunchConfiguration.name,\n availabilityZones: [available.then(available =\u003e available.names?.[0])],\n minSize: 0,\n maxSize: 3,\n tags: [{\n key: \"application\",\n value: \"example\",\n propagateAtLaunch: true,\n }],\n});\nconst exampleScalingPlan = new aws.autoscalingplans.ScalingPlan(\"example\", {\n name: \"example-dynamic-cost-optimization\",\n applicationSource: {\n tagFilters: [{\n key: \"application\",\n values: [\"example\"],\n }],\n },\n scalingInstructions: [{\n maxCapacity: 3,\n minCapacity: 0,\n resourceId: std.format({\n input: \"autoScalingGroup/%s\",\n args: [example.name],\n }).then(invoke =\u003e invoke.result),\n scalableDimension: \"autoscaling:autoScalingGroup:DesiredCapacity\",\n serviceNamespace: \"autoscaling\",\n targetTrackingConfigurations: [{\n predefinedScalingMetricSpecification: {\n predefinedScalingMetricType: \"ASGAverageCPUUtilization\",\n },\n targetValue: 70,\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\navailable = aws.get_availability_zones()\nexample = aws.autoscaling.Group(\"example\",\n name_prefix=\"example\",\n launch_configuration=example_aws_launch_configuration[\"name\"],\n availability_zones=[available.names[0]],\n min_size=0,\n max_size=3,\n tags=[{\n \"key\": \"application\",\n \"value\": \"example\",\n \"propagate_at_launch\": True,\n }])\nexample_scaling_plan = aws.autoscalingplans.ScalingPlan(\"example\",\n name=\"example-dynamic-cost-optimization\",\n application_source={\n \"tag_filters\": [{\n \"key\": \"application\",\n \"values\": [\"example\"],\n }],\n },\n scaling_instructions=[{\n \"max_capacity\": 3,\n \"min_capacity\": 0,\n \"resource_id\": std.format(input=\"autoScalingGroup/%s\",\n args=[example.name]).result,\n \"scalable_dimension\": \"autoscaling:autoScalingGroup:DesiredCapacity\",\n \"service_namespace\": \"autoscaling\",\n \"target_tracking_configurations\": [{\n \"predefined_scaling_metric_specification\": {\n \"predefined_scaling_metric_type\": \"ASGAverageCPUUtilization\",\n },\n \"target_value\": 70,\n }],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Aws.GetAvailabilityZones.Invoke();\n\n var example = new Aws.AutoScaling.Group(\"example\", new()\n {\n NamePrefix = \"example\",\n LaunchConfiguration = exampleAwsLaunchConfiguration.Name,\n AvailabilityZones = new[]\n {\n available.Apply(getAvailabilityZonesResult =\u003e getAvailabilityZonesResult.Names[0]),\n },\n MinSize = 0,\n MaxSize = 3,\n Tags = new[]\n {\n new Aws.AutoScaling.Inputs.GroupTagArgs\n {\n Key = \"application\",\n Value = \"example\",\n PropagateAtLaunch = true,\n },\n },\n });\n\n var exampleScalingPlan = new Aws.AutoScalingPlans.ScalingPlan(\"example\", new()\n {\n Name = \"example-dynamic-cost-optimization\",\n ApplicationSource = new Aws.AutoScalingPlans.Inputs.ScalingPlanApplicationSourceArgs\n {\n TagFilters = new[]\n {\n new Aws.AutoScalingPlans.Inputs.ScalingPlanApplicationSourceTagFilterArgs\n {\n Key = \"application\",\n Values = new[]\n {\n \"example\",\n },\n },\n },\n },\n ScalingInstructions = new[]\n {\n new Aws.AutoScalingPlans.Inputs.ScalingPlanScalingInstructionArgs\n {\n MaxCapacity = 3,\n MinCapacity = 0,\n ResourceId = Std.Format.Invoke(new()\n {\n Input = \"autoScalingGroup/%s\",\n Args = new[]\n {\n example.Name,\n },\n }).Apply(invoke =\u003e invoke.Result),\n ScalableDimension = \"autoscaling:autoScalingGroup:DesiredCapacity\",\n ServiceNamespace = \"autoscaling\",\n TargetTrackingConfigurations = new[]\n {\n new Aws.AutoScalingPlans.Inputs.ScalingPlanScalingInstructionTargetTrackingConfigurationArgs\n {\n PredefinedScalingMetricSpecification = new Aws.AutoScalingPlans.Inputs.ScalingPlanScalingInstructionTargetTrackingConfigurationPredefinedScalingMetricSpecificationArgs\n {\n PredefinedScalingMetricType = \"ASGAverageCPUUtilization\",\n },\n TargetValue = 70,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/autoscaling\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/autoscalingplans\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tavailable, err := aws.GetAvailabilityZones(ctx, \u0026aws.GetAvailabilityZonesArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := autoscaling.NewGroup(ctx, \"example\", \u0026autoscaling.GroupArgs{\n\t\t\tNamePrefix: pulumi.String(\"example\"),\n\t\t\tLaunchConfiguration: pulumi.Any(exampleAwsLaunchConfiguration.Name),\n\t\t\tAvailabilityZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(available.Names[0]),\n\t\t\t},\n\t\t\tMinSize: pulumi.Int(0),\n\t\t\tMaxSize: pulumi.Int(3),\n\t\t\tTags: autoscaling.GroupTagArray{\n\t\t\t\t\u0026autoscaling.GroupTagArgs{\n\t\t\t\t\tKey: pulumi.String(\"application\"),\n\t\t\t\t\tValue: pulumi.String(\"example\"),\n\t\t\t\t\tPropagateAtLaunch: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFormat, err := std.Format(ctx, \u0026std.FormatArgs{\n\t\t\tInput: \"autoScalingGroup/%s\",\n\t\t\tArgs: pulumi.StringArray{\n\t\t\t\texample.Name,\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = autoscalingplans.NewScalingPlan(ctx, \"example\", \u0026autoscalingplans.ScalingPlanArgs{\n\t\t\tName: pulumi.String(\"example-dynamic-cost-optimization\"),\n\t\t\tApplicationSource: \u0026autoscalingplans.ScalingPlanApplicationSourceArgs{\n\t\t\t\tTagFilters: autoscalingplans.ScalingPlanApplicationSourceTagFilterArray{\n\t\t\t\t\t\u0026autoscalingplans.ScalingPlanApplicationSourceTagFilterArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"application\"),\n\t\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tScalingInstructions: autoscalingplans.ScalingPlanScalingInstructionArray{\n\t\t\t\t\u0026autoscalingplans.ScalingPlanScalingInstructionArgs{\n\t\t\t\t\tMaxCapacity: pulumi.Int(3),\n\t\t\t\t\tMinCapacity: pulumi.Int(0),\n\t\t\t\t\tResourceId: pulumi.String(invokeFormat.Result),\n\t\t\t\t\tScalableDimension: pulumi.String(\"autoscaling:autoScalingGroup:DesiredCapacity\"),\n\t\t\t\t\tServiceNamespace: pulumi.String(\"autoscaling\"),\n\t\t\t\t\tTargetTrackingConfigurations: autoscalingplans.ScalingPlanScalingInstructionTargetTrackingConfigurationArray{\n\t\t\t\t\t\t\u0026autoscalingplans.ScalingPlanScalingInstructionTargetTrackingConfigurationArgs{\n\t\t\t\t\t\t\tPredefinedScalingMetricSpecification: \u0026autoscalingplans.ScalingPlanScalingInstructionTargetTrackingConfigurationPredefinedScalingMetricSpecificationArgs{\n\t\t\t\t\t\t\t\tPredefinedScalingMetricType: pulumi.String(\"ASGAverageCPUUtilization\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTargetValue: pulumi.Float64(70),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.AwsFunctions;\nimport com.pulumi.aws.inputs.GetAvailabilityZonesArgs;\nimport com.pulumi.aws.autoscaling.Group;\nimport com.pulumi.aws.autoscaling.GroupArgs;\nimport com.pulumi.aws.autoscaling.inputs.GroupTagArgs;\nimport com.pulumi.aws.autoscalingplans.ScalingPlan;\nimport com.pulumi.aws.autoscalingplans.ScalingPlanArgs;\nimport com.pulumi.aws.autoscalingplans.inputs.ScalingPlanApplicationSourceArgs;\nimport com.pulumi.aws.autoscalingplans.inputs.ScalingPlanScalingInstructionArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FormatArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = AwsFunctions.getAvailabilityZones(GetAvailabilityZonesArgs.builder()\n .build());\n\n var example = new Group(\"example\", GroupArgs.builder()\n .namePrefix(\"example\")\n .launchConfiguration(exampleAwsLaunchConfiguration.name())\n .availabilityZones(available.names()[0])\n .minSize(0)\n .maxSize(3)\n .tags(GroupTagArgs.builder()\n .key(\"application\")\n .value(\"example\")\n .propagateAtLaunch(true)\n .build())\n .build());\n\n var exampleScalingPlan = new ScalingPlan(\"exampleScalingPlan\", ScalingPlanArgs.builder()\n .name(\"example-dynamic-cost-optimization\")\n .applicationSource(ScalingPlanApplicationSourceArgs.builder()\n .tagFilters(ScalingPlanApplicationSourceTagFilterArgs.builder()\n .key(\"application\")\n .values(\"example\")\n .build())\n .build())\n .scalingInstructions(ScalingPlanScalingInstructionArgs.builder()\n .maxCapacity(3)\n .minCapacity(0)\n .resourceId(StdFunctions.format(FormatArgs.builder()\n .input(\"autoScalingGroup/%s\")\n .args(example.name())\n .build()).result())\n .scalableDimension(\"autoscaling:autoScalingGroup:DesiredCapacity\")\n .serviceNamespace(\"autoscaling\")\n .targetTrackingConfigurations(ScalingPlanScalingInstructionTargetTrackingConfigurationArgs.builder()\n .predefinedScalingMetricSpecification(ScalingPlanScalingInstructionTargetTrackingConfigurationPredefinedScalingMetricSpecificationArgs.builder()\n .predefinedScalingMetricType(\"ASGAverageCPUUtilization\")\n .build())\n .targetValue(70.0)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:autoscaling:Group\n properties:\n namePrefix: example\n launchConfiguration: ${exampleAwsLaunchConfiguration.name}\n availabilityZones:\n - ${available.names[0]}\n minSize: 0\n maxSize: 3\n tags:\n - key: application\n value: example\n propagateAtLaunch: true\n exampleScalingPlan:\n type: aws:autoscalingplans:ScalingPlan\n name: example\n properties:\n name: example-dynamic-cost-optimization\n applicationSource:\n tagFilters:\n - key: application\n values:\n - example\n scalingInstructions:\n - maxCapacity: 3\n minCapacity: 0\n resourceId:\n fn::invoke:\n function: std:format\n arguments:\n input: autoScalingGroup/%s\n args:\n - ${example.name}\n return: result\n scalableDimension: autoscaling:autoScalingGroup:DesiredCapacity\n serviceNamespace: autoscaling\n targetTrackingConfigurations:\n - predefinedScalingMetricSpecification:\n predefinedScalingMetricType: ASGAverageCPUUtilization\n targetValue: 70\nvariables:\n available:\n fn::invoke:\n function: aws:getAvailabilityZones\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Basic Predictive Scaling\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst available = aws.getAvailabilityZones({});\nconst example = new aws.autoscaling.Group(\"example\", {\n namePrefix: \"example\",\n launchConfiguration: exampleAwsLaunchConfiguration.name,\n availabilityZones: [available.then(available =\u003e available.names?.[0])],\n minSize: 0,\n maxSize: 3,\n tags: [{\n key: \"application\",\n value: \"example\",\n propagateAtLaunch: true,\n }],\n});\nconst exampleScalingPlan = new aws.autoscalingplans.ScalingPlan(\"example\", {\n name: \"example-predictive-cost-optimization\",\n applicationSource: {\n tagFilters: [{\n key: \"application\",\n values: [\"example\"],\n }],\n },\n scalingInstructions: [{\n disableDynamicScaling: true,\n maxCapacity: 3,\n minCapacity: 0,\n resourceId: std.format({\n input: \"autoScalingGroup/%s\",\n args: [example.name],\n }).then(invoke =\u003e invoke.result),\n scalableDimension: \"autoscaling:autoScalingGroup:DesiredCapacity\",\n serviceNamespace: \"autoscaling\",\n targetTrackingConfigurations: [{\n predefinedScalingMetricSpecification: {\n predefinedScalingMetricType: \"ASGAverageCPUUtilization\",\n },\n targetValue: 70,\n }],\n predictiveScalingMaxCapacityBehavior: \"SetForecastCapacityToMaxCapacity\",\n predictiveScalingMode: \"ForecastAndScale\",\n predefinedLoadMetricSpecification: {\n predefinedLoadMetricType: \"ASGTotalCPUUtilization\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\navailable = aws.get_availability_zones()\nexample = aws.autoscaling.Group(\"example\",\n name_prefix=\"example\",\n launch_configuration=example_aws_launch_configuration[\"name\"],\n availability_zones=[available.names[0]],\n min_size=0,\n max_size=3,\n tags=[{\n \"key\": \"application\",\n \"value\": \"example\",\n \"propagate_at_launch\": True,\n }])\nexample_scaling_plan = aws.autoscalingplans.ScalingPlan(\"example\",\n name=\"example-predictive-cost-optimization\",\n application_source={\n \"tag_filters\": [{\n \"key\": \"application\",\n \"values\": [\"example\"],\n }],\n },\n scaling_instructions=[{\n \"disable_dynamic_scaling\": True,\n \"max_capacity\": 3,\n \"min_capacity\": 0,\n \"resource_id\": std.format(input=\"autoScalingGroup/%s\",\n args=[example.name]).result,\n \"scalable_dimension\": \"autoscaling:autoScalingGroup:DesiredCapacity\",\n \"service_namespace\": \"autoscaling\",\n \"target_tracking_configurations\": [{\n \"predefined_scaling_metric_specification\": {\n \"predefined_scaling_metric_type\": \"ASGAverageCPUUtilization\",\n },\n \"target_value\": 70,\n }],\n \"predictive_scaling_max_capacity_behavior\": \"SetForecastCapacityToMaxCapacity\",\n \"predictive_scaling_mode\": \"ForecastAndScale\",\n \"predefined_load_metric_specification\": {\n \"predefined_load_metric_type\": \"ASGTotalCPUUtilization\",\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Aws.GetAvailabilityZones.Invoke();\n\n var example = new Aws.AutoScaling.Group(\"example\", new()\n {\n NamePrefix = \"example\",\n LaunchConfiguration = exampleAwsLaunchConfiguration.Name,\n AvailabilityZones = new[]\n {\n available.Apply(getAvailabilityZonesResult =\u003e getAvailabilityZonesResult.Names[0]),\n },\n MinSize = 0,\n MaxSize = 3,\n Tags = new[]\n {\n new Aws.AutoScaling.Inputs.GroupTagArgs\n {\n Key = \"application\",\n Value = \"example\",\n PropagateAtLaunch = true,\n },\n },\n });\n\n var exampleScalingPlan = new Aws.AutoScalingPlans.ScalingPlan(\"example\", new()\n {\n Name = \"example-predictive-cost-optimization\",\n ApplicationSource = new Aws.AutoScalingPlans.Inputs.ScalingPlanApplicationSourceArgs\n {\n TagFilters = new[]\n {\n new Aws.AutoScalingPlans.Inputs.ScalingPlanApplicationSourceTagFilterArgs\n {\n Key = \"application\",\n Values = new[]\n {\n \"example\",\n },\n },\n },\n },\n ScalingInstructions = new[]\n {\n new Aws.AutoScalingPlans.Inputs.ScalingPlanScalingInstructionArgs\n {\n DisableDynamicScaling = true,\n MaxCapacity = 3,\n MinCapacity = 0,\n ResourceId = Std.Format.Invoke(new()\n {\n Input = \"autoScalingGroup/%s\",\n Args = new[]\n {\n example.Name,\n },\n }).Apply(invoke =\u003e invoke.Result),\n ScalableDimension = \"autoscaling:autoScalingGroup:DesiredCapacity\",\n ServiceNamespace = \"autoscaling\",\n TargetTrackingConfigurations = new[]\n {\n new Aws.AutoScalingPlans.Inputs.ScalingPlanScalingInstructionTargetTrackingConfigurationArgs\n {\n PredefinedScalingMetricSpecification = new Aws.AutoScalingPlans.Inputs.ScalingPlanScalingInstructionTargetTrackingConfigurationPredefinedScalingMetricSpecificationArgs\n {\n PredefinedScalingMetricType = \"ASGAverageCPUUtilization\",\n },\n TargetValue = 70,\n },\n },\n PredictiveScalingMaxCapacityBehavior = \"SetForecastCapacityToMaxCapacity\",\n PredictiveScalingMode = \"ForecastAndScale\",\n PredefinedLoadMetricSpecification = new Aws.AutoScalingPlans.Inputs.ScalingPlanScalingInstructionPredefinedLoadMetricSpecificationArgs\n {\n PredefinedLoadMetricType = \"ASGTotalCPUUtilization\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/autoscaling\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/autoscalingplans\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tavailable, err := aws.GetAvailabilityZones(ctx, \u0026aws.GetAvailabilityZonesArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := autoscaling.NewGroup(ctx, \"example\", \u0026autoscaling.GroupArgs{\n\t\t\tNamePrefix: pulumi.String(\"example\"),\n\t\t\tLaunchConfiguration: pulumi.Any(exampleAwsLaunchConfiguration.Name),\n\t\t\tAvailabilityZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(available.Names[0]),\n\t\t\t},\n\t\t\tMinSize: pulumi.Int(0),\n\t\t\tMaxSize: pulumi.Int(3),\n\t\t\tTags: autoscaling.GroupTagArray{\n\t\t\t\t\u0026autoscaling.GroupTagArgs{\n\t\t\t\t\tKey: pulumi.String(\"application\"),\n\t\t\t\t\tValue: pulumi.String(\"example\"),\n\t\t\t\t\tPropagateAtLaunch: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFormat, err := std.Format(ctx, \u0026std.FormatArgs{\n\t\t\tInput: \"autoScalingGroup/%s\",\n\t\t\tArgs: pulumi.StringArray{\n\t\t\t\texample.Name,\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = autoscalingplans.NewScalingPlan(ctx, \"example\", \u0026autoscalingplans.ScalingPlanArgs{\n\t\t\tName: pulumi.String(\"example-predictive-cost-optimization\"),\n\t\t\tApplicationSource: \u0026autoscalingplans.ScalingPlanApplicationSourceArgs{\n\t\t\t\tTagFilters: autoscalingplans.ScalingPlanApplicationSourceTagFilterArray{\n\t\t\t\t\t\u0026autoscalingplans.ScalingPlanApplicationSourceTagFilterArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"application\"),\n\t\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tScalingInstructions: autoscalingplans.ScalingPlanScalingInstructionArray{\n\t\t\t\t\u0026autoscalingplans.ScalingPlanScalingInstructionArgs{\n\t\t\t\t\tDisableDynamicScaling: pulumi.Bool(true),\n\t\t\t\t\tMaxCapacity: pulumi.Int(3),\n\t\t\t\t\tMinCapacity: pulumi.Int(0),\n\t\t\t\t\tResourceId: pulumi.String(invokeFormat.Result),\n\t\t\t\t\tScalableDimension: pulumi.String(\"autoscaling:autoScalingGroup:DesiredCapacity\"),\n\t\t\t\t\tServiceNamespace: pulumi.String(\"autoscaling\"),\n\t\t\t\t\tTargetTrackingConfigurations: autoscalingplans.ScalingPlanScalingInstructionTargetTrackingConfigurationArray{\n\t\t\t\t\t\t\u0026autoscalingplans.ScalingPlanScalingInstructionTargetTrackingConfigurationArgs{\n\t\t\t\t\t\t\tPredefinedScalingMetricSpecification: \u0026autoscalingplans.ScalingPlanScalingInstructionTargetTrackingConfigurationPredefinedScalingMetricSpecificationArgs{\n\t\t\t\t\t\t\t\tPredefinedScalingMetricType: pulumi.String(\"ASGAverageCPUUtilization\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTargetValue: pulumi.Float64(70),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tPredictiveScalingMaxCapacityBehavior: pulumi.String(\"SetForecastCapacityToMaxCapacity\"),\n\t\t\t\t\tPredictiveScalingMode: pulumi.String(\"ForecastAndScale\"),\n\t\t\t\t\tPredefinedLoadMetricSpecification: \u0026autoscalingplans.ScalingPlanScalingInstructionPredefinedLoadMetricSpecificationArgs{\n\t\t\t\t\t\tPredefinedLoadMetricType: pulumi.String(\"ASGTotalCPUUtilization\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.AwsFunctions;\nimport com.pulumi.aws.inputs.GetAvailabilityZonesArgs;\nimport com.pulumi.aws.autoscaling.Group;\nimport com.pulumi.aws.autoscaling.GroupArgs;\nimport com.pulumi.aws.autoscaling.inputs.GroupTagArgs;\nimport com.pulumi.aws.autoscalingplans.ScalingPlan;\nimport com.pulumi.aws.autoscalingplans.ScalingPlanArgs;\nimport com.pulumi.aws.autoscalingplans.inputs.ScalingPlanApplicationSourceArgs;\nimport com.pulumi.aws.autoscalingplans.inputs.ScalingPlanScalingInstructionArgs;\nimport com.pulumi.aws.autoscalingplans.inputs.ScalingPlanScalingInstructionPredefinedLoadMetricSpecificationArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FormatArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = AwsFunctions.getAvailabilityZones(GetAvailabilityZonesArgs.builder()\n .build());\n\n var example = new Group(\"example\", GroupArgs.builder()\n .namePrefix(\"example\")\n .launchConfiguration(exampleAwsLaunchConfiguration.name())\n .availabilityZones(available.names()[0])\n .minSize(0)\n .maxSize(3)\n .tags(GroupTagArgs.builder()\n .key(\"application\")\n .value(\"example\")\n .propagateAtLaunch(true)\n .build())\n .build());\n\n var exampleScalingPlan = new ScalingPlan(\"exampleScalingPlan\", ScalingPlanArgs.builder()\n .name(\"example-predictive-cost-optimization\")\n .applicationSource(ScalingPlanApplicationSourceArgs.builder()\n .tagFilters(ScalingPlanApplicationSourceTagFilterArgs.builder()\n .key(\"application\")\n .values(\"example\")\n .build())\n .build())\n .scalingInstructions(ScalingPlanScalingInstructionArgs.builder()\n .disableDynamicScaling(true)\n .maxCapacity(3)\n .minCapacity(0)\n .resourceId(StdFunctions.format(FormatArgs.builder()\n .input(\"autoScalingGroup/%s\")\n .args(example.name())\n .build()).result())\n .scalableDimension(\"autoscaling:autoScalingGroup:DesiredCapacity\")\n .serviceNamespace(\"autoscaling\")\n .targetTrackingConfigurations(ScalingPlanScalingInstructionTargetTrackingConfigurationArgs.builder()\n .predefinedScalingMetricSpecification(ScalingPlanScalingInstructionTargetTrackingConfigurationPredefinedScalingMetricSpecificationArgs.builder()\n .predefinedScalingMetricType(\"ASGAverageCPUUtilization\")\n .build())\n .targetValue(70.0)\n .build())\n .predictiveScalingMaxCapacityBehavior(\"SetForecastCapacityToMaxCapacity\")\n .predictiveScalingMode(\"ForecastAndScale\")\n .predefinedLoadMetricSpecification(ScalingPlanScalingInstructionPredefinedLoadMetricSpecificationArgs.builder()\n .predefinedLoadMetricType(\"ASGTotalCPUUtilization\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:autoscaling:Group\n properties:\n namePrefix: example\n launchConfiguration: ${exampleAwsLaunchConfiguration.name}\n availabilityZones:\n - ${available.names[0]}\n minSize: 0\n maxSize: 3\n tags:\n - key: application\n value: example\n propagateAtLaunch: true\n exampleScalingPlan:\n type: aws:autoscalingplans:ScalingPlan\n name: example\n properties:\n name: example-predictive-cost-optimization\n applicationSource:\n tagFilters:\n - key: application\n values:\n - example\n scalingInstructions:\n - disableDynamicScaling: true\n maxCapacity: 3\n minCapacity: 0\n resourceId:\n fn::invoke:\n function: std:format\n arguments:\n input: autoScalingGroup/%s\n args:\n - ${example.name}\n return: result\n scalableDimension: autoscaling:autoScalingGroup:DesiredCapacity\n serviceNamespace: autoscaling\n targetTrackingConfigurations:\n - predefinedScalingMetricSpecification:\n predefinedScalingMetricType: ASGAverageCPUUtilization\n targetValue: 70\n predictiveScalingMaxCapacityBehavior: SetForecastCapacityToMaxCapacity\n predictiveScalingMode: ForecastAndScale\n predefinedLoadMetricSpecification:\n predefinedLoadMetricType: ASGTotalCPUUtilization\nvariables:\n available:\n fn::invoke:\n function: aws:getAvailabilityZones\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Auto Scaling scaling plans using the `name`. For example:\n\n```sh\n$ pulumi import aws:autoscalingplans/scalingPlan:ScalingPlan example MyScale1\n```\n", "properties": { "applicationSource": { "$ref": "#/types/aws:autoscalingplans/ScalingPlanApplicationSource:ScalingPlanApplicationSource", @@ -219085,7 +219085,7 @@ } }, "aws:bedrockmodel/invocationLoggingConfiguration:InvocationLoggingConfiguration": { - "description": "Manages Bedrock model invocation logging configuration.\n\n\u003e Model invocation logging is configured per AWS region. To avoid overwriting settings, this resource should not be defined in multiple configurations.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst current = aws.getCallerIdentity({});\nconst example = new aws.s3.Bucket(\"example\", {\n bucket: \"example\",\n forceDestroy: true,\n});\nconst exampleBucketPolicy = new aws.s3.BucketPolicy(\"example\", {\n bucket: example.bucket,\n policy: pulumi.all([example.arn, current, current]).apply(([arn, current, current1]) =\u003e `{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"Service\": \"bedrock.amazonaws.com\"\n },\n \"Action\": [\n \"s3:*\"\n ],\n \"Resource\": [\n \"${arn}/*\"\n ],\n \"Condition\": {\n \"StringEquals\": {\n \"aws:SourceAccount\": \"${current.accountId}\"\n },\n \"ArnLike\": {\n \"aws:SourceArn\": \"arn:aws:bedrock:us-east-1:${current1.accountId}:*\"\n }\n }\n }\n ]\n}\n`),\n});\nconst exampleInvocationLoggingConfiguration = new aws.bedrockmodel.InvocationLoggingConfiguration(\"example\", {loggingConfig: {\n embeddingDataDeliveryEnabled: true,\n imageDataDeliveryEnabled: true,\n textDataDeliveryEnabled: true,\n videoDataDeliveryEnabled: true,\n s3Config: {\n bucketName: example.id,\n keyPrefix: \"bedrock\",\n },\n}}, {\n dependsOn: [exampleBucketPolicy],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncurrent = aws.get_caller_identity()\nexample = aws.s3.Bucket(\"example\",\n bucket=\"example\",\n force_destroy=True)\nexample_bucket_policy = aws.s3.BucketPolicy(\"example\",\n bucket=example.bucket,\n policy=example.arn.apply(lambda arn: f\"\"\"{{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {{\n \"Effect\": \"Allow\",\n \"Principal\": {{\n \"Service\": \"bedrock.amazonaws.com\"\n }},\n \"Action\": [\n \"s3:*\"\n ],\n \"Resource\": [\n \"{arn}/*\"\n ],\n \"Condition\": {{\n \"StringEquals\": {{\n \"aws:SourceAccount\": \"{current.account_id}\"\n }},\n \"ArnLike\": {{\n \"aws:SourceArn\": \"arn:aws:bedrock:us-east-1:{current.account_id}:*\"\n }}\n }}\n }}\n ]\n}}\n\"\"\"))\nexample_invocation_logging_configuration = aws.bedrockmodel.InvocationLoggingConfiguration(\"example\", logging_config={\n \"embedding_data_delivery_enabled\": True,\n \"image_data_delivery_enabled\": True,\n \"text_data_delivery_enabled\": True,\n \"video_data_delivery_enabled\": True,\n \"s3_config\": {\n \"bucket_name\": example.id,\n \"key_prefix\": \"bedrock\",\n },\n},\nopts = pulumi.ResourceOptions(depends_on=[example_bucket_policy]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Aws.GetCallerIdentity.Invoke();\n\n var example = new Aws.S3.Bucket(\"example\", new()\n {\n BucketName = \"example\",\n ForceDestroy = true,\n });\n\n var exampleBucketPolicy = new Aws.S3.BucketPolicy(\"example\", new()\n {\n Bucket = example.BucketName,\n Policy = Output.Tuple(example.Arn, current, current).Apply(values =\u003e\n {\n var arn = values.Item1;\n var current = values.Item2;\n var current1 = values.Item3;\n return @$\"{{\n \"\"Version\"\": \"\"2012-10-17\"\",\n \"\"Statement\"\": [\n {{\n \"\"Effect\"\": \"\"Allow\"\",\n \"\"Principal\"\": {{\n \"\"Service\"\": \"\"bedrock.amazonaws.com\"\"\n }},\n \"\"Action\"\": [\n \"\"s3:*\"\"\n ],\n \"\"Resource\"\": [\n \"\"{arn}/*\"\"\n ],\n \"\"Condition\"\": {{\n \"\"StringEquals\"\": {{\n \"\"aws:SourceAccount\"\": \"\"{current.Apply(getCallerIdentityResult =\u003e getCallerIdentityResult.AccountId)}\"\"\n }},\n \"\"ArnLike\"\": {{\n \"\"aws:SourceArn\"\": \"\"arn:aws:bedrock:us-east-1:{current1.AccountId}:*\"\"\n }}\n }}\n }}\n ]\n}}\n\";\n }),\n });\n\n var exampleInvocationLoggingConfiguration = new Aws.BedrockModel.InvocationLoggingConfiguration(\"example\", new()\n {\n LoggingConfig = new Aws.BedrockModel.Inputs.InvocationLoggingConfigurationLoggingConfigArgs\n {\n EmbeddingDataDeliveryEnabled = true,\n ImageDataDeliveryEnabled = true,\n TextDataDeliveryEnabled = true,\n VideoDataDeliveryEnabled = true,\n S3Config = new Aws.BedrockModel.Inputs.InvocationLoggingConfigurationLoggingConfigS3ConfigArgs\n {\n BucketName = example.Id,\n KeyPrefix = \"bedrock\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n exampleBucketPolicy,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/bedrockmodel\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/s3\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := aws.GetCallerIdentity(ctx, \u0026aws.GetCallerIdentityArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := s3.NewBucket(ctx, \"example\", \u0026s3.BucketArgs{\n\t\t\tBucket: pulumi.String(\"example\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleBucketPolicy, err := s3.NewBucketPolicy(ctx, \"example\", \u0026s3.BucketPolicyArgs{\n\t\t\tBucket: example.Bucket,\n\t\t\tPolicy: example.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(`{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"Service\": \"bedrock.amazonaws.com\"\n },\n \"Action\": [\n \"s3:*\"\n ],\n \"Resource\": [\n \"%v/*\"\n ],\n \"Condition\": {\n \"StringEquals\": {\n \"aws:SourceAccount\": \"%v\"\n },\n \"ArnLike\": {\n \"aws:SourceArn\": \"arn:aws:bedrock:us-east-1:%v:*\"\n }\n }\n }\n ]\n}\n`, arn, current.AccountId, current.AccountId), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bedrockmodel.NewInvocationLoggingConfiguration(ctx, \"example\", \u0026bedrockmodel.InvocationLoggingConfigurationArgs{\n\t\t\tLoggingConfig: \u0026bedrockmodel.InvocationLoggingConfigurationLoggingConfigArgs{\n\t\t\t\tEmbeddingDataDeliveryEnabled: pulumi.Bool(true),\n\t\t\t\tImageDataDeliveryEnabled: pulumi.Bool(true),\n\t\t\t\tTextDataDeliveryEnabled: pulumi.Bool(true),\n\t\t\t\tVideoDataDeliveryEnabled: pulumi.Bool(true),\n\t\t\t\tS3Config: \u0026bedrockmodel.InvocationLoggingConfigurationLoggingConfigS3ConfigArgs{\n\t\t\t\t\tBucketName: example.ID(),\n\t\t\t\t\tKeyPrefix: pulumi.String(\"bedrock\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleBucketPolicy,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.AwsFunctions;\nimport com.pulumi.aws.inputs.GetCallerIdentityArgs;\nimport com.pulumi.aws.s3.Bucket;\nimport com.pulumi.aws.s3.BucketArgs;\nimport com.pulumi.aws.s3.BucketPolicy;\nimport com.pulumi.aws.s3.BucketPolicyArgs;\nimport com.pulumi.aws.bedrockmodel.InvocationLoggingConfiguration;\nimport com.pulumi.aws.bedrockmodel.InvocationLoggingConfigurationArgs;\nimport com.pulumi.aws.bedrockmodel.inputs.InvocationLoggingConfigurationLoggingConfigArgs;\nimport com.pulumi.aws.bedrockmodel.inputs.InvocationLoggingConfigurationLoggingConfigS3ConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()\n .build());\n\n var example = new Bucket(\"example\", BucketArgs.builder()\n .bucket(\"example\")\n .forceDestroy(true)\n .build());\n\n var exampleBucketPolicy = new BucketPolicy(\"exampleBucketPolicy\", BucketPolicyArgs.builder()\n .bucket(example.bucket())\n .policy(example.arn().applyValue(_arn -\u003e \"\"\"\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"Service\": \"bedrock.amazonaws.com\"\n },\n \"Action\": [\n \"s3:*\"\n ],\n \"Resource\": [\n \"%s/*\"\n ],\n \"Condition\": {\n \"StringEquals\": {\n \"aws:SourceAccount\": \"%s\"\n },\n \"ArnLike\": {\n \"aws:SourceArn\": \"arn:aws:bedrock:us-east-1:%s:*\"\n }\n }\n }\n ]\n}\n\", _arn,current.accountId(),current.accountId())))\n .build());\n\n var exampleInvocationLoggingConfiguration = new InvocationLoggingConfiguration(\"exampleInvocationLoggingConfiguration\", InvocationLoggingConfigurationArgs.builder()\n .loggingConfig(InvocationLoggingConfigurationLoggingConfigArgs.builder()\n .embeddingDataDeliveryEnabled(true)\n .imageDataDeliveryEnabled(true)\n .textDataDeliveryEnabled(true)\n .videoDataDeliveryEnabled(true)\n .s3Config(InvocationLoggingConfigurationLoggingConfigS3ConfigArgs.builder()\n .bucketName(example.id())\n .keyPrefix(\"bedrock\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(exampleBucketPolicy)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:s3:Bucket\n properties:\n bucket: example\n forceDestroy: true\n exampleBucketPolicy:\n type: aws:s3:BucketPolicy\n name: example\n properties:\n bucket: ${example.bucket}\n policy: |\n {\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"Service\": \"bedrock.amazonaws.com\"\n },\n \"Action\": [\n \"s3:*\"\n ],\n \"Resource\": [\n \"${example.arn}/*\"\n ],\n \"Condition\": {\n \"StringEquals\": {\n \"aws:SourceAccount\": \"${current.accountId}\"\n },\n \"ArnLike\": {\n \"aws:SourceArn\": \"arn:aws:bedrock:us-east-1:${current.accountId}:*\"\n }\n }\n }\n ]\n }\n exampleInvocationLoggingConfiguration:\n type: aws:bedrockmodel:InvocationLoggingConfiguration\n name: example\n properties:\n loggingConfig:\n embeddingDataDeliveryEnabled: true\n imageDataDeliveryEnabled: true\n textDataDeliveryEnabled: true\n videoDataDeliveryEnabled: true\n s3Config:\n bucketName: ${example.id}\n keyPrefix: bedrock\n options:\n dependsOn:\n - ${exampleBucketPolicy}\nvariables:\n current:\n fn::invoke:\n function: aws:getCallerIdentity\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Bedrock custom model using the `id` set to the AWS Region. For example:\n\n```sh\n$ pulumi import aws:bedrockmodel/invocationLoggingConfiguration:InvocationLoggingConfiguration my_config us-east-1\n```\n", + "description": "Manages Bedrock model invocation logging configuration.\n\n\u003e Model invocation logging is configured per AWS region. To avoid overwriting settings, this resource should not be defined in multiple configurations.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst current = aws.getCallerIdentity({});\nconst example = new aws.s3.Bucket(\"example\", {\n bucket: \"example\",\n forceDestroy: true,\n});\nconst exampleBucketPolicy = new aws.s3.BucketPolicy(\"example\", {\n bucket: example.bucket,\n policy: pulumi.all([example.arn, current, current]).apply(([arn, current, current1]) =\u003e `{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Principal\\\": {\n \\\"Service\\\": \\\"bedrock.amazonaws.com\\\"\n },\n \\\"Action\\\": [\n \\\"s3:*\\\"\n ],\n \\\"Resource\\\": [\n \\\"${arn}/*\\\"\n ],\n \\\"Condition\\\": {\n \\\"StringEquals\\\": {\n \\\"aws:SourceAccount\\\": \\\"${current.accountId}\\\"\n },\n \\\"ArnLike\\\": {\n \\\"aws:SourceArn\\\": \\\"arn:aws:bedrock:us-east-1:${current1.accountId}:*\\\"\n }\n }\n }\n ]\n}\n`),\n});\nconst exampleInvocationLoggingConfiguration = new aws.bedrockmodel.InvocationLoggingConfiguration(\"example\", {loggingConfig: {\n embeddingDataDeliveryEnabled: true,\n imageDataDeliveryEnabled: true,\n textDataDeliveryEnabled: true,\n videoDataDeliveryEnabled: true,\n s3Config: {\n bucketName: example.id,\n keyPrefix: \"bedrock\",\n },\n}}, {\n dependsOn: [exampleBucketPolicy],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncurrent = aws.get_caller_identity()\nexample = aws.s3.Bucket(\"example\",\n bucket=\"example\",\n force_destroy=True)\nexample_bucket_policy = aws.s3.BucketPolicy(\"example\",\n bucket=example.bucket,\n policy=example.arn.apply(lambda arn: f\"\"\"{{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {{\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Principal\\\": {{\n \\\"Service\\\": \\\"bedrock.amazonaws.com\\\"\n }},\n \\\"Action\\\": [\n \\\"s3:*\\\"\n ],\n \\\"Resource\\\": [\n \\\"{arn}/*\\\"\n ],\n \\\"Condition\\\": {{\n \\\"StringEquals\\\": {{\n \\\"aws:SourceAccount\\\": \\\"{current.account_id}\\\"\n }},\n \\\"ArnLike\\\": {{\n \\\"aws:SourceArn\\\": \\\"arn:aws:bedrock:us-east-1:{current.account_id}:*\\\"\n }}\n }}\n }}\n ]\n}}\n\"\"\"))\nexample_invocation_logging_configuration = aws.bedrockmodel.InvocationLoggingConfiguration(\"example\", logging_config={\n \"embedding_data_delivery_enabled\": True,\n \"image_data_delivery_enabled\": True,\n \"text_data_delivery_enabled\": True,\n \"video_data_delivery_enabled\": True,\n \"s3_config\": {\n \"bucket_name\": example.id,\n \"key_prefix\": \"bedrock\",\n },\n},\nopts = pulumi.ResourceOptions(depends_on=[example_bucket_policy]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Aws.GetCallerIdentity.Invoke();\n\n var example = new Aws.S3.Bucket(\"example\", new()\n {\n BucketName = \"example\",\n ForceDestroy = true,\n });\n\n var exampleBucketPolicy = new Aws.S3.BucketPolicy(\"example\", new()\n {\n Bucket = example.BucketName,\n Policy = Output.Tuple(example.Arn, current, current).Apply(values =\u003e\n {\n var arn = values.Item1;\n var current = values.Item2;\n var current1 = values.Item3;\n return @$\"{{\n \\\"\"Version\\\"\": \\\"\"2012-10-17\\\"\",\n \\\"\"Statement\\\"\": [\n {{\n \\\"\"Effect\\\"\": \\\"\"Allow\\\"\",\n \\\"\"Principal\\\"\": {{\n \\\"\"Service\\\"\": \\\"\"bedrock.amazonaws.com\\\"\"\n }},\n \\\"\"Action\\\"\": [\n \\\"\"s3:*\\\"\"\n ],\n \\\"\"Resource\\\"\": [\n \\\"\"{arn}/*\\\"\"\n ],\n \\\"\"Condition\\\"\": {{\n \\\"\"StringEquals\\\"\": {{\n \\\"\"aws:SourceAccount\\\"\": \\\"\"{current.Apply(getCallerIdentityResult =\u003e getCallerIdentityResult.AccountId)}\\\"\"\n }},\n \\\"\"ArnLike\\\"\": {{\n \\\"\"aws:SourceArn\\\"\": \\\"\"arn:aws:bedrock:us-east-1:{current1.AccountId}:*\\\"\"\n }}\n }}\n }}\n ]\n}}\n\";\n }),\n });\n\n var exampleInvocationLoggingConfiguration = new Aws.BedrockModel.InvocationLoggingConfiguration(\"example\", new()\n {\n LoggingConfig = new Aws.BedrockModel.Inputs.InvocationLoggingConfigurationLoggingConfigArgs\n {\n EmbeddingDataDeliveryEnabled = true,\n ImageDataDeliveryEnabled = true,\n TextDataDeliveryEnabled = true,\n VideoDataDeliveryEnabled = true,\n S3Config = new Aws.BedrockModel.Inputs.InvocationLoggingConfigurationLoggingConfigS3ConfigArgs\n {\n BucketName = example.Id,\n KeyPrefix = \"bedrock\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n exampleBucketPolicy,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/bedrockmodel\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/s3\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := aws.GetCallerIdentity(ctx, \u0026aws.GetCallerIdentityArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := s3.NewBucket(ctx, \"example\", \u0026s3.BucketArgs{\n\t\t\tBucket: pulumi.String(\"example\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleBucketPolicy, err := s3.NewBucketPolicy(ctx, \"example\", \u0026s3.BucketPolicyArgs{\n\t\t\tBucket: example.Bucket,\n\t\t\tPolicy: example.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(`{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Principal\\\": {\n \\\"Service\\\": \\\"bedrock.amazonaws.com\\\"\n },\n \\\"Action\\\": [\n \\\"s3:*\\\"\n ],\n \\\"Resource\\\": [\n \\\"%v/*\\\"\n ],\n \\\"Condition\\\": {\n \\\"StringEquals\\\": {\n \\\"aws:SourceAccount\\\": \\\"%v\\\"\n },\n \\\"ArnLike\\\": {\n \\\"aws:SourceArn\\\": \\\"arn:aws:bedrock:us-east-1:%v:*\\\"\n }\n }\n }\n ]\n}\n`, arn, current.AccountId, current.AccountId), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bedrockmodel.NewInvocationLoggingConfiguration(ctx, \"example\", \u0026bedrockmodel.InvocationLoggingConfigurationArgs{\n\t\t\tLoggingConfig: \u0026bedrockmodel.InvocationLoggingConfigurationLoggingConfigArgs{\n\t\t\t\tEmbeddingDataDeliveryEnabled: pulumi.Bool(true),\n\t\t\t\tImageDataDeliveryEnabled: pulumi.Bool(true),\n\t\t\t\tTextDataDeliveryEnabled: pulumi.Bool(true),\n\t\t\t\tVideoDataDeliveryEnabled: pulumi.Bool(true),\n\t\t\t\tS3Config: \u0026bedrockmodel.InvocationLoggingConfigurationLoggingConfigS3ConfigArgs{\n\t\t\t\t\tBucketName: example.ID(),\n\t\t\t\t\tKeyPrefix: pulumi.String(\"bedrock\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleBucketPolicy,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.AwsFunctions;\nimport com.pulumi.aws.inputs.GetCallerIdentityArgs;\nimport com.pulumi.aws.s3.Bucket;\nimport com.pulumi.aws.s3.BucketArgs;\nimport com.pulumi.aws.s3.BucketPolicy;\nimport com.pulumi.aws.s3.BucketPolicyArgs;\nimport com.pulumi.aws.bedrockmodel.InvocationLoggingConfiguration;\nimport com.pulumi.aws.bedrockmodel.InvocationLoggingConfigurationArgs;\nimport com.pulumi.aws.bedrockmodel.inputs.InvocationLoggingConfigurationLoggingConfigArgs;\nimport com.pulumi.aws.bedrockmodel.inputs.InvocationLoggingConfigurationLoggingConfigS3ConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()\n .build());\n\n var example = new Bucket(\"example\", BucketArgs.builder()\n .bucket(\"example\")\n .forceDestroy(true)\n .build());\n\n var exampleBucketPolicy = new BucketPolicy(\"exampleBucketPolicy\", BucketPolicyArgs.builder()\n .bucket(example.bucket())\n .policy(example.arn().applyValue(_arn -\u003e \"\"\"\n{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Principal\\\": {\n \\\"Service\\\": \\\"bedrock.amazonaws.com\\\"\n },\n \\\"Action\\\": [\n \\\"s3:*\\\"\n ],\n \\\"Resource\\\": [\n \\\"%s/*\\\"\n ],\n \\\"Condition\\\": {\n \\\"StringEquals\\\": {\n \\\"aws:SourceAccount\\\": \\\"%s\\\"\n },\n \\\"ArnLike\\\": {\n \\\"aws:SourceArn\\\": \\\"arn:aws:bedrock:us-east-1:%s:*\\\"\n }\n }\n }\n ]\n}\n\", _arn,current.accountId(),current.accountId())))\n .build());\n\n var exampleInvocationLoggingConfiguration = new InvocationLoggingConfiguration(\"exampleInvocationLoggingConfiguration\", InvocationLoggingConfigurationArgs.builder()\n .loggingConfig(InvocationLoggingConfigurationLoggingConfigArgs.builder()\n .embeddingDataDeliveryEnabled(true)\n .imageDataDeliveryEnabled(true)\n .textDataDeliveryEnabled(true)\n .videoDataDeliveryEnabled(true)\n .s3Config(InvocationLoggingConfigurationLoggingConfigS3ConfigArgs.builder()\n .bucketName(example.id())\n .keyPrefix(\"bedrock\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(exampleBucketPolicy)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:s3:Bucket\n properties:\n bucket: example\n forceDestroy: true\n exampleBucketPolicy:\n type: aws:s3:BucketPolicy\n name: example\n properties:\n bucket: ${example.bucket}\n policy: |\n {\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Principal\\\": {\n \\\"Service\\\": \\\"bedrock.amazonaws.com\\\"\n },\n \\\"Action\\\": [\n \\\"s3:*\\\"\n ],\n \\\"Resource\\\": [\n \\\"${example.arn}/*\\\"\n ],\n \\\"Condition\\\": {\n \\\"StringEquals\\\": {\n \\\"aws:SourceAccount\\\": \\\"${current.accountId}\\\"\n },\n \\\"ArnLike\\\": {\n \\\"aws:SourceArn\\\": \\\"arn:aws:bedrock:us-east-1:${current.accountId}:*\\\"\n }\n }\n }\n ]\n }\n exampleInvocationLoggingConfiguration:\n type: aws:bedrockmodel:InvocationLoggingConfiguration\n name: example\n properties:\n loggingConfig:\n embeddingDataDeliveryEnabled: true\n imageDataDeliveryEnabled: true\n textDataDeliveryEnabled: true\n videoDataDeliveryEnabled: true\n s3Config:\n bucketName: ${example.id}\n keyPrefix: bedrock\n options:\n dependsOn:\n - ${exampleBucketPolicy}\nvariables:\n current:\n fn::invoke:\n function: aws:getCallerIdentity\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Bedrock custom model using the `id` set to the AWS Region. For example:\n\n```sh\n$ pulumi import aws:bedrockmodel/invocationLoggingConfiguration:InvocationLoggingConfiguration my_config us-east-1\n```\n", "properties": { "loggingConfig": { "$ref": "#/types/aws:bedrockmodel/InvocationLoggingConfigurationLoggingConfig:InvocationLoggingConfigurationLoggingConfig", @@ -220223,7 +220223,7 @@ } }, "aws:cfg/organizationCustomPolicyRule:OrganizationCustomPolicyRule": { - "description": "Manages a Config Organization Custom Policy Rule. More information about these rules can be found in the [Enabling AWS Config Rules Across all Accounts in Your Organization](https://docs.aws.amazon.com/config/latest/developerguide/config-rule-multi-account-deployment.html) and [AWS Config Managed Rules](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_use-managed-rules.html) documentation. For working with Organization Managed Rules (those invoking an AWS managed rule), see the `aws_config_organization_managed__rule` resource.\n\n\u003e **NOTE:** This resource must be created in the Organization master account and rules will include the master account unless its ID is added to the \u003cspan pulumi-lang-nodejs=\"`excludedAccounts`\" pulumi-lang-dotnet=\"`ExcludedAccounts`\" pulumi-lang-go=\"`excludedAccounts`\" pulumi-lang-python=\"`excluded_accounts`\" pulumi-lang-yaml=\"`excludedAccounts`\" pulumi-lang-java=\"`excludedAccounts`\"\u003e`excluded_accounts`\u003c/span\u003e argument.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.cfg.OrganizationCustomPolicyRule(\"example\", {\n name: \"example_rule_name\",\n policyRuntime: \"guard-2.x.x\",\n policyText: `let status = ['ACTIVE']\n\nrule tableisactive when\n resourceType == \"AWS::DynamoDB::Table\" {\n configuration.tableStatus == %status\n}\n\nrule checkcompliance when\n resourceType == \"AWS::DynamoDB::Table\"\n tableisactive {\n let pitr = supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus\n %pitr == \"ENABLED\"\n }\n`,\n resourceTypesScopes: [\"AWS::DynamoDB::Table\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.cfg.OrganizationCustomPolicyRule(\"example\",\n name=\"example_rule_name\",\n policy_runtime=\"guard-2.x.x\",\n policy_text=\"\"\"let status = ['ACTIVE']\n\nrule tableisactive when\n resourceType == \"AWS::DynamoDB::Table\" {\n configuration.tableStatus == %status\n}\n\nrule checkcompliance when\n resourceType == \"AWS::DynamoDB::Table\"\n tableisactive {\n let pitr = supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus\n %pitr == \"ENABLED\"\n }\n\"\"\",\n resource_types_scopes=[\"AWS::DynamoDB::Table\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Cfg.OrganizationCustomPolicyRule(\"example\", new()\n {\n Name = \"example_rule_name\",\n PolicyRuntime = \"guard-2.x.x\",\n PolicyText = @\"let status = ['ACTIVE']\n\nrule tableisactive when\n resourceType == \"\"AWS::DynamoDB::Table\"\" {\n configuration.tableStatus == %status\n}\n\nrule checkcompliance when\n resourceType == \"\"AWS::DynamoDB::Table\"\"\n tableisactive {\n let pitr = supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus\n %pitr == \"\"ENABLED\"\"\n }\n\",\n ResourceTypesScopes = new[]\n {\n \"AWS::DynamoDB::Table\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cfg\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cfg.NewOrganizationCustomPolicyRule(ctx, \"example\", \u0026cfg.OrganizationCustomPolicyRuleArgs{\n\t\t\tName: pulumi.String(\"example_rule_name\"),\n\t\t\tPolicyRuntime: pulumi.String(\"guard-2.x.x\"),\n\t\t\tPolicyText: pulumi.String(`let status = ['ACTIVE']\n\nrule tableisactive when\n resourceType == \"AWS::DynamoDB::Table\" {\n configuration.tableStatus == %status\n}\n\nrule checkcompliance when\n resourceType == \"AWS::DynamoDB::Table\"\n tableisactive {\n let pitr = supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus\n %pitr == \"ENABLED\"\n }\n`),\n\t\t\tResourceTypesScopes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"AWS::DynamoDB::Table\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cfg.OrganizationCustomPolicyRule;\nimport com.pulumi.aws.cfg.OrganizationCustomPolicyRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new OrganizationCustomPolicyRule(\"example\", OrganizationCustomPolicyRuleArgs.builder()\n .name(\"example_rule_name\")\n .policyRuntime(\"guard-2.x.x\")\n .policyText(\"\"\"\nlet status = ['ACTIVE']\n\nrule tableisactive when\n resourceType == \"AWS::DynamoDB::Table\" {\n configuration.tableStatus == %status\n}\n\nrule checkcompliance when\n resourceType == \"AWS::DynamoDB::Table\"\n tableisactive {\n let pitr = supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus\n %pitr == \"ENABLED\"\n }\n \"\"\")\n .resourceTypesScopes(\"AWS::DynamoDB::Table\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:cfg:OrganizationCustomPolicyRule\n properties:\n name: example_rule_name\n policyRuntime: guard-2.x.x\n policyText: |\n let status = ['ACTIVE']\n\n rule tableisactive when\n resourceType == \"AWS::DynamoDB::Table\" {\n configuration.tableStatus == %status\n }\n\n rule checkcompliance when\n resourceType == \"AWS::DynamoDB::Table\"\n tableisactive {\n let pitr = supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus\n %pitr == \"ENABLED\"\n }\n resourceTypesScopes:\n - AWS::DynamoDB::Table\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import a Config Organization Custom Policy Rule using the `name` argument. For example:\n\n```sh\n$ pulumi import aws:cfg/organizationCustomPolicyRule:OrganizationCustomPolicyRule example example_rule_name\n```\n", + "description": "Manages a Config Organization Custom Policy Rule. More information about these rules can be found in the [Enabling AWS Config Rules Across all Accounts in Your Organization](https://docs.aws.amazon.com/config/latest/developerguide/config-rule-multi-account-deployment.html) and [AWS Config Managed Rules](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_use-managed-rules.html) documentation. For working with Organization Managed Rules (those invoking an AWS managed rule), see the `aws_config_organization_managed__rule` resource.\n\n\u003e **NOTE:** This resource must be created in the Organization master account and rules will include the master account unless its ID is added to the \u003cspan pulumi-lang-nodejs=\"`excludedAccounts`\" pulumi-lang-dotnet=\"`ExcludedAccounts`\" pulumi-lang-go=\"`excludedAccounts`\" pulumi-lang-python=\"`excluded_accounts`\" pulumi-lang-yaml=\"`excludedAccounts`\" pulumi-lang-java=\"`excludedAccounts`\"\u003e`excluded_accounts`\u003c/span\u003e argument.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.cfg.OrganizationCustomPolicyRule(\"example\", {\n name: \"example_rule_name\",\n policyRuntime: \"guard-2.x.x\",\n policyText: `let status = ['ACTIVE']\n\nrule tableisactive when\n resourceType == \\\\\"AWS::DynamoDB::Table\\\\\" {\n configuration.tableStatus == %status\n}\n\nrule checkcompliance when\n resourceType == \\\\\"AWS::DynamoDB::Table\\\\\"\n tableisactive {\n let pitr = supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus\n %pitr == \\\\\"ENABLED\\\\\"\n }\n`,\n resourceTypesScopes: [\"AWS::DynamoDB::Table\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.cfg.OrganizationCustomPolicyRule(\"example\",\n name=\"example_rule_name\",\n policy_runtime=\"guard-2.x.x\",\n policy_text=\"\"\"let status = ['ACTIVE']\n\nrule tableisactive when\n resourceType == \\\"AWS::DynamoDB::Table\\\" {\n configuration.tableStatus == %status\n}\n\nrule checkcompliance when\n resourceType == \\\"AWS::DynamoDB::Table\\\"\n tableisactive {\n let pitr = supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus\n %pitr == \\\"ENABLED\\\"\n }\n\"\"\",\n resource_types_scopes=[\"AWS::DynamoDB::Table\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Cfg.OrganizationCustomPolicyRule(\"example\", new()\n {\n Name = \"example_rule_name\",\n PolicyRuntime = \"guard-2.x.x\",\n PolicyText = @\"let status = ['ACTIVE']\n\nrule tableisactive when\n resourceType == \\\"\"AWS::DynamoDB::Table\\\"\" {\n configuration.tableStatus == %status\n}\n\nrule checkcompliance when\n resourceType == \\\"\"AWS::DynamoDB::Table\\\"\"\n tableisactive {\n let pitr = supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus\n %pitr == \\\"\"ENABLED\\\"\"\n }\n\",\n ResourceTypesScopes = new[]\n {\n \"AWS::DynamoDB::Table\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cfg\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cfg.NewOrganizationCustomPolicyRule(ctx, \"example\", \u0026cfg.OrganizationCustomPolicyRuleArgs{\n\t\t\tName: pulumi.String(\"example_rule_name\"),\n\t\t\tPolicyRuntime: pulumi.String(\"guard-2.x.x\"),\n\t\t\tPolicyText: pulumi.String(`let status = ['ACTIVE']\n\nrule tableisactive when\n resourceType == \\\"AWS::DynamoDB::Table\\\" {\n configuration.tableStatus == %status\n}\n\nrule checkcompliance when\n resourceType == \\\"AWS::DynamoDB::Table\\\"\n tableisactive {\n let pitr = supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus\n %pitr == \\\"ENABLED\\\"\n }\n`),\n\t\t\tResourceTypesScopes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"AWS::DynamoDB::Table\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cfg.OrganizationCustomPolicyRule;\nimport com.pulumi.aws.cfg.OrganizationCustomPolicyRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new OrganizationCustomPolicyRule(\"example\", OrganizationCustomPolicyRuleArgs.builder()\n .name(\"example_rule_name\")\n .policyRuntime(\"guard-2.x.x\")\n .policyText(\"\"\"\nlet status = ['ACTIVE']\n\nrule tableisactive when\n resourceType == \\\"AWS::DynamoDB::Table\\\" {\n configuration.tableStatus == %status\n}\n\nrule checkcompliance when\n resourceType == \\\"AWS::DynamoDB::Table\\\"\n tableisactive {\n let pitr = supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus\n %pitr == \\\"ENABLED\\\"\n }\n \"\"\")\n .resourceTypesScopes(\"AWS::DynamoDB::Table\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:cfg:OrganizationCustomPolicyRule\n properties:\n name: example_rule_name\n policyRuntime: guard-2.x.x\n policyText: |\n let status = ['ACTIVE']\n\n rule tableisactive when\n resourceType == \\\"AWS::DynamoDB::Table\\\" {\n configuration.tableStatus == %status\n }\n\n rule checkcompliance when\n resourceType == \\\"AWS::DynamoDB::Table\\\"\n tableisactive {\n let pitr = supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus\n %pitr == \\\"ENABLED\\\"\n }\n resourceTypesScopes:\n - AWS::DynamoDB::Table\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import a Config Organization Custom Policy Rule using the `name` argument. For example:\n\n```sh\n$ pulumi import aws:cfg/organizationCustomPolicyRule:OrganizationCustomPolicyRule example example_rule_name\n```\n", "properties": { "arn": { "type": "string", @@ -221221,7 +221221,7 @@ } }, "aws:cfg/rule:Rule": { - "description": "Provides an AWS Config Rule.\n\n\u003e **Note:** Config Rule requires an existing Configuration Recorder to be present. Use of \u003cspan pulumi-lang-nodejs=\"`dependsOn`\" pulumi-lang-dotnet=\"`DependsOn`\" pulumi-lang-go=\"`dependsOn`\" pulumi-lang-python=\"`depends_on`\" pulumi-lang-yaml=\"`dependsOn`\" pulumi-lang-java=\"`dependsOn`\"\u003e`depends_on`\u003c/span\u003e is recommended (as shown below) to avoid race conditions.\n\n## Example Usage\n\n### AWS Managed Rules\n\nAWS managed rules can be used by setting the source owner to `AWS` and the source identifier to the name of the managed rule. More information about AWS managed rules can be found in the [AWS Config Developer Guide](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_use-managed-rules.html).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst assumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"config.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst rRole = new aws.iam.Role(\"r\", {\n name: \"my-awsconfig-role\",\n assumeRolePolicy: assumeRole.then(assumeRole =\u003e assumeRole.json),\n});\nconst foo = new aws.cfg.Recorder(\"foo\", {\n name: \"example\",\n roleArn: rRole.arn,\n});\nconst r = new aws.cfg.Rule(\"r\", {\n name: \"example\",\n source: {\n owner: \"AWS\",\n sourceIdentifier: \"S3_BUCKET_VERSIONING_ENABLED\",\n },\n}, {\n dependsOn: [foo],\n});\nconst p = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n actions: [\"config:Put*\"],\n resources: [\"*\"],\n }],\n});\nconst pRolePolicy = new aws.iam.RolePolicy(\"p\", {\n name: \"my-awsconfig-policy\",\n role: rRole.id,\n policy: p.then(p =\u003e p.json),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nassume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"config.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nr_role = aws.iam.Role(\"r\",\n name=\"my-awsconfig-role\",\n assume_role_policy=assume_role.json)\nfoo = aws.cfg.Recorder(\"foo\",\n name=\"example\",\n role_arn=r_role.arn)\nr = aws.cfg.Rule(\"r\",\n name=\"example\",\n source={\n \"owner\": \"AWS\",\n \"source_identifier\": \"S3_BUCKET_VERSIONING_ENABLED\",\n },\n opts = pulumi.ResourceOptions(depends_on=[foo]))\np = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"actions\": [\"config:Put*\"],\n \"resources\": [\"*\"],\n}])\np_role_policy = aws.iam.RolePolicy(\"p\",\n name=\"my-awsconfig-policy\",\n role=r_role.id,\n policy=p.json)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var assumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"config.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var rRole = new Aws.Iam.Role(\"r\", new()\n {\n Name = \"my-awsconfig-role\",\n AssumeRolePolicy = assumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var foo = new Aws.Cfg.Recorder(\"foo\", new()\n {\n Name = \"example\",\n RoleArn = rRole.Arn,\n });\n\n var r = new Aws.Cfg.Rule(\"r\", new()\n {\n Name = \"example\",\n Source = new Aws.Cfg.Inputs.RuleSourceArgs\n {\n Owner = \"AWS\",\n SourceIdentifier = \"S3_BUCKET_VERSIONING_ENABLED\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n foo,\n },\n });\n\n var p = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"config:Put*\",\n },\n Resources = new[]\n {\n \"*\",\n },\n },\n },\n });\n\n var pRolePolicy = new Aws.Iam.RolePolicy(\"p\", new()\n {\n Name = \"my-awsconfig-policy\",\n Role = rRole.Id,\n Policy = p.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cfg\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tassumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"config.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trRole, err := iam.NewRole(ctx, \"r\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"my-awsconfig-role\"),\n\t\t\tAssumeRolePolicy: pulumi.String(assumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoo, err := cfg.NewRecorder(ctx, \"foo\", \u0026cfg.RecorderArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tRoleArn: rRole.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cfg.NewRule(ctx, \"r\", \u0026cfg.RuleArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tSource: \u0026cfg.RuleSourceArgs{\n\t\t\t\tOwner: pulumi.String(\"AWS\"),\n\t\t\t\tSourceIdentifier: pulumi.String(\"S3_BUCKET_VERSIONING_ENABLED\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfoo,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"config:Put*\",\n\t\t\t\t\t},\n\t\t\t\t\tResources: []string{\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewRolePolicy(ctx, \"p\", \u0026iam.RolePolicyArgs{\n\t\t\tName: pulumi.String(\"my-awsconfig-policy\"),\n\t\t\tRole: rRole.ID(),\n\t\t\tPolicy: pulumi.String(p.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.cfg.Recorder;\nimport com.pulumi.aws.cfg.RecorderArgs;\nimport com.pulumi.aws.cfg.Rule;\nimport com.pulumi.aws.cfg.RuleArgs;\nimport com.pulumi.aws.cfg.inputs.RuleSourceArgs;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"config.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var rRole = new Role(\"rRole\", RoleArgs.builder()\n .name(\"my-awsconfig-role\")\n .assumeRolePolicy(assumeRole.json())\n .build());\n\n var foo = new Recorder(\"foo\", RecorderArgs.builder()\n .name(\"example\")\n .roleArn(rRole.arn())\n .build());\n\n var r = new Rule(\"r\", RuleArgs.builder()\n .name(\"example\")\n .source(RuleSourceArgs.builder()\n .owner(\"AWS\")\n .sourceIdentifier(\"S3_BUCKET_VERSIONING_ENABLED\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(foo)\n .build());\n\n final var p = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"config:Put*\")\n .resources(\"*\")\n .build())\n .build());\n\n var pRolePolicy = new RolePolicy(\"pRolePolicy\", RolePolicyArgs.builder()\n .name(\"my-awsconfig-policy\")\n .role(rRole.id())\n .policy(p.json())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n r:\n type: aws:cfg:Rule\n properties:\n name: example\n source:\n owner: AWS\n sourceIdentifier: S3_BUCKET_VERSIONING_ENABLED\n options:\n dependsOn:\n - ${foo}\n foo:\n type: aws:cfg:Recorder\n properties:\n name: example\n roleArn: ${rRole.arn}\n rRole:\n type: aws:iam:Role\n name: r\n properties:\n name: my-awsconfig-role\n assumeRolePolicy: ${assumeRole.json}\n pRolePolicy:\n type: aws:iam:RolePolicy\n name: p\n properties:\n name: my-awsconfig-policy\n role: ${rRole.id}\n policy: ${p.json}\nvariables:\n assumeRole:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - config.amazonaws.com\n actions:\n - sts:AssumeRole\n p:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n actions:\n - config:Put*\n resources:\n - '*'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Custom Rules\n\nCustom rules can be used by setting the source owner to `CUSTOM_LAMBDA` and the source identifier to the Amazon Resource Name (ARN) of the Lambda Function. The AWS Config service must have permissions to invoke the Lambda Function, e.g., via the \u003cspan pulumi-lang-nodejs=\"`aws.lambda.Permission`\" pulumi-lang-dotnet=\"`aws.lambda.Permission`\" pulumi-lang-go=\"`lambda.Permission`\" pulumi-lang-python=\"`lambda.Permission`\" pulumi-lang-yaml=\"`aws.lambda.Permission`\" pulumi-lang-java=\"`aws.lambda.Permission`\"\u003e`aws.lambda.Permission`\u003c/span\u003e resource. More information about custom rules can be found in the [AWS Config Developer Guide](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_develop-rules.html).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.cfg.Recorder(\"example\", {});\nconst exampleFunction = new aws.lambda.Function(\"example\", {});\nconst examplePermission = new aws.lambda.Permission(\"example\", {\n action: \"lambda:InvokeFunction\",\n \"function\": exampleFunction.arn,\n principal: \"config.amazonaws.com\",\n statementId: \"AllowExecutionFromConfig\",\n});\nconst exampleRule = new aws.cfg.Rule(\"example\", {source: {\n owner: \"CUSTOM_LAMBDA\",\n sourceIdentifier: exampleFunction.arn,\n}}, {\n dependsOn: [\n example,\n examplePermission,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.cfg.Recorder(\"example\")\nexample_function = aws.lambda_.Function(\"example\")\nexample_permission = aws.lambda_.Permission(\"example\",\n action=\"lambda:InvokeFunction\",\n function=example_function.arn,\n principal=\"config.amazonaws.com\",\n statement_id=\"AllowExecutionFromConfig\")\nexample_rule = aws.cfg.Rule(\"example\", source={\n \"owner\": \"CUSTOM_LAMBDA\",\n \"source_identifier\": example_function.arn,\n},\nopts = pulumi.ResourceOptions(depends_on=[\n example,\n example_permission,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Cfg.Recorder(\"example\");\n\n var exampleFunction = new Aws.Lambda.Function(\"example\");\n\n var examplePermission = new Aws.Lambda.Permission(\"example\", new()\n {\n Action = \"lambda:InvokeFunction\",\n Function = exampleFunction.Arn,\n Principal = \"config.amazonaws.com\",\n StatementId = \"AllowExecutionFromConfig\",\n });\n\n var exampleRule = new Aws.Cfg.Rule(\"example\", new()\n {\n Source = new Aws.Cfg.Inputs.RuleSourceArgs\n {\n Owner = \"CUSTOM_LAMBDA\",\n SourceIdentifier = exampleFunction.Arn,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example,\n examplePermission,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cfg\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := cfg.NewRecorder(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleFunction, err := lambda.NewFunction(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texamplePermission, err := lambda.NewPermission(ctx, \"example\", \u0026lambda.PermissionArgs{\n\t\t\tAction: pulumi.String(\"lambda:InvokeFunction\"),\n\t\t\tFunction: exampleFunction.Arn,\n\t\t\tPrincipal: pulumi.String(\"config.amazonaws.com\"),\n\t\t\tStatementId: pulumi.String(\"AllowExecutionFromConfig\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cfg.NewRule(ctx, \"example\", \u0026cfg.RuleArgs{\n\t\t\tSource: \u0026cfg.RuleSourceArgs{\n\t\t\t\tOwner: pulumi.String(\"CUSTOM_LAMBDA\"),\n\t\t\t\tSourceIdentifier: exampleFunction.Arn,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t\texamplePermission,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cfg.Recorder;\nimport com.pulumi.aws.lambda.Function;\nimport com.pulumi.aws.lambda.Permission;\nimport com.pulumi.aws.lambda.PermissionArgs;\nimport com.pulumi.aws.cfg.Rule;\nimport com.pulumi.aws.cfg.RuleArgs;\nimport com.pulumi.aws.cfg.inputs.RuleSourceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Recorder(\"example\");\n\n var exampleFunction = new Function(\"exampleFunction\");\n\n var examplePermission = new Permission(\"examplePermission\", PermissionArgs.builder()\n .action(\"lambda:InvokeFunction\")\n .function(exampleFunction.arn())\n .principal(\"config.amazonaws.com\")\n .statementId(\"AllowExecutionFromConfig\")\n .build());\n\n var exampleRule = new Rule(\"exampleRule\", RuleArgs.builder()\n .source(RuleSourceArgs.builder()\n .owner(\"CUSTOM_LAMBDA\")\n .sourceIdentifier(exampleFunction.arn())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n example,\n examplePermission)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:cfg:Recorder\n exampleFunction:\n type: aws:lambda:Function\n name: example\n examplePermission:\n type: aws:lambda:Permission\n name: example\n properties:\n action: lambda:InvokeFunction\n function: ${exampleFunction.arn}\n principal: config.amazonaws.com\n statementId: AllowExecutionFromConfig\n exampleRule:\n type: aws:cfg:Rule\n name: example\n properties:\n source:\n owner: CUSTOM_LAMBDA\n sourceIdentifier: ${exampleFunction.arn}\n options:\n dependsOn:\n - ${example}\n - ${examplePermission}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Custom Policies\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.cfg.Rule(\"example\", {\n name: \"example\",\n source: {\n owner: \"CUSTOM_POLICY\",\n sourceDetails: [{\n messageType: \"ConfigurationItemChangeNotification\",\n }],\n customPolicyDetails: {\n policyRuntime: \"guard-2.x.x\",\n policyText: `\\x09 rule tableisactive when\n\\x09\\x09 resourceType == \"AWS::DynamoDB::Table\" {\n\\x09\\x09 configuration.tableStatus == ['ACTIVE']\n\\x09 }\n\\x09 \n\\x09 rule checkcompliance when\n\\x09\\x09 resourceType == \"AWS::DynamoDB::Table\"\n\\x09\\x09 tableisactive {\n\\x09\\x09\\x09 supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == \"ENABLED\"\n\\x09 }\n`,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.cfg.Rule(\"example\",\n name=\"example\",\n source={\n \"owner\": \"CUSTOM_POLICY\",\n \"source_details\": [{\n \"message_type\": \"ConfigurationItemChangeNotification\",\n }],\n \"custom_policy_details\": {\n \"policy_runtime\": \"guard-2.x.x\",\n \"policy_text\": \"\"\"\\x09 rule tableisactive when\n\\x09\\x09 resourceType == \"AWS::DynamoDB::Table\" {\n\\x09\\x09 configuration.tableStatus == ['ACTIVE']\n\\x09 }\n\\x09 \n\\x09 rule checkcompliance when\n\\x09\\x09 resourceType == \"AWS::DynamoDB::Table\"\n\\x09\\x09 tableisactive {\n\\x09\\x09\\x09 supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == \"ENABLED\"\n\\x09 }\n\"\"\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Cfg.Rule(\"example\", new()\n {\n Name = \"example\",\n Source = new Aws.Cfg.Inputs.RuleSourceArgs\n {\n Owner = \"CUSTOM_POLICY\",\n SourceDetails = new[]\n {\n new Aws.Cfg.Inputs.RuleSourceSourceDetailArgs\n {\n MessageType = \"ConfigurationItemChangeNotification\",\n },\n },\n CustomPolicyDetails = new Aws.Cfg.Inputs.RuleSourceCustomPolicyDetailsArgs\n {\n PolicyRuntime = \"guard-2.x.x\",\n PolicyText = @\"\t rule tableisactive when\n\t\t resourceType == \"\"AWS::DynamoDB::Table\"\" {\n\t\t configuration.tableStatus == ['ACTIVE']\n\t }\n\t \n\t rule checkcompliance when\n\t\t resourceType == \"\"AWS::DynamoDB::Table\"\"\n\t\t tableisactive {\n\t\t\t supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == \"\"ENABLED\"\"\n\t }\n\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cfg\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cfg.NewRule(ctx, \"example\", \u0026cfg.RuleArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tSource: \u0026cfg.RuleSourceArgs{\n\t\t\t\tOwner: pulumi.String(\"CUSTOM_POLICY\"),\n\t\t\t\tSourceDetails: cfg.RuleSourceSourceDetailArray{\n\t\t\t\t\t\u0026cfg.RuleSourceSourceDetailArgs{\n\t\t\t\t\t\tMessageType: pulumi.String(\"ConfigurationItemChangeNotification\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tCustomPolicyDetails: \u0026cfg.RuleSourceCustomPolicyDetailsArgs{\n\t\t\t\t\tPolicyRuntime: pulumi.String(\"guard-2.x.x\"),\n\t\t\t\t\tPolicyText: pulumi.String(`\t rule tableisactive when\n\t\t resourceType == \"AWS::DynamoDB::Table\" {\n\t\t configuration.tableStatus == ['ACTIVE']\n\t }\n\t \n\t rule checkcompliance when\n\t\t resourceType == \"AWS::DynamoDB::Table\"\n\t\t tableisactive {\n\t\t\t supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == \"ENABLED\"\n\t }\n`),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cfg.Rule;\nimport com.pulumi.aws.cfg.RuleArgs;\nimport com.pulumi.aws.cfg.inputs.RuleSourceArgs;\nimport com.pulumi.aws.cfg.inputs.RuleSourceCustomPolicyDetailsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Rule(\"example\", RuleArgs.builder()\n .name(\"example\")\n .source(RuleSourceArgs.builder()\n .owner(\"CUSTOM_POLICY\")\n .sourceDetails(RuleSourceSourceDetailArgs.builder()\n .messageType(\"ConfigurationItemChangeNotification\")\n .build())\n .customPolicyDetails(RuleSourceCustomPolicyDetailsArgs.builder()\n .policyRuntime(\"guard-2.x.x\")\n .policyText(\"\"\"\n\t rule tableisactive when\n\t\t resourceType == \"AWS::DynamoDB::Table\" {\n\t\t configuration.tableStatus == ['ACTIVE']\n\t }\n\t \n\t rule checkcompliance when\n\t\t resourceType == \"AWS::DynamoDB::Table\"\n\t\t tableisactive {\n\t\t\t supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == \"ENABLED\"\n\t }\n \"\"\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:cfg:Rule\n properties:\n name: example\n source:\n owner: CUSTOM_POLICY\n sourceDetails:\n - messageType: ConfigurationItemChangeNotification\n customPolicyDetails:\n policyRuntime: guard-2.x.x\n policyText: \"\\t rule tableisactive when\\n\\t\\t resourceType == \\\"AWS::DynamoDB::Table\\\" {\\n\\t\\t configuration.tableStatus == ['ACTIVE']\\n\\t }\\n\\t \\n\\t rule checkcompliance when\\n\\t\\t resourceType == \\\"AWS::DynamoDB::Table\\\"\\n\\t\\t tableisactive {\\n\\t\\t\\t supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == \\\"ENABLED\\\"\\n\\t }\\n\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Config Rule using the name. For example:\n\n```sh\n$ pulumi import aws:cfg/rule:Rule foo example\n```\n", + "description": "Provides an AWS Config Rule.\n\n\u003e **Note:** Config Rule requires an existing Configuration Recorder to be present. Use of \u003cspan pulumi-lang-nodejs=\"`dependsOn`\" pulumi-lang-dotnet=\"`DependsOn`\" pulumi-lang-go=\"`dependsOn`\" pulumi-lang-python=\"`depends_on`\" pulumi-lang-yaml=\"`dependsOn`\" pulumi-lang-java=\"`dependsOn`\"\u003e`depends_on`\u003c/span\u003e is recommended (as shown below) to avoid race conditions.\n\n## Example Usage\n\n### AWS Managed Rules\n\nAWS managed rules can be used by setting the source owner to `AWS` and the source identifier to the name of the managed rule. More information about AWS managed rules can be found in the [AWS Config Developer Guide](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_use-managed-rules.html).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst assumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"config.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst rRole = new aws.iam.Role(\"r\", {\n name: \"my-awsconfig-role\",\n assumeRolePolicy: assumeRole.then(assumeRole =\u003e assumeRole.json),\n});\nconst foo = new aws.cfg.Recorder(\"foo\", {\n name: \"example\",\n roleArn: rRole.arn,\n});\nconst r = new aws.cfg.Rule(\"r\", {\n name: \"example\",\n source: {\n owner: \"AWS\",\n sourceIdentifier: \"S3_BUCKET_VERSIONING_ENABLED\",\n },\n}, {\n dependsOn: [foo],\n});\nconst p = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n actions: [\"config:Put*\"],\n resources: [\"*\"],\n }],\n});\nconst pRolePolicy = new aws.iam.RolePolicy(\"p\", {\n name: \"my-awsconfig-policy\",\n role: rRole.id,\n policy: p.then(p =\u003e p.json),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nassume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"config.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nr_role = aws.iam.Role(\"r\",\n name=\"my-awsconfig-role\",\n assume_role_policy=assume_role.json)\nfoo = aws.cfg.Recorder(\"foo\",\n name=\"example\",\n role_arn=r_role.arn)\nr = aws.cfg.Rule(\"r\",\n name=\"example\",\n source={\n \"owner\": \"AWS\",\n \"source_identifier\": \"S3_BUCKET_VERSIONING_ENABLED\",\n },\n opts = pulumi.ResourceOptions(depends_on=[foo]))\np = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"actions\": [\"config:Put*\"],\n \"resources\": [\"*\"],\n}])\np_role_policy = aws.iam.RolePolicy(\"p\",\n name=\"my-awsconfig-policy\",\n role=r_role.id,\n policy=p.json)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var assumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"config.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var rRole = new Aws.Iam.Role(\"r\", new()\n {\n Name = \"my-awsconfig-role\",\n AssumeRolePolicy = assumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var foo = new Aws.Cfg.Recorder(\"foo\", new()\n {\n Name = \"example\",\n RoleArn = rRole.Arn,\n });\n\n var r = new Aws.Cfg.Rule(\"r\", new()\n {\n Name = \"example\",\n Source = new Aws.Cfg.Inputs.RuleSourceArgs\n {\n Owner = \"AWS\",\n SourceIdentifier = \"S3_BUCKET_VERSIONING_ENABLED\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n foo,\n },\n });\n\n var p = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"config:Put*\",\n },\n Resources = new[]\n {\n \"*\",\n },\n },\n },\n });\n\n var pRolePolicy = new Aws.Iam.RolePolicy(\"p\", new()\n {\n Name = \"my-awsconfig-policy\",\n Role = rRole.Id,\n Policy = p.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cfg\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tassumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"config.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trRole, err := iam.NewRole(ctx, \"r\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"my-awsconfig-role\"),\n\t\t\tAssumeRolePolicy: pulumi.String(assumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoo, err := cfg.NewRecorder(ctx, \"foo\", \u0026cfg.RecorderArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tRoleArn: rRole.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cfg.NewRule(ctx, \"r\", \u0026cfg.RuleArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tSource: \u0026cfg.RuleSourceArgs{\n\t\t\t\tOwner: pulumi.String(\"AWS\"),\n\t\t\t\tSourceIdentifier: pulumi.String(\"S3_BUCKET_VERSIONING_ENABLED\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfoo,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"config:Put*\",\n\t\t\t\t\t},\n\t\t\t\t\tResources: []string{\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewRolePolicy(ctx, \"p\", \u0026iam.RolePolicyArgs{\n\t\t\tName: pulumi.String(\"my-awsconfig-policy\"),\n\t\t\tRole: rRole.ID(),\n\t\t\tPolicy: pulumi.String(p.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.cfg.Recorder;\nimport com.pulumi.aws.cfg.RecorderArgs;\nimport com.pulumi.aws.cfg.Rule;\nimport com.pulumi.aws.cfg.RuleArgs;\nimport com.pulumi.aws.cfg.inputs.RuleSourceArgs;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"config.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var rRole = new Role(\"rRole\", RoleArgs.builder()\n .name(\"my-awsconfig-role\")\n .assumeRolePolicy(assumeRole.json())\n .build());\n\n var foo = new Recorder(\"foo\", RecorderArgs.builder()\n .name(\"example\")\n .roleArn(rRole.arn())\n .build());\n\n var r = new Rule(\"r\", RuleArgs.builder()\n .name(\"example\")\n .source(RuleSourceArgs.builder()\n .owner(\"AWS\")\n .sourceIdentifier(\"S3_BUCKET_VERSIONING_ENABLED\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(foo)\n .build());\n\n final var p = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"config:Put*\")\n .resources(\"*\")\n .build())\n .build());\n\n var pRolePolicy = new RolePolicy(\"pRolePolicy\", RolePolicyArgs.builder()\n .name(\"my-awsconfig-policy\")\n .role(rRole.id())\n .policy(p.json())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n r:\n type: aws:cfg:Rule\n properties:\n name: example\n source:\n owner: AWS\n sourceIdentifier: S3_BUCKET_VERSIONING_ENABLED\n options:\n dependsOn:\n - ${foo}\n foo:\n type: aws:cfg:Recorder\n properties:\n name: example\n roleArn: ${rRole.arn}\n rRole:\n type: aws:iam:Role\n name: r\n properties:\n name: my-awsconfig-role\n assumeRolePolicy: ${assumeRole.json}\n pRolePolicy:\n type: aws:iam:RolePolicy\n name: p\n properties:\n name: my-awsconfig-policy\n role: ${rRole.id}\n policy: ${p.json}\nvariables:\n assumeRole:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - config.amazonaws.com\n actions:\n - sts:AssumeRole\n p:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n actions:\n - config:Put*\n resources:\n - '*'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Custom Rules\n\nCustom rules can be used by setting the source owner to `CUSTOM_LAMBDA` and the source identifier to the Amazon Resource Name (ARN) of the Lambda Function. The AWS Config service must have permissions to invoke the Lambda Function, e.g., via the \u003cspan pulumi-lang-nodejs=\"`aws.lambda.Permission`\" pulumi-lang-dotnet=\"`aws.lambda.Permission`\" pulumi-lang-go=\"`lambda.Permission`\" pulumi-lang-python=\"`lambda.Permission`\" pulumi-lang-yaml=\"`aws.lambda.Permission`\" pulumi-lang-java=\"`aws.lambda.Permission`\"\u003e`aws.lambda.Permission`\u003c/span\u003e resource. More information about custom rules can be found in the [AWS Config Developer Guide](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_develop-rules.html).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.cfg.Recorder(\"example\", {});\nconst exampleFunction = new aws.lambda.Function(\"example\", {});\nconst examplePermission = new aws.lambda.Permission(\"example\", {\n action: \"lambda:InvokeFunction\",\n \"function\": exampleFunction.arn,\n principal: \"config.amazonaws.com\",\n statementId: \"AllowExecutionFromConfig\",\n});\nconst exampleRule = new aws.cfg.Rule(\"example\", {source: {\n owner: \"CUSTOM_LAMBDA\",\n sourceIdentifier: exampleFunction.arn,\n}}, {\n dependsOn: [\n example,\n examplePermission,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.cfg.Recorder(\"example\")\nexample_function = aws.lambda_.Function(\"example\")\nexample_permission = aws.lambda_.Permission(\"example\",\n action=\"lambda:InvokeFunction\",\n function=example_function.arn,\n principal=\"config.amazonaws.com\",\n statement_id=\"AllowExecutionFromConfig\")\nexample_rule = aws.cfg.Rule(\"example\", source={\n \"owner\": \"CUSTOM_LAMBDA\",\n \"source_identifier\": example_function.arn,\n},\nopts = pulumi.ResourceOptions(depends_on=[\n example,\n example_permission,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Cfg.Recorder(\"example\");\n\n var exampleFunction = new Aws.Lambda.Function(\"example\");\n\n var examplePermission = new Aws.Lambda.Permission(\"example\", new()\n {\n Action = \"lambda:InvokeFunction\",\n Function = exampleFunction.Arn,\n Principal = \"config.amazonaws.com\",\n StatementId = \"AllowExecutionFromConfig\",\n });\n\n var exampleRule = new Aws.Cfg.Rule(\"example\", new()\n {\n Source = new Aws.Cfg.Inputs.RuleSourceArgs\n {\n Owner = \"CUSTOM_LAMBDA\",\n SourceIdentifier = exampleFunction.Arn,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example,\n examplePermission,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cfg\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := cfg.NewRecorder(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleFunction, err := lambda.NewFunction(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texamplePermission, err := lambda.NewPermission(ctx, \"example\", \u0026lambda.PermissionArgs{\n\t\t\tAction: pulumi.String(\"lambda:InvokeFunction\"),\n\t\t\tFunction: exampleFunction.Arn,\n\t\t\tPrincipal: pulumi.String(\"config.amazonaws.com\"),\n\t\t\tStatementId: pulumi.String(\"AllowExecutionFromConfig\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cfg.NewRule(ctx, \"example\", \u0026cfg.RuleArgs{\n\t\t\tSource: \u0026cfg.RuleSourceArgs{\n\t\t\t\tOwner: pulumi.String(\"CUSTOM_LAMBDA\"),\n\t\t\t\tSourceIdentifier: exampleFunction.Arn,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t\texamplePermission,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cfg.Recorder;\nimport com.pulumi.aws.lambda.Function;\nimport com.pulumi.aws.lambda.Permission;\nimport com.pulumi.aws.lambda.PermissionArgs;\nimport com.pulumi.aws.cfg.Rule;\nimport com.pulumi.aws.cfg.RuleArgs;\nimport com.pulumi.aws.cfg.inputs.RuleSourceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Recorder(\"example\");\n\n var exampleFunction = new Function(\"exampleFunction\");\n\n var examplePermission = new Permission(\"examplePermission\", PermissionArgs.builder()\n .action(\"lambda:InvokeFunction\")\n .function(exampleFunction.arn())\n .principal(\"config.amazonaws.com\")\n .statementId(\"AllowExecutionFromConfig\")\n .build());\n\n var exampleRule = new Rule(\"exampleRule\", RuleArgs.builder()\n .source(RuleSourceArgs.builder()\n .owner(\"CUSTOM_LAMBDA\")\n .sourceIdentifier(exampleFunction.arn())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n example,\n examplePermission)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:cfg:Recorder\n exampleFunction:\n type: aws:lambda:Function\n name: example\n examplePermission:\n type: aws:lambda:Permission\n name: example\n properties:\n action: lambda:InvokeFunction\n function: ${exampleFunction.arn}\n principal: config.amazonaws.com\n statementId: AllowExecutionFromConfig\n exampleRule:\n type: aws:cfg:Rule\n name: example\n properties:\n source:\n owner: CUSTOM_LAMBDA\n sourceIdentifier: ${exampleFunction.arn}\n options:\n dependsOn:\n - ${example}\n - ${examplePermission}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Custom Policies\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.cfg.Rule(\"example\", {\n name: \"example\",\n source: {\n owner: \"CUSTOM_POLICY\",\n sourceDetails: [{\n messageType: \"ConfigurationItemChangeNotification\",\n }],\n customPolicyDetails: {\n policyRuntime: \"guard-2.x.x\",\n policyText: `\\\\t rule tableisactive when\n\\\\t\\\\t resourceType == \\\\\"AWS::DynamoDB::Table\\\\\" {\n\\\\t\\\\t configuration.tableStatus == ['ACTIVE']\n\\\\t }\n\\\\t \n\\\\t rule checkcompliance when\n\\\\t\\\\t resourceType == \\\\\"AWS::DynamoDB::Table\\\\\"\n\\\\t\\\\t tableisactive {\n\\\\t\\\\t\\\\t supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == \\\\\"ENABLED\\\\\"\n\\\\t }\n`,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.cfg.Rule(\"example\",\n name=\"example\",\n source={\n \"owner\": \"CUSTOM_POLICY\",\n \"source_details\": [{\n \"message_type\": \"ConfigurationItemChangeNotification\",\n }],\n \"custom_policy_details\": {\n \"policy_runtime\": \"guard-2.x.x\",\n \"policy_text\": \"\"\"\\t rule tableisactive when\n\\t\\t resourceType == \\\"AWS::DynamoDB::Table\\\" {\n\\t\\t configuration.tableStatus == ['ACTIVE']\n\\t }\n\\t \n\\t rule checkcompliance when\n\\t\\t resourceType == \\\"AWS::DynamoDB::Table\\\"\n\\t\\t tableisactive {\n\\t\\t\\t supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == \\\"ENABLED\\\"\n\\t }\n\"\"\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Cfg.Rule(\"example\", new()\n {\n Name = \"example\",\n Source = new Aws.Cfg.Inputs.RuleSourceArgs\n {\n Owner = \"CUSTOM_POLICY\",\n SourceDetails = new[]\n {\n new Aws.Cfg.Inputs.RuleSourceSourceDetailArgs\n {\n MessageType = \"ConfigurationItemChangeNotification\",\n },\n },\n CustomPolicyDetails = new Aws.Cfg.Inputs.RuleSourceCustomPolicyDetailsArgs\n {\n PolicyRuntime = \"guard-2.x.x\",\n PolicyText = @\"\\t rule tableisactive when\n\\t\\t resourceType == \\\"\"AWS::DynamoDB::Table\\\"\" {\n\\t\\t configuration.tableStatus == ['ACTIVE']\n\\t }\n\\t \n\\t rule checkcompliance when\n\\t\\t resourceType == \\\"\"AWS::DynamoDB::Table\\\"\"\n\\t\\t tableisactive {\n\\t\\t\\t supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == \\\"\"ENABLED\\\"\"\n\\t }\n\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cfg\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cfg.NewRule(ctx, \"example\", \u0026cfg.RuleArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tSource: \u0026cfg.RuleSourceArgs{\n\t\t\t\tOwner: pulumi.String(\"CUSTOM_POLICY\"),\n\t\t\t\tSourceDetails: cfg.RuleSourceSourceDetailArray{\n\t\t\t\t\t\u0026cfg.RuleSourceSourceDetailArgs{\n\t\t\t\t\t\tMessageType: pulumi.String(\"ConfigurationItemChangeNotification\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tCustomPolicyDetails: \u0026cfg.RuleSourceCustomPolicyDetailsArgs{\n\t\t\t\t\tPolicyRuntime: pulumi.String(\"guard-2.x.x\"),\n\t\t\t\t\tPolicyText: pulumi.String(`\\t rule tableisactive when\n\\t\\t resourceType == \\\"AWS::DynamoDB::Table\\\" {\n\\t\\t configuration.tableStatus == ['ACTIVE']\n\\t }\n\\t \n\\t rule checkcompliance when\n\\t\\t resourceType == \\\"AWS::DynamoDB::Table\\\"\n\\t\\t tableisactive {\n\\t\\t\\t supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == \\\"ENABLED\\\"\n\\t }\n`),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cfg.Rule;\nimport com.pulumi.aws.cfg.RuleArgs;\nimport com.pulumi.aws.cfg.inputs.RuleSourceArgs;\nimport com.pulumi.aws.cfg.inputs.RuleSourceCustomPolicyDetailsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Rule(\"example\", RuleArgs.builder()\n .name(\"example\")\n .source(RuleSourceArgs.builder()\n .owner(\"CUSTOM_POLICY\")\n .sourceDetails(RuleSourceSourceDetailArgs.builder()\n .messageType(\"ConfigurationItemChangeNotification\")\n .build())\n .customPolicyDetails(RuleSourceCustomPolicyDetailsArgs.builder()\n .policyRuntime(\"guard-2.x.x\")\n .policyText(\"\"\"\n\\t rule tableisactive when\n\\t\\t resourceType == \\\"AWS::DynamoDB::Table\\\" {\n\\t\\t configuration.tableStatus == ['ACTIVE']\n\\t }\n\\t \n\\t rule checkcompliance when\n\\t\\t resourceType == \\\"AWS::DynamoDB::Table\\\"\n\\t\\t tableisactive {\n\\t\\t\\t supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == \\\"ENABLED\\\"\n\\t }\n \"\"\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:cfg:Rule\n properties:\n name: example\n source:\n owner: CUSTOM_POLICY\n sourceDetails:\n - messageType: ConfigurationItemChangeNotification\n customPolicyDetails:\n policyRuntime: guard-2.x.x\n policyText: \"\\\\t rule tableisactive when\\n\\\\t\\\\t resourceType == \\\\\\\"AWS::DynamoDB::Table\\\\\\\" {\\n\\\\t\\\\t configuration.tableStatus == ['ACTIVE']\\n\\\\t }\\n\\\\t \\n\\\\t rule checkcompliance when\\n\\\\t\\\\t resourceType == \\\\\\\"AWS::DynamoDB::Table\\\\\\\"\\n\\\\t\\\\t tableisactive {\\n\\\\t\\\\t\\\\t supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == \\\\\\\"ENABLED\\\\\\\"\\n\\\\t }\\n\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Config Rule using the name. For example:\n\n```sh\n$ pulumi import aws:cfg/rule:Rule foo example\n```\n", "properties": { "arn": { "type": "string", @@ -229714,7 +229714,7 @@ } }, "aws:cloudwatch/eventTarget:EventTarget": { - "description": "Provides an EventBridge Target resource.\n\n\u003e **Note:** EventBridge was formerly known as CloudWatch Events. The functionality is identical.\n\n\u003e **Note:** In order to be able to have your AWS Lambda function or\n SNS topic invoked by an EventBridge rule, you must set up the right permissions\n using \u003cspan pulumi-lang-nodejs=\"`aws.lambda.Permission`\" pulumi-lang-dotnet=\"`aws.lambda.Permission`\" pulumi-lang-go=\"`lambda.Permission`\" pulumi-lang-python=\"`lambda.Permission`\" pulumi-lang-yaml=\"`aws.lambda.Permission`\" pulumi-lang-java=\"`aws.lambda.Permission`\"\u003e`aws.lambda.Permission`\u003c/span\u003e\n or \u003cspan pulumi-lang-nodejs=\"`aws.sns.TopicPolicy`\" pulumi-lang-dotnet=\"`aws.sns.TopicPolicy`\" pulumi-lang-go=\"`sns.TopicPolicy`\" pulumi-lang-python=\"`sns.TopicPolicy`\" pulumi-lang-yaml=\"`aws.sns.TopicPolicy`\" pulumi-lang-java=\"`aws.sns.TopicPolicy`\"\u003e`aws.sns.TopicPolicy`\u003c/span\u003e.\n More info [here](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-use-resource-based.html).\n\n## Example Usage\n\n### Kinesis Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst console = new aws.cloudwatch.EventRule(\"console\", {\n name: \"capture-ec2-scaling-events\",\n description: \"Capture all EC2 scaling events\",\n eventPattern: JSON.stringify({\n source: [\"aws.autoscaling\"],\n \"detail-type\": [\n \"EC2 Instance Launch Successful\",\n \"EC2 Instance Terminate Successful\",\n \"EC2 Instance Launch Unsuccessful\",\n \"EC2 Instance Terminate Unsuccessful\",\n ],\n }),\n});\nconst testStream = new aws.kinesis.Stream(\"test_stream\", {\n name: \"kinesis-test\",\n shardCount: 1,\n});\nconst yada = new aws.cloudwatch.EventTarget(\"yada\", {\n targetId: \"Yada\",\n rule: console.name,\n arn: testStream.arn,\n runCommandTargets: [\n {\n key: \"tag:Name\",\n values: [\"FooBar\"],\n },\n {\n key: \"InstanceIds\",\n values: [\"i-162058cd308bffec2\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nconsole = aws.cloudwatch.EventRule(\"console\",\n name=\"capture-ec2-scaling-events\",\n description=\"Capture all EC2 scaling events\",\n event_pattern=json.dumps({\n \"source\": [\"aws.autoscaling\"],\n \"detail-type\": [\n \"EC2 Instance Launch Successful\",\n \"EC2 Instance Terminate Successful\",\n \"EC2 Instance Launch Unsuccessful\",\n \"EC2 Instance Terminate Unsuccessful\",\n ],\n }))\ntest_stream = aws.kinesis.Stream(\"test_stream\",\n name=\"kinesis-test\",\n shard_count=1)\nyada = aws.cloudwatch.EventTarget(\"yada\",\n target_id=\"Yada\",\n rule=console.name,\n arn=test_stream.arn,\n run_command_targets=[\n {\n \"key\": \"tag:Name\",\n \"values\": [\"FooBar\"],\n },\n {\n \"key\": \"InstanceIds\",\n \"values\": [\"i-162058cd308bffec2\"],\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var console = new Aws.CloudWatch.EventRule(\"console\", new()\n {\n Name = \"capture-ec2-scaling-events\",\n Description = \"Capture all EC2 scaling events\",\n EventPattern = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"source\"] = new[]\n {\n \"aws.autoscaling\",\n },\n [\"detail-type\"] = new[]\n {\n \"EC2 Instance Launch Successful\",\n \"EC2 Instance Terminate Successful\",\n \"EC2 Instance Launch Unsuccessful\",\n \"EC2 Instance Terminate Unsuccessful\",\n },\n }),\n });\n\n var testStream = new Aws.Kinesis.Stream(\"test_stream\", new()\n {\n Name = \"kinesis-test\",\n ShardCount = 1,\n });\n\n var yada = new Aws.CloudWatch.EventTarget(\"yada\", new()\n {\n TargetId = \"Yada\",\n Rule = console.Name,\n Arn = testStream.Arn,\n RunCommandTargets = new[]\n {\n new Aws.CloudWatch.Inputs.EventTargetRunCommandTargetArgs\n {\n Key = \"tag:Name\",\n Values = new[]\n {\n \"FooBar\",\n },\n },\n new Aws.CloudWatch.Inputs.EventTargetRunCommandTargetArgs\n {\n Key = \"InstanceIds\",\n Values = new[]\n {\n \"i-162058cd308bffec2\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"source\": []string{\n\t\t\t\t\"aws.autoscaling\",\n\t\t\t},\n\t\t\t\"detail-type\": []string{\n\t\t\t\t\"EC2 Instance Launch Successful\",\n\t\t\t\t\"EC2 Instance Terminate Successful\",\n\t\t\t\t\"EC2 Instance Launch Unsuccessful\",\n\t\t\t\t\"EC2 Instance Terminate Unsuccessful\",\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\tconsole, err := cloudwatch.NewEventRule(ctx, \"console\", \u0026cloudwatch.EventRuleArgs{\n\t\t\tName: pulumi.String(\"capture-ec2-scaling-events\"),\n\t\t\tDescription: pulumi.String(\"Capture all EC2 scaling events\"),\n\t\t\tEventPattern: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestStream, err := kinesis.NewStream(ctx, \"test_stream\", \u0026kinesis.StreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-test\"),\n\t\t\tShardCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewEventTarget(ctx, \"yada\", \u0026cloudwatch.EventTargetArgs{\n\t\t\tTargetId: pulumi.String(\"Yada\"),\n\t\t\tRule: console.Name,\n\t\t\tArn: testStream.Arn,\n\t\t\tRunCommandTargets: cloudwatch.EventTargetRunCommandTargetArray{\n\t\t\t\t\u0026cloudwatch.EventTargetRunCommandTargetArgs{\n\t\t\t\t\tKey: pulumi.String(\"tag:Name\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"FooBar\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026cloudwatch.EventTargetRunCommandTargetArgs{\n\t\t\t\t\tKey: pulumi.String(\"InstanceIds\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"i-162058cd308bffec2\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.EventRule;\nimport com.pulumi.aws.cloudwatch.EventRuleArgs;\nimport com.pulumi.aws.kinesis.Stream;\nimport com.pulumi.aws.kinesis.StreamArgs;\nimport com.pulumi.aws.cloudwatch.EventTarget;\nimport com.pulumi.aws.cloudwatch.EventTargetArgs;\nimport com.pulumi.aws.cloudwatch.inputs.EventTargetRunCommandTargetArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var console = new EventRule(\"console\", EventRuleArgs.builder()\n .name(\"capture-ec2-scaling-events\")\n .description(\"Capture all EC2 scaling events\")\n .eventPattern(serializeJson(\n jsonObject(\n jsonProperty(\"source\", jsonArray(\"aws.autoscaling\")),\n jsonProperty(\"detail-type\", jsonArray(\n \"EC2 Instance Launch Successful\", \n \"EC2 Instance Terminate Successful\", \n \"EC2 Instance Launch Unsuccessful\", \n \"EC2 Instance Terminate Unsuccessful\"\n ))\n )))\n .build());\n\n var testStream = new Stream(\"testStream\", StreamArgs.builder()\n .name(\"kinesis-test\")\n .shardCount(1)\n .build());\n\n var yada = new EventTarget(\"yada\", EventTargetArgs.builder()\n .targetId(\"Yada\")\n .rule(console.name())\n .arn(testStream.arn())\n .runCommandTargets( \n EventTargetRunCommandTargetArgs.builder()\n .key(\"tag:Name\")\n .values(\"FooBar\")\n .build(),\n EventTargetRunCommandTargetArgs.builder()\n .key(\"InstanceIds\")\n .values(\"i-162058cd308bffec2\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n yada:\n type: aws:cloudwatch:EventTarget\n properties:\n targetId: Yada\n rule: ${console.name}\n arn: ${testStream.arn}\n runCommandTargets:\n - key: tag:Name\n values:\n - FooBar\n - key: InstanceIds\n values:\n - i-162058cd308bffec2\n console:\n type: aws:cloudwatch:EventRule\n properties:\n name: capture-ec2-scaling-events\n description: Capture all EC2 scaling events\n eventPattern:\n fn::toJSON:\n source:\n - aws.autoscaling\n detail-type:\n - EC2 Instance Launch Successful\n - EC2 Instance Terminate Successful\n - EC2 Instance Launch Unsuccessful\n - EC2 Instance Terminate Unsuccessful\n testStream:\n type: aws:kinesis:Stream\n name: test_stream\n properties:\n name: kinesis-test\n shardCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### SSM Document Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst ssmLifecycleTrust = aws.iam.getPolicyDocument({\n statements: [{\n actions: [\"sts:AssumeRole\"],\n principals: [{\n type: \"Service\",\n identifiers: [\"events.amazonaws.com\"],\n }],\n }],\n});\nconst stopInstance = new aws.ssm.Document(\"stop_instance\", {\n name: \"stop_instance\",\n documentType: \"Command\",\n content: JSON.stringify({\n schemaVersion: \"1.2\",\n description: \"Stop an instance\",\n parameters: {},\n runtimeConfig: {\n \"aws:runShellScript\": {\n properties: [{\n id: \"0.aws:runShellScript\",\n runCommand: [\"halt\"],\n }],\n },\n },\n }),\n});\nconst ssmLifecycle = aws.iam.getPolicyDocumentOutput({\n statements: [\n {\n effect: \"Allow\",\n actions: [\"ssm:SendCommand\"],\n resources: [\"arn:aws:ec2:eu-west-1:1234567890:instance/*\"],\n conditions: [{\n test: \"StringEquals\",\n variable: \"ec2:ResourceTag/Terminate\",\n values: [\"*\"],\n }],\n },\n {\n effect: \"Allow\",\n actions: [\"ssm:SendCommand\"],\n resources: [stopInstance.arn],\n },\n ],\n});\nconst ssmLifecycleRole = new aws.iam.Role(\"ssm_lifecycle\", {\n name: \"SSMLifecycle\",\n assumeRolePolicy: ssmLifecycleTrust.then(ssmLifecycleTrust =\u003e ssmLifecycleTrust.json),\n});\nconst ssmLifecyclePolicy = new aws.iam.Policy(\"ssm_lifecycle\", {\n name: \"SSMLifecycle\",\n policy: ssmLifecycle.apply(ssmLifecycle =\u003e ssmLifecycle.json),\n});\nconst ssmLifecycleRolePolicyAttachment = new aws.iam.RolePolicyAttachment(\"ssm_lifecycle\", {\n policyArn: ssmLifecyclePolicy.arn,\n role: ssmLifecycleRole.name,\n});\nconst stopInstances = new aws.cloudwatch.EventRule(\"stop_instances\", {\n name: \"StopInstance\",\n description: \"Stop instances nightly\",\n scheduleExpression: \"cron(0 0 * * ? *)\",\n});\nconst stopInstancesEventTarget = new aws.cloudwatch.EventTarget(\"stop_instances\", {\n targetId: \"StopInstance\",\n arn: stopInstance.arn,\n rule: stopInstances.name,\n roleArn: ssmLifecycleRole.arn,\n runCommandTargets: [{\n key: \"tag:Terminate\",\n values: [\"midnight\"],\n }],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nssm_lifecycle_trust = aws.iam.get_policy_document(statements=[{\n \"actions\": [\"sts:AssumeRole\"],\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"events.amazonaws.com\"],\n }],\n}])\nstop_instance = aws.ssm.Document(\"stop_instance\",\n name=\"stop_instance\",\n document_type=\"Command\",\n content=json.dumps({\n \"schemaVersion\": \"1.2\",\n \"description\": \"Stop an instance\",\n \"parameters\": {},\n \"runtimeConfig\": {\n \"aws:runShellScript\": {\n \"properties\": [{\n \"id\": \"0.aws:runShellScript\",\n \"runCommand\": [\"halt\"],\n }],\n },\n },\n }))\nssm_lifecycle = aws.iam.get_policy_document_output(statements=[\n {\n \"effect\": \"Allow\",\n \"actions\": [\"ssm:SendCommand\"],\n \"resources\": [\"arn:aws:ec2:eu-west-1:1234567890:instance/*\"],\n \"conditions\": [{\n \"test\": \"StringEquals\",\n \"variable\": \"ec2:ResourceTag/Terminate\",\n \"values\": [\"*\"],\n }],\n },\n {\n \"effect\": \"Allow\",\n \"actions\": [\"ssm:SendCommand\"],\n \"resources\": [stop_instance.arn],\n },\n])\nssm_lifecycle_role = aws.iam.Role(\"ssm_lifecycle\",\n name=\"SSMLifecycle\",\n assume_role_policy=ssm_lifecycle_trust.json)\nssm_lifecycle_policy = aws.iam.Policy(\"ssm_lifecycle\",\n name=\"SSMLifecycle\",\n policy=ssm_lifecycle.json)\nssm_lifecycle_role_policy_attachment = aws.iam.RolePolicyAttachment(\"ssm_lifecycle\",\n policy_arn=ssm_lifecycle_policy.arn,\n role=ssm_lifecycle_role.name)\nstop_instances = aws.cloudwatch.EventRule(\"stop_instances\",\n name=\"StopInstance\",\n description=\"Stop instances nightly\",\n schedule_expression=\"cron(0 0 * * ? *)\")\nstop_instances_event_target = aws.cloudwatch.EventTarget(\"stop_instances\",\n target_id=\"StopInstance\",\n arn=stop_instance.arn,\n rule=stop_instances.name,\n role_arn=ssm_lifecycle_role.arn,\n run_command_targets=[{\n \"key\": \"tag:Terminate\",\n \"values\": [\"midnight\"],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ssmLifecycleTrust = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"events.amazonaws.com\",\n },\n },\n },\n },\n },\n });\n\n var stopInstance = new Aws.Ssm.Document(\"stop_instance\", new()\n {\n Name = \"stop_instance\",\n DocumentType = \"Command\",\n Content = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"schemaVersion\"] = \"1.2\",\n [\"description\"] = \"Stop an instance\",\n [\"parameters\"] = new Dictionary\u003cstring, object?\u003e\n {\n },\n [\"runtimeConfig\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"aws:runShellScript\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"properties\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"id\"] = \"0.aws:runShellScript\",\n [\"runCommand\"] = new[]\n {\n \"halt\",\n },\n },\n },\n },\n },\n }),\n });\n\n var ssmLifecycle = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"ssm:SendCommand\",\n },\n Resources = new[]\n {\n \"arn:aws:ec2:eu-west-1:1234567890:instance/*\",\n },\n Conditions = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementConditionInputArgs\n {\n Test = \"StringEquals\",\n Variable = \"ec2:ResourceTag/Terminate\",\n Values = new[]\n {\n \"*\",\n },\n },\n },\n },\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"ssm:SendCommand\",\n },\n Resources = new[]\n {\n stopInstance.Arn,\n },\n },\n },\n });\n\n var ssmLifecycleRole = new Aws.Iam.Role(\"ssm_lifecycle\", new()\n {\n Name = \"SSMLifecycle\",\n AssumeRolePolicy = ssmLifecycleTrust.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var ssmLifecyclePolicy = new Aws.Iam.Policy(\"ssm_lifecycle\", new()\n {\n Name = \"SSMLifecycle\",\n PolicyDocument = ssmLifecycle.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var ssmLifecycleRolePolicyAttachment = new Aws.Iam.RolePolicyAttachment(\"ssm_lifecycle\", new()\n {\n PolicyArn = ssmLifecyclePolicy.Arn,\n Role = ssmLifecycleRole.Name,\n });\n\n var stopInstances = new Aws.CloudWatch.EventRule(\"stop_instances\", new()\n {\n Name = \"StopInstance\",\n Description = \"Stop instances nightly\",\n ScheduleExpression = \"cron(0 0 * * ? *)\",\n });\n\n var stopInstancesEventTarget = new Aws.CloudWatch.EventTarget(\"stop_instances\", new()\n {\n TargetId = \"StopInstance\",\n Arn = stopInstance.Arn,\n Rule = stopInstances.Name,\n RoleArn = ssmLifecycleRole.Arn,\n RunCommandTargets = new[]\n {\n new Aws.CloudWatch.Inputs.EventTargetRunCommandTargetArgs\n {\n Key = \"tag:Terminate\",\n Values = new[]\n {\n \"midnight\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tssmLifecycleTrust, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"events.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"schemaVersion\": \"1.2\",\n\t\t\t\"description\": \"Stop an instance\",\n\t\t\t\"parameters\": map[string]interface{}{},\n\t\t\t\"runtimeConfig\": map[string]interface{}{\n\t\t\t\t\"aws:runShellScript\": map[string]interface{}{\n\t\t\t\t\t\"properties\": []map[string]interface{}{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"id\": \"0.aws:runShellScript\",\n\t\t\t\t\t\t\t\"runCommand\": []string{\n\t\t\t\t\t\t\t\t\"halt\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\tstopInstance, err := ssm.NewDocument(ctx, \"stop_instance\", \u0026ssm.DocumentArgs{\n\t\t\tName: pulumi.String(\"stop_instance\"),\n\t\t\tDocumentType: pulumi.String(\"Command\"),\n\t\t\tContent: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tssmLifecycle := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{\n\t\t\tStatements: iam.GetPolicyDocumentStatementArray{\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ssm:SendCommand\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"arn:aws:ec2:eu-west-1:1234567890:instance/*\"),\n\t\t\t\t\t},\n\t\t\t\t\tConditions: iam.GetPolicyDocumentStatementConditionArray{\n\t\t\t\t\t\t\u0026iam.GetPolicyDocumentStatementConditionArgs{\n\t\t\t\t\t\t\tTest: pulumi.String(\"StringEquals\"),\n\t\t\t\t\t\t\tVariable: pulumi.String(\"ec2:ResourceTag/Terminate\"),\n\t\t\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ssm:SendCommand\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\tstopInstance.Arn,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tssmLifecycleRole, err := iam.NewRole(ctx, \"ssm_lifecycle\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"SSMLifecycle\"),\n\t\t\tAssumeRolePolicy: pulumi.String(ssmLifecycleTrust.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tssmLifecyclePolicy, err := iam.NewPolicy(ctx, \"ssm_lifecycle\", \u0026iam.PolicyArgs{\n\t\t\tName: pulumi.String(\"SSMLifecycle\"),\n\t\t\tPolicy: pulumi.String(ssmLifecycle.ApplyT(func(ssmLifecycle iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026ssmLifecycle.Json, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewRolePolicyAttachment(ctx, \"ssm_lifecycle\", \u0026iam.RolePolicyAttachmentArgs{\n\t\t\tPolicyArn: ssmLifecyclePolicy.Arn,\n\t\t\tRole: ssmLifecycleRole.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstopInstances, err := cloudwatch.NewEventRule(ctx, \"stop_instances\", \u0026cloudwatch.EventRuleArgs{\n\t\t\tName: pulumi.String(\"StopInstance\"),\n\t\t\tDescription: pulumi.String(\"Stop instances nightly\"),\n\t\t\tScheduleExpression: pulumi.String(\"cron(0 0 * * ? *)\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewEventTarget(ctx, \"stop_instances\", \u0026cloudwatch.EventTargetArgs{\n\t\t\tTargetId: pulumi.String(\"StopInstance\"),\n\t\t\tArn: stopInstance.Arn,\n\t\t\tRule: stopInstances.Name,\n\t\t\tRoleArn: ssmLifecycleRole.Arn,\n\t\t\tRunCommandTargets: cloudwatch.EventTargetRunCommandTargetArray{\n\t\t\t\t\u0026cloudwatch.EventTargetRunCommandTargetArgs{\n\t\t\t\t\tKey: pulumi.String(\"tag:Terminate\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"midnight\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.ssm.Document;\nimport com.pulumi.aws.ssm.DocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.iam.Policy;\nimport com.pulumi.aws.iam.PolicyArgs;\nimport com.pulumi.aws.iam.RolePolicyAttachment;\nimport com.pulumi.aws.iam.RolePolicyAttachmentArgs;\nimport com.pulumi.aws.cloudwatch.EventRule;\nimport com.pulumi.aws.cloudwatch.EventRuleArgs;\nimport com.pulumi.aws.cloudwatch.EventTarget;\nimport com.pulumi.aws.cloudwatch.EventTargetArgs;\nimport com.pulumi.aws.cloudwatch.inputs.EventTargetRunCommandTargetArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var ssmLifecycleTrust = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .actions(\"sts:AssumeRole\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"events.amazonaws.com\")\n .build())\n .build())\n .build());\n\n var stopInstance = new Document(\"stopInstance\", DocumentArgs.builder()\n .name(\"stop_instance\")\n .documentType(\"Command\")\n .content(serializeJson(\n jsonObject(\n jsonProperty(\"schemaVersion\", \"1.2\"),\n jsonProperty(\"description\", \"Stop an instance\"),\n jsonProperty(\"parameters\", jsonObject(\n\n )),\n jsonProperty(\"runtimeConfig\", jsonObject(\n jsonProperty(\"aws:runShellScript\", jsonObject(\n jsonProperty(\"properties\", jsonArray(jsonObject(\n jsonProperty(\"id\", \"0.aws:runShellScript\"),\n jsonProperty(\"runCommand\", jsonArray(\"halt\"))\n )))\n ))\n ))\n )))\n .build());\n\n final var ssmLifecycle = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements( \n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"ssm:SendCommand\")\n .resources(\"arn:aws:ec2:eu-west-1:1234567890:instance/*\")\n .conditions(GetPolicyDocumentStatementConditionArgs.builder()\n .test(\"StringEquals\")\n .variable(\"ec2:ResourceTag/Terminate\")\n .values(\"*\")\n .build())\n .build(),\n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"ssm:SendCommand\")\n .resources(stopInstance.arn())\n .build())\n .build());\n\n var ssmLifecycleRole = new Role(\"ssmLifecycleRole\", RoleArgs.builder()\n .name(\"SSMLifecycle\")\n .assumeRolePolicy(ssmLifecycleTrust.json())\n .build());\n\n var ssmLifecyclePolicy = new Policy(\"ssmLifecyclePolicy\", PolicyArgs.builder()\n .name(\"SSMLifecycle\")\n .policy(ssmLifecycle.applyValue(_ssmLifecycle -\u003e _ssmLifecycle.json()))\n .build());\n\n var ssmLifecycleRolePolicyAttachment = new RolePolicyAttachment(\"ssmLifecycleRolePolicyAttachment\", RolePolicyAttachmentArgs.builder()\n .policyArn(ssmLifecyclePolicy.arn())\n .role(ssmLifecycleRole.name())\n .build());\n\n var stopInstances = new EventRule(\"stopInstances\", EventRuleArgs.builder()\n .name(\"StopInstance\")\n .description(\"Stop instances nightly\")\n .scheduleExpression(\"cron(0 0 * * ? *)\")\n .build());\n\n var stopInstancesEventTarget = new EventTarget(\"stopInstancesEventTarget\", EventTargetArgs.builder()\n .targetId(\"StopInstance\")\n .arn(stopInstance.arn())\n .rule(stopInstances.name())\n .roleArn(ssmLifecycleRole.arn())\n .runCommandTargets(EventTargetRunCommandTargetArgs.builder()\n .key(\"tag:Terminate\")\n .values(\"midnight\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ssmLifecycleRole:\n type: aws:iam:Role\n name: ssm_lifecycle\n properties:\n name: SSMLifecycle\n assumeRolePolicy: ${ssmLifecycleTrust.json}\n ssmLifecyclePolicy:\n type: aws:iam:Policy\n name: ssm_lifecycle\n properties:\n name: SSMLifecycle\n policy: ${ssmLifecycle.json}\n ssmLifecycleRolePolicyAttachment:\n type: aws:iam:RolePolicyAttachment\n name: ssm_lifecycle\n properties:\n policyArn: ${ssmLifecyclePolicy.arn}\n role: ${ssmLifecycleRole.name}\n stopInstance:\n type: aws:ssm:Document\n name: stop_instance\n properties:\n name: stop_instance\n documentType: Command\n content:\n fn::toJSON:\n schemaVersion: '1.2'\n description: Stop an instance\n parameters: {}\n runtimeConfig:\n aws:runShellScript:\n properties:\n - id: 0.aws:runShellScript\n runCommand:\n - halt\n stopInstances:\n type: aws:cloudwatch:EventRule\n name: stop_instances\n properties:\n name: StopInstance\n description: Stop instances nightly\n scheduleExpression: cron(0 0 * * ? *)\n stopInstancesEventTarget:\n type: aws:cloudwatch:EventTarget\n name: stop_instances\n properties:\n targetId: StopInstance\n arn: ${stopInstance.arn}\n rule: ${stopInstances.name}\n roleArn: ${ssmLifecycleRole.arn}\n runCommandTargets:\n - key: tag:Terminate\n values:\n - midnight\nvariables:\n ssmLifecycleTrust:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - actions:\n - sts:AssumeRole\n principals:\n - type: Service\n identifiers:\n - events.amazonaws.com\n ssmLifecycle:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n actions:\n - ssm:SendCommand\n resources:\n - arn:aws:ec2:eu-west-1:1234567890:instance/*\n conditions:\n - test: StringEquals\n variable: ec2:ResourceTag/Terminate\n values:\n - '*'\n - effect: Allow\n actions:\n - ssm:SendCommand\n resources:\n - ${stopInstance.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### RunCommand Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst stopInstances = new aws.cloudwatch.EventRule(\"stop_instances\", {\n name: \"StopInstance\",\n description: \"Stop instances nightly\",\n scheduleExpression: \"cron(0 0 * * ? *)\",\n});\nconst stopInstancesEventTarget = new aws.cloudwatch.EventTarget(\"stop_instances\", {\n targetId: \"StopInstance\",\n arn: `arn:aws:ssm:${awsRegion}::document/AWS-RunShellScript`,\n input: \"{\\\"commands\\\":[\\\"halt\\\"]}\",\n rule: stopInstances.name,\n roleArn: ssmLifecycle.arn,\n runCommandTargets: [{\n key: \"tag:Terminate\",\n values: [\"midnight\"],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nstop_instances = aws.cloudwatch.EventRule(\"stop_instances\",\n name=\"StopInstance\",\n description=\"Stop instances nightly\",\n schedule_expression=\"cron(0 0 * * ? *)\")\nstop_instances_event_target = aws.cloudwatch.EventTarget(\"stop_instances\",\n target_id=\"StopInstance\",\n arn=f\"arn:aws:ssm:{aws_region}::document/AWS-RunShellScript\",\n input=\"{\\\"commands\\\":[\\\"halt\\\"]}\",\n rule=stop_instances.name,\n role_arn=ssm_lifecycle[\"arn\"],\n run_command_targets=[{\n \"key\": \"tag:Terminate\",\n \"values\": [\"midnight\"],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var stopInstances = new Aws.CloudWatch.EventRule(\"stop_instances\", new()\n {\n Name = \"StopInstance\",\n Description = \"Stop instances nightly\",\n ScheduleExpression = \"cron(0 0 * * ? *)\",\n });\n\n var stopInstancesEventTarget = new Aws.CloudWatch.EventTarget(\"stop_instances\", new()\n {\n TargetId = \"StopInstance\",\n Arn = $\"arn:aws:ssm:{awsRegion}::document/AWS-RunShellScript\",\n Input = \"{\\\"commands\\\":[\\\"halt\\\"]}\",\n Rule = stopInstances.Name,\n RoleArn = ssmLifecycle.Arn,\n RunCommandTargets = new[]\n {\n new Aws.CloudWatch.Inputs.EventTargetRunCommandTargetArgs\n {\n Key = \"tag:Terminate\",\n Values = new[]\n {\n \"midnight\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tstopInstances, err := cloudwatch.NewEventRule(ctx, \"stop_instances\", \u0026cloudwatch.EventRuleArgs{\n\t\t\tName: pulumi.String(\"StopInstance\"),\n\t\t\tDescription: pulumi.String(\"Stop instances nightly\"),\n\t\t\tScheduleExpression: pulumi.String(\"cron(0 0 * * ? *)\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewEventTarget(ctx, \"stop_instances\", \u0026cloudwatch.EventTargetArgs{\n\t\t\tTargetId: pulumi.String(\"StopInstance\"),\n\t\t\tArn: pulumi.Sprintf(\"arn:aws:ssm:%v::document/AWS-RunShellScript\", awsRegion),\n\t\t\tInput: pulumi.String(\"{\\\"commands\\\":[\\\"halt\\\"]}\"),\n\t\t\tRule: stopInstances.Name,\n\t\t\tRoleArn: pulumi.Any(ssmLifecycle.Arn),\n\t\t\tRunCommandTargets: cloudwatch.EventTargetRunCommandTargetArray{\n\t\t\t\t\u0026cloudwatch.EventTargetRunCommandTargetArgs{\n\t\t\t\t\tKey: pulumi.String(\"tag:Terminate\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"midnight\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.EventRule;\nimport com.pulumi.aws.cloudwatch.EventRuleArgs;\nimport com.pulumi.aws.cloudwatch.EventTarget;\nimport com.pulumi.aws.cloudwatch.EventTargetArgs;\nimport com.pulumi.aws.cloudwatch.inputs.EventTargetRunCommandTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var stopInstances = new EventRule(\"stopInstances\", EventRuleArgs.builder()\n .name(\"StopInstance\")\n .description(\"Stop instances nightly\")\n .scheduleExpression(\"cron(0 0 * * ? *)\")\n .build());\n\n var stopInstancesEventTarget = new EventTarget(\"stopInstancesEventTarget\", EventTargetArgs.builder()\n .targetId(\"StopInstance\")\n .arn(String.format(\"arn:aws:ssm:%s::document/AWS-RunShellScript\", awsRegion))\n .input(\"{\\\"commands\\\":[\\\"halt\\\"]}\")\n .rule(stopInstances.name())\n .roleArn(ssmLifecycle.arn())\n .runCommandTargets(EventTargetRunCommandTargetArgs.builder()\n .key(\"tag:Terminate\")\n .values(\"midnight\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n stopInstances:\n type: aws:cloudwatch:EventRule\n name: stop_instances\n properties:\n name: StopInstance\n description: Stop instances nightly\n scheduleExpression: cron(0 0 * * ? *)\n stopInstancesEventTarget:\n type: aws:cloudwatch:EventTarget\n name: stop_instances\n properties:\n targetId: StopInstance\n arn: arn:aws:ssm:${awsRegion}::document/AWS-RunShellScript\n input: '{\"commands\":[\"halt\"]}'\n rule: ${stopInstances.name}\n roleArn: ${ssmLifecycle.arn}\n runCommandTargets:\n - key: tag:Terminate\n values:\n - midnight\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### ECS Run Task with Role and Task Override Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst assumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"events.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst ecsEvents = new aws.iam.Role(\"ecs_events\", {\n name: \"ecs_events\",\n assumeRolePolicy: assumeRole.then(assumeRole =\u003e assumeRole.json),\n});\nconst ecsEventsRunTaskWithAnyRole = std.replace({\n text: taskName.arn,\n search: \"/:\\\\d+$/\",\n replace: \":*\",\n}).then(invoke =\u003e aws.iam.getPolicyDocument({\n statements: [\n {\n effect: \"Allow\",\n actions: [\"iam:PassRole\"],\n resources: [\"*\"],\n },\n {\n effect: \"Allow\",\n actions: [\"ecs:RunTask\"],\n resources: [invoke.result],\n },\n ],\n}));\nconst ecsEventsRunTaskWithAnyRoleRolePolicy = new aws.iam.RolePolicy(\"ecs_events_run_task_with_any_role\", {\n name: \"ecs_events_run_task_with_any_role\",\n role: ecsEvents.id,\n policy: ecsEventsRunTaskWithAnyRole.then(ecsEventsRunTaskWithAnyRole =\u003e ecsEventsRunTaskWithAnyRole.json),\n});\nconst ecsScheduledTask = new aws.cloudwatch.EventTarget(\"ecs_scheduled_task\", {\n targetId: \"run-scheduled-task-every-hour\",\n arn: clusterName.arn,\n rule: everyHour.name,\n roleArn: ecsEvents.arn,\n ecsTarget: {\n taskCount: 1,\n taskDefinitionArn: taskName.arn,\n },\n input: JSON.stringify({\n containerOverrides: [{\n name: \"name-of-container-to-override\",\n command: [\n \"bin/console\",\n \"scheduled-task\",\n ],\n }],\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nassume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"events.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\necs_events = aws.iam.Role(\"ecs_events\",\n name=\"ecs_events\",\n assume_role_policy=assume_role.json)\necs_events_run_task_with_any_role = aws.iam.get_policy_document(statements=[\n {\n \"effect\": \"Allow\",\n \"actions\": [\"iam:PassRole\"],\n \"resources\": [\"*\"],\n },\n {\n \"effect\": \"Allow\",\n \"actions\": [\"ecs:RunTask\"],\n \"resources\": [std.replace(text=task_name[\"arn\"],\n search=\"/:\\\\d+$/\",\n replace=\":*\").result],\n },\n])\necs_events_run_task_with_any_role_role_policy = aws.iam.RolePolicy(\"ecs_events_run_task_with_any_role\",\n name=\"ecs_events_run_task_with_any_role\",\n role=ecs_events.id,\n policy=ecs_events_run_task_with_any_role.json)\necs_scheduled_task = aws.cloudwatch.EventTarget(\"ecs_scheduled_task\",\n target_id=\"run-scheduled-task-every-hour\",\n arn=cluster_name[\"arn\"],\n rule=every_hour[\"name\"],\n role_arn=ecs_events.arn,\n ecs_target={\n \"task_count\": 1,\n \"task_definition_arn\": task_name[\"arn\"],\n },\n input=json.dumps({\n \"containerOverrides\": [{\n \"name\": \"name-of-container-to-override\",\n \"command\": [\n \"bin/console\",\n \"scheduled-task\",\n ],\n }],\n }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var assumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"events.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var ecsEvents = new Aws.Iam.Role(\"ecs_events\", new()\n {\n Name = \"ecs_events\",\n AssumeRolePolicy = assumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var ecsEventsRunTaskWithAnyRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"iam:PassRole\",\n },\n Resources = new[]\n {\n \"*\",\n },\n },\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"ecs:RunTask\",\n },\n Resources = new[]\n {\n Std.Replace.Invoke(new()\n {\n Text = taskName.Arn,\n Search = \"/:\\\\d+$/\",\n Replace = \":*\",\n }).Result,\n },\n },\n },\n });\n\n var ecsEventsRunTaskWithAnyRoleRolePolicy = new Aws.Iam.RolePolicy(\"ecs_events_run_task_with_any_role\", new()\n {\n Name = \"ecs_events_run_task_with_any_role\",\n Role = ecsEvents.Id,\n Policy = ecsEventsRunTaskWithAnyRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var ecsScheduledTask = new Aws.CloudWatch.EventTarget(\"ecs_scheduled_task\", new()\n {\n TargetId = \"run-scheduled-task-every-hour\",\n Arn = clusterName.Arn,\n Rule = everyHour.Name,\n RoleArn = ecsEvents.Arn,\n EcsTarget = new Aws.CloudWatch.Inputs.EventTargetEcsTargetArgs\n {\n TaskCount = 1,\n TaskDefinitionArn = taskName.Arn,\n },\n Input = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"containerOverrides\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"name-of-container-to-override\",\n [\"command\"] = new[]\n {\n \"bin/console\",\n \"scheduled-task\",\n },\n },\n },\n }),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nassumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\nStatements: []iam.GetPolicyDocumentStatement{\n{\nEffect: pulumi.StringRef(\"Allow\"),\nPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n{\nType: \"Service\",\nIdentifiers: []string{\n\"events.amazonaws.com\",\n},\n},\n},\nActions: []string{\n\"sts:AssumeRole\",\n},\n},\n},\n}, nil);\nif err != nil {\nreturn err\n}\necsEvents, err := iam.NewRole(ctx, \"ecs_events\", \u0026iam.RoleArgs{\nName: pulumi.String(\"ecs_events\"),\nAssumeRolePolicy: pulumi.String(assumeRole.Json),\n})\nif err != nil {\nreturn err\n}\necsEventsRunTaskWithAnyRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\nStatements: []iam.GetPolicyDocumentStatement{\n{\nEffect: pulumi.StringRef(\"Allow\"),\nActions: []string{\n\"iam:PassRole\",\n},\nResources: []string{\n\"*\",\n},\n},\n{\nEffect: pulumi.StringRef(\"Allow\"),\nActions: []string{\n\"ecs:RunTask\",\n},\nResources: interface{}{\nstd.Replace(ctx, {\nText: taskName.Arn,\nSearch: \"/:\\\\d+$/\",\nReplace: \":*\",\n}, nil).Result,\n},\n},\n},\n}, nil);\nif err != nil {\nreturn err\n}\n_, err = iam.NewRolePolicy(ctx, \"ecs_events_run_task_with_any_role\", \u0026iam.RolePolicyArgs{\nName: pulumi.String(\"ecs_events_run_task_with_any_role\"),\nRole: ecsEvents.ID(),\nPolicy: pulumi.String(ecsEventsRunTaskWithAnyRole.Json),\n})\nif err != nil {\nreturn err\n}\ntmpJSON0, err := json.Marshal(map[string]interface{}{\n\"containerOverrides\": []map[string]interface{}{\nmap[string]interface{}{\n\"name\": \"name-of-container-to-override\",\n\"command\": []string{\n\"bin/console\",\n\"scheduled-task\",\n},\n},\n},\n})\nif err != nil {\nreturn err\n}\njson0 := string(tmpJSON0)\n_, err = cloudwatch.NewEventTarget(ctx, \"ecs_scheduled_task\", \u0026cloudwatch.EventTargetArgs{\nTargetId: pulumi.String(\"run-scheduled-task-every-hour\"),\nArn: pulumi.Any(clusterName.Arn),\nRule: pulumi.Any(everyHour.Name),\nRoleArn: ecsEvents.Arn,\nEcsTarget: \u0026cloudwatch.EventTargetEcsTargetArgs{\nTaskCount: pulumi.Int(1),\nTaskDefinitionArn: pulumi.Any(taskName.Arn),\n},\nInput: pulumi.String(json0),\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.ReplaceArgs;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport com.pulumi.aws.cloudwatch.EventTarget;\nimport com.pulumi.aws.cloudwatch.EventTargetArgs;\nimport com.pulumi.aws.cloudwatch.inputs.EventTargetEcsTargetArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"events.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var ecsEvents = new Role(\"ecsEvents\", RoleArgs.builder()\n .name(\"ecs_events\")\n .assumeRolePolicy(assumeRole.json())\n .build());\n\n final var ecsEventsRunTaskWithAnyRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements( \n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"iam:PassRole\")\n .resources(\"*\")\n .build(),\n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"ecs:RunTask\")\n .resources(StdFunctions.replace(ReplaceArgs.builder()\n .text(taskName.arn())\n .search(\"/:\\\\d+$/\")\n .replace(\":*\")\n .build()).result())\n .build())\n .build());\n\n var ecsEventsRunTaskWithAnyRoleRolePolicy = new RolePolicy(\"ecsEventsRunTaskWithAnyRoleRolePolicy\", RolePolicyArgs.builder()\n .name(\"ecs_events_run_task_with_any_role\")\n .role(ecsEvents.id())\n .policy(ecsEventsRunTaskWithAnyRole.json())\n .build());\n\n var ecsScheduledTask = new EventTarget(\"ecsScheduledTask\", EventTargetArgs.builder()\n .targetId(\"run-scheduled-task-every-hour\")\n .arn(clusterName.arn())\n .rule(everyHour.name())\n .roleArn(ecsEvents.arn())\n .ecsTarget(EventTargetEcsTargetArgs.builder()\n .taskCount(1)\n .taskDefinitionArn(taskName.arn())\n .build())\n .input(serializeJson(\n jsonObject(\n jsonProperty(\"containerOverrides\", jsonArray(jsonObject(\n jsonProperty(\"name\", \"name-of-container-to-override\"),\n jsonProperty(\"command\", jsonArray(\n \"bin/console\", \n \"scheduled-task\"\n ))\n )))\n )))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ecsEvents:\n type: aws:iam:Role\n name: ecs_events\n properties:\n name: ecs_events\n assumeRolePolicy: ${assumeRole.json}\n ecsEventsRunTaskWithAnyRoleRolePolicy:\n type: aws:iam:RolePolicy\n name: ecs_events_run_task_with_any_role\n properties:\n name: ecs_events_run_task_with_any_role\n role: ${ecsEvents.id}\n policy: ${ecsEventsRunTaskWithAnyRole.json}\n ecsScheduledTask:\n type: aws:cloudwatch:EventTarget\n name: ecs_scheduled_task\n properties:\n targetId: run-scheduled-task-every-hour\n arn: ${clusterName.arn}\n rule: ${everyHour.name}\n roleArn: ${ecsEvents.arn}\n ecsTarget:\n taskCount: 1\n taskDefinitionArn: ${taskName.arn}\n input:\n fn::toJSON:\n containerOverrides:\n - name: name-of-container-to-override\n command:\n - bin/console\n - scheduled-task\nvariables:\n assumeRole:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - events.amazonaws.com\n actions:\n - sts:AssumeRole\n ecsEventsRunTaskWithAnyRole:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n actions:\n - iam:PassRole\n resources:\n - '*'\n - effect: Allow\n actions:\n - ecs:RunTask\n resources:\n - fn::invoke:\n function: std:replace\n arguments:\n text: ${taskName.arn}\n search: /:\\d+$/\n replace: :*\n return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### API Gateway target\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleEventRule = new aws.cloudwatch.EventRule(\"example\", {});\nconst exampleDeployment = new aws.apigateway.Deployment(\"example\", {restApi: exampleAwsApiGatewayRestApi.id});\nconst exampleStage = new aws.apigateway.Stage(\"example\", {\n restApi: exampleAwsApiGatewayRestApi.id,\n deployment: exampleDeployment.id,\n});\nconst example = new aws.cloudwatch.EventTarget(\"example\", {\n arn: pulumi.interpolate`${exampleStage.executionArn}/GET`,\n rule: exampleEventRule.id,\n httpTarget: {\n queryStringParameters: {\n Body: \"$.detail.body\",\n },\n headerParameters: {\n Env: \"Test\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_event_rule = aws.cloudwatch.EventRule(\"example\")\nexample_deployment = aws.apigateway.Deployment(\"example\", rest_api=example_aws_api_gateway_rest_api[\"id\"])\nexample_stage = aws.apigateway.Stage(\"example\",\n rest_api=example_aws_api_gateway_rest_api[\"id\"],\n deployment=example_deployment.id)\nexample = aws.cloudwatch.EventTarget(\"example\",\n arn=example_stage.execution_arn.apply(lambda execution_arn: f\"{execution_arn}/GET\"),\n rule=example_event_rule.id,\n http_target={\n \"query_string_parameters\": {\n \"Body\": \"$.detail.body\",\n },\n \"header_parameters\": {\n \"Env\": \"Test\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleEventRule = new Aws.CloudWatch.EventRule(\"example\");\n\n var exampleDeployment = new Aws.ApiGateway.Deployment(\"example\", new()\n {\n RestApi = exampleAwsApiGatewayRestApi.Id,\n });\n\n var exampleStage = new Aws.ApiGateway.Stage(\"example\", new()\n {\n RestApi = exampleAwsApiGatewayRestApi.Id,\n Deployment = exampleDeployment.Id,\n });\n\n var example = new Aws.CloudWatch.EventTarget(\"example\", new()\n {\n Arn = exampleStage.ExecutionArn.Apply(executionArn =\u003e $\"{executionArn}/GET\"),\n Rule = exampleEventRule.Id,\n HttpTarget = new Aws.CloudWatch.Inputs.EventTargetHttpTargetArgs\n {\n QueryStringParameters = \n {\n { \"Body\", \"$.detail.body\" },\n },\n HeaderParameters = \n {\n { \"Env\", \"Test\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/apigateway\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleEventRule, err := cloudwatch.NewEventRule(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDeployment, err := apigateway.NewDeployment(ctx, \"example\", \u0026apigateway.DeploymentArgs{\n\t\t\tRestApi: pulumi.Any(exampleAwsApiGatewayRestApi.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleStage, err := apigateway.NewStage(ctx, \"example\", \u0026apigateway.StageArgs{\n\t\t\tRestApi: pulumi.Any(exampleAwsApiGatewayRestApi.Id),\n\t\t\tDeployment: exampleDeployment.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewEventTarget(ctx, \"example\", \u0026cloudwatch.EventTargetArgs{\n\t\t\tArn: exampleStage.ExecutionArn.ApplyT(func(executionArn string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v/GET\", executionArn), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tRule: exampleEventRule.ID(),\n\t\t\tHttpTarget: \u0026cloudwatch.EventTargetHttpTargetArgs{\n\t\t\t\tQueryStringParameters: pulumi.StringMap{\n\t\t\t\t\t\"Body\": pulumi.String(\"$.detail.body\"),\n\t\t\t\t},\n\t\t\t\tHeaderParameters: pulumi.StringMap{\n\t\t\t\t\t\"Env\": pulumi.String(\"Test\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.EventRule;\nimport com.pulumi.aws.apigateway.Deployment;\nimport com.pulumi.aws.apigateway.DeploymentArgs;\nimport com.pulumi.aws.apigateway.Stage;\nimport com.pulumi.aws.apigateway.StageArgs;\nimport com.pulumi.aws.cloudwatch.EventTarget;\nimport com.pulumi.aws.cloudwatch.EventTargetArgs;\nimport com.pulumi.aws.cloudwatch.inputs.EventTargetHttpTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleEventRule = new EventRule(\"exampleEventRule\");\n\n var exampleDeployment = new Deployment(\"exampleDeployment\", DeploymentArgs.builder()\n .restApi(exampleAwsApiGatewayRestApi.id())\n .build());\n\n var exampleStage = new Stage(\"exampleStage\", StageArgs.builder()\n .restApi(exampleAwsApiGatewayRestApi.id())\n .deployment(exampleDeployment.id())\n .build());\n\n var example = new EventTarget(\"example\", EventTargetArgs.builder()\n .arn(exampleStage.executionArn().applyValue(_executionArn -\u003e String.format(\"%s/GET\", _executionArn)))\n .rule(exampleEventRule.id())\n .httpTarget(EventTargetHttpTargetArgs.builder()\n .queryStringParameters(Map.of(\"Body\", \"$.detail.body\"))\n .headerParameters(Map.of(\"Env\", \"Test\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:cloudwatch:EventTarget\n properties:\n arn: ${exampleStage.executionArn}/GET\n rule: ${exampleEventRule.id}\n httpTarget:\n queryStringParameters:\n Body: $.detail.body\n headerParameters:\n Env: Test\n exampleEventRule:\n type: aws:cloudwatch:EventRule\n name: example\n exampleDeployment:\n type: aws:apigateway:Deployment\n name: example\n properties:\n restApi: ${exampleAwsApiGatewayRestApi.id}\n exampleStage:\n type: aws:apigateway:Stage\n name: example\n properties:\n restApi: ${exampleAwsApiGatewayRestApi.id}\n deployment: ${exampleDeployment.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Cross-Account Event Bus target\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst assumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"events.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst eventBusInvokeRemoteEventBusRole = new aws.iam.Role(\"event_bus_invoke_remote_event_bus\", {\n name: \"event-bus-invoke-remote-event-bus\",\n assumeRolePolicy: assumeRole.then(assumeRole =\u003e assumeRole.json),\n});\nconst eventBusInvokeRemoteEventBus = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n actions: [\"events:PutEvents\"],\n resources: [\"arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\"],\n }],\n});\nconst eventBusInvokeRemoteEventBusPolicy = new aws.iam.Policy(\"event_bus_invoke_remote_event_bus\", {\n name: \"event_bus_invoke_remote_event_bus\",\n policy: eventBusInvokeRemoteEventBus.then(eventBusInvokeRemoteEventBus =\u003e eventBusInvokeRemoteEventBus.json),\n});\nconst eventBusInvokeRemoteEventBusRolePolicyAttachment = new aws.iam.RolePolicyAttachment(\"event_bus_invoke_remote_event_bus\", {\n role: eventBusInvokeRemoteEventBusRole.name,\n policyArn: eventBusInvokeRemoteEventBusPolicy.arn,\n});\nconst stopInstances = new aws.cloudwatch.EventRule(\"stop_instances\", {\n name: \"StopInstance\",\n description: \"Stop instances nightly\",\n scheduleExpression: \"cron(0 0 * * ? *)\",\n});\nconst stopInstancesEventTarget = new aws.cloudwatch.EventTarget(\"stop_instances\", {\n targetId: \"StopInstance\",\n arn: \"arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\",\n rule: stopInstances.name,\n roleArn: eventBusInvokeRemoteEventBusRole.arn,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nassume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"events.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nevent_bus_invoke_remote_event_bus_role = aws.iam.Role(\"event_bus_invoke_remote_event_bus\",\n name=\"event-bus-invoke-remote-event-bus\",\n assume_role_policy=assume_role.json)\nevent_bus_invoke_remote_event_bus = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"actions\": [\"events:PutEvents\"],\n \"resources\": [\"arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\"],\n}])\nevent_bus_invoke_remote_event_bus_policy = aws.iam.Policy(\"event_bus_invoke_remote_event_bus\",\n name=\"event_bus_invoke_remote_event_bus\",\n policy=event_bus_invoke_remote_event_bus.json)\nevent_bus_invoke_remote_event_bus_role_policy_attachment = aws.iam.RolePolicyAttachment(\"event_bus_invoke_remote_event_bus\",\n role=event_bus_invoke_remote_event_bus_role.name,\n policy_arn=event_bus_invoke_remote_event_bus_policy.arn)\nstop_instances = aws.cloudwatch.EventRule(\"stop_instances\",\n name=\"StopInstance\",\n description=\"Stop instances nightly\",\n schedule_expression=\"cron(0 0 * * ? *)\")\nstop_instances_event_target = aws.cloudwatch.EventTarget(\"stop_instances\",\n target_id=\"StopInstance\",\n arn=\"arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\",\n rule=stop_instances.name,\n role_arn=event_bus_invoke_remote_event_bus_role.arn)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var assumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"events.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var eventBusInvokeRemoteEventBusRole = new Aws.Iam.Role(\"event_bus_invoke_remote_event_bus\", new()\n {\n Name = \"event-bus-invoke-remote-event-bus\",\n AssumeRolePolicy = assumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var eventBusInvokeRemoteEventBus = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"events:PutEvents\",\n },\n Resources = new[]\n {\n \"arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\",\n },\n },\n },\n });\n\n var eventBusInvokeRemoteEventBusPolicy = new Aws.Iam.Policy(\"event_bus_invoke_remote_event_bus\", new()\n {\n Name = \"event_bus_invoke_remote_event_bus\",\n PolicyDocument = eventBusInvokeRemoteEventBus.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var eventBusInvokeRemoteEventBusRolePolicyAttachment = new Aws.Iam.RolePolicyAttachment(\"event_bus_invoke_remote_event_bus\", new()\n {\n Role = eventBusInvokeRemoteEventBusRole.Name,\n PolicyArn = eventBusInvokeRemoteEventBusPolicy.Arn,\n });\n\n var stopInstances = new Aws.CloudWatch.EventRule(\"stop_instances\", new()\n {\n Name = \"StopInstance\",\n Description = \"Stop instances nightly\",\n ScheduleExpression = \"cron(0 0 * * ? *)\",\n });\n\n var stopInstancesEventTarget = new Aws.CloudWatch.EventTarget(\"stop_instances\", new()\n {\n TargetId = \"StopInstance\",\n Arn = \"arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\",\n Rule = stopInstances.Name,\n RoleArn = eventBusInvokeRemoteEventBusRole.Arn,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tassumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"events.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teventBusInvokeRemoteEventBusRole, err := iam.NewRole(ctx, \"event_bus_invoke_remote_event_bus\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"event-bus-invoke-remote-event-bus\"),\n\t\t\tAssumeRolePolicy: pulumi.String(assumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teventBusInvokeRemoteEventBus, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"events:PutEvents\",\n\t\t\t\t\t},\n\t\t\t\t\tResources: []string{\n\t\t\t\t\t\t\"arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teventBusInvokeRemoteEventBusPolicy, err := iam.NewPolicy(ctx, \"event_bus_invoke_remote_event_bus\", \u0026iam.PolicyArgs{\n\t\t\tName: pulumi.String(\"event_bus_invoke_remote_event_bus\"),\n\t\t\tPolicy: pulumi.String(eventBusInvokeRemoteEventBus.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewRolePolicyAttachment(ctx, \"event_bus_invoke_remote_event_bus\", \u0026iam.RolePolicyAttachmentArgs{\n\t\t\tRole: eventBusInvokeRemoteEventBusRole.Name,\n\t\t\tPolicyArn: eventBusInvokeRemoteEventBusPolicy.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstopInstances, err := cloudwatch.NewEventRule(ctx, \"stop_instances\", \u0026cloudwatch.EventRuleArgs{\n\t\t\tName: pulumi.String(\"StopInstance\"),\n\t\t\tDescription: pulumi.String(\"Stop instances nightly\"),\n\t\t\tScheduleExpression: pulumi.String(\"cron(0 0 * * ? *)\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewEventTarget(ctx, \"stop_instances\", \u0026cloudwatch.EventTargetArgs{\n\t\t\tTargetId: pulumi.String(\"StopInstance\"),\n\t\t\tArn: pulumi.String(\"arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\"),\n\t\t\tRule: stopInstances.Name,\n\t\t\tRoleArn: eventBusInvokeRemoteEventBusRole.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.iam.Policy;\nimport com.pulumi.aws.iam.PolicyArgs;\nimport com.pulumi.aws.iam.RolePolicyAttachment;\nimport com.pulumi.aws.iam.RolePolicyAttachmentArgs;\nimport com.pulumi.aws.cloudwatch.EventRule;\nimport com.pulumi.aws.cloudwatch.EventRuleArgs;\nimport com.pulumi.aws.cloudwatch.EventTarget;\nimport com.pulumi.aws.cloudwatch.EventTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"events.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var eventBusInvokeRemoteEventBusRole = new Role(\"eventBusInvokeRemoteEventBusRole\", RoleArgs.builder()\n .name(\"event-bus-invoke-remote-event-bus\")\n .assumeRolePolicy(assumeRole.json())\n .build());\n\n final var eventBusInvokeRemoteEventBus = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"events:PutEvents\")\n .resources(\"arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\")\n .build())\n .build());\n\n var eventBusInvokeRemoteEventBusPolicy = new Policy(\"eventBusInvokeRemoteEventBusPolicy\", PolicyArgs.builder()\n .name(\"event_bus_invoke_remote_event_bus\")\n .policy(eventBusInvokeRemoteEventBus.json())\n .build());\n\n var eventBusInvokeRemoteEventBusRolePolicyAttachment = new RolePolicyAttachment(\"eventBusInvokeRemoteEventBusRolePolicyAttachment\", RolePolicyAttachmentArgs.builder()\n .role(eventBusInvokeRemoteEventBusRole.name())\n .policyArn(eventBusInvokeRemoteEventBusPolicy.arn())\n .build());\n\n var stopInstances = new EventRule(\"stopInstances\", EventRuleArgs.builder()\n .name(\"StopInstance\")\n .description(\"Stop instances nightly\")\n .scheduleExpression(\"cron(0 0 * * ? *)\")\n .build());\n\n var stopInstancesEventTarget = new EventTarget(\"stopInstancesEventTarget\", EventTargetArgs.builder()\n .targetId(\"StopInstance\")\n .arn(\"arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\")\n .rule(stopInstances.name())\n .roleArn(eventBusInvokeRemoteEventBusRole.arn())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n eventBusInvokeRemoteEventBusRole:\n type: aws:iam:Role\n name: event_bus_invoke_remote_event_bus\n properties:\n name: event-bus-invoke-remote-event-bus\n assumeRolePolicy: ${assumeRole.json}\n eventBusInvokeRemoteEventBusPolicy:\n type: aws:iam:Policy\n name: event_bus_invoke_remote_event_bus\n properties:\n name: event_bus_invoke_remote_event_bus\n policy: ${eventBusInvokeRemoteEventBus.json}\n eventBusInvokeRemoteEventBusRolePolicyAttachment:\n type: aws:iam:RolePolicyAttachment\n name: event_bus_invoke_remote_event_bus\n properties:\n role: ${eventBusInvokeRemoteEventBusRole.name}\n policyArn: ${eventBusInvokeRemoteEventBusPolicy.arn}\n stopInstances:\n type: aws:cloudwatch:EventRule\n name: stop_instances\n properties:\n name: StopInstance\n description: Stop instances nightly\n scheduleExpression: cron(0 0 * * ? *)\n stopInstancesEventTarget:\n type: aws:cloudwatch:EventTarget\n name: stop_instances\n properties:\n targetId: StopInstance\n arn: arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\n rule: ${stopInstances.name}\n roleArn: ${eventBusInvokeRemoteEventBusRole.arn}\nvariables:\n assumeRole:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - events.amazonaws.com\n actions:\n - sts:AssumeRole\n eventBusInvokeRemoteEventBus:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n actions:\n - events:PutEvents\n resources:\n - arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Input Transformer Usage - JSON Object\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleEventRule = new aws.cloudwatch.EventRule(\"example\", {});\nconst example = new aws.cloudwatch.EventTarget(\"example\", {\n arn: exampleAwsLambdaFunction.arn,\n rule: exampleEventRule.id,\n inputTransformer: {\n inputPaths: {\n instance: \"$.detail.instance\",\n status: \"$.detail.status\",\n },\n inputTemplate: `{\n \"instance_id\": \u003cinstance\u003e,\n \"instance_status\": \u003cstatus\u003e\n}\n`,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_event_rule = aws.cloudwatch.EventRule(\"example\")\nexample = aws.cloudwatch.EventTarget(\"example\",\n arn=example_aws_lambda_function[\"arn\"],\n rule=example_event_rule.id,\n input_transformer={\n \"input_paths\": {\n \"instance\": \"$.detail.instance\",\n \"status\": \"$.detail.status\",\n },\n \"input_template\": \"\"\"{\n \"instance_id\": \u003cinstance\u003e,\n \"instance_status\": \u003cstatus\u003e\n}\n\"\"\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleEventRule = new Aws.CloudWatch.EventRule(\"example\");\n\n var example = new Aws.CloudWatch.EventTarget(\"example\", new()\n {\n Arn = exampleAwsLambdaFunction.Arn,\n Rule = exampleEventRule.Id,\n InputTransformer = new Aws.CloudWatch.Inputs.EventTargetInputTransformerArgs\n {\n InputPaths = \n {\n { \"instance\", \"$.detail.instance\" },\n { \"status\", \"$.detail.status\" },\n },\n InputTemplate = @\"{\n \"\"instance_id\"\": \u003cinstance\u003e,\n \"\"instance_status\"\": \u003cstatus\u003e\n}\n\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleEventRule, err := cloudwatch.NewEventRule(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewEventTarget(ctx, \"example\", \u0026cloudwatch.EventTargetArgs{\n\t\t\tArn: pulumi.Any(exampleAwsLambdaFunction.Arn),\n\t\t\tRule: exampleEventRule.ID(),\n\t\t\tInputTransformer: \u0026cloudwatch.EventTargetInputTransformerArgs{\n\t\t\t\tInputPaths: pulumi.StringMap{\n\t\t\t\t\t\"instance\": pulumi.String(\"$.detail.instance\"),\n\t\t\t\t\t\"status\": pulumi.String(\"$.detail.status\"),\n\t\t\t\t},\n\t\t\t\tInputTemplate: pulumi.String(\"{\\n \\\"instance_id\\\": \u003cinstance\u003e,\\n \\\"instance_status\\\": \u003cstatus\u003e\\n}\\n\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.EventRule;\nimport com.pulumi.aws.cloudwatch.EventTarget;\nimport com.pulumi.aws.cloudwatch.EventTargetArgs;\nimport com.pulumi.aws.cloudwatch.inputs.EventTargetInputTransformerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleEventRule = new EventRule(\"exampleEventRule\");\n\n var example = new EventTarget(\"example\", EventTargetArgs.builder()\n .arn(exampleAwsLambdaFunction.arn())\n .rule(exampleEventRule.id())\n .inputTransformer(EventTargetInputTransformerArgs.builder()\n .inputPaths(Map.ofEntries(\n Map.entry(\"instance\", \"$.detail.instance\"),\n Map.entry(\"status\", \"$.detail.status\")\n ))\n .inputTemplate(\"\"\"\n{\n \"instance_id\": \u003cinstance\u003e,\n \"instance_status\": \u003cstatus\u003e\n}\n \"\"\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:cloudwatch:EventTarget\n properties:\n arn: ${exampleAwsLambdaFunction.arn}\n rule: ${exampleEventRule.id}\n inputTransformer:\n inputPaths:\n instance: $.detail.instance\n status: $.detail.status\n inputTemplate: |\n {\n \"instance_id\": \u003cinstance\u003e,\n \"instance_status\": \u003cstatus\u003e\n }\n exampleEventRule:\n type: aws:cloudwatch:EventRule\n name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Input Transformer Usage - Simple String\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleEventRule = new aws.cloudwatch.EventRule(\"example\", {});\nconst example = new aws.cloudwatch.EventTarget(\"example\", {\n arn: exampleAwsLambdaFunction.arn,\n rule: exampleEventRule.id,\n inputTransformer: {\n inputPaths: {\n instance: \"$.detail.instance\",\n status: \"$.detail.status\",\n },\n inputTemplate: \"\\\"\u003cinstance\u003e is in state \u003cstatus\u003e\\\"\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_event_rule = aws.cloudwatch.EventRule(\"example\")\nexample = aws.cloudwatch.EventTarget(\"example\",\n arn=example_aws_lambda_function[\"arn\"],\n rule=example_event_rule.id,\n input_transformer={\n \"input_paths\": {\n \"instance\": \"$.detail.instance\",\n \"status\": \"$.detail.status\",\n },\n \"input_template\": \"\\\"\u003cinstance\u003e is in state \u003cstatus\u003e\\\"\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleEventRule = new Aws.CloudWatch.EventRule(\"example\");\n\n var example = new Aws.CloudWatch.EventTarget(\"example\", new()\n {\n Arn = exampleAwsLambdaFunction.Arn,\n Rule = exampleEventRule.Id,\n InputTransformer = new Aws.CloudWatch.Inputs.EventTargetInputTransformerArgs\n {\n InputPaths = \n {\n { \"instance\", \"$.detail.instance\" },\n { \"status\", \"$.detail.status\" },\n },\n InputTemplate = \"\\\"\u003cinstance\u003e is in state \u003cstatus\u003e\\\"\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleEventRule, err := cloudwatch.NewEventRule(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewEventTarget(ctx, \"example\", \u0026cloudwatch.EventTargetArgs{\n\t\t\tArn: pulumi.Any(exampleAwsLambdaFunction.Arn),\n\t\t\tRule: exampleEventRule.ID(),\n\t\t\tInputTransformer: \u0026cloudwatch.EventTargetInputTransformerArgs{\n\t\t\t\tInputPaths: pulumi.StringMap{\n\t\t\t\t\t\"instance\": pulumi.String(\"$.detail.instance\"),\n\t\t\t\t\t\"status\": pulumi.String(\"$.detail.status\"),\n\t\t\t\t},\n\t\t\t\tInputTemplate: pulumi.String(\"\\\"\u003cinstance\u003e is in state \u003cstatus\u003e\\\"\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.EventRule;\nimport com.pulumi.aws.cloudwatch.EventTarget;\nimport com.pulumi.aws.cloudwatch.EventTargetArgs;\nimport com.pulumi.aws.cloudwatch.inputs.EventTargetInputTransformerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleEventRule = new EventRule(\"exampleEventRule\");\n\n var example = new EventTarget(\"example\", EventTargetArgs.builder()\n .arn(exampleAwsLambdaFunction.arn())\n .rule(exampleEventRule.id())\n .inputTransformer(EventTargetInputTransformerArgs.builder()\n .inputPaths(Map.ofEntries(\n Map.entry(\"instance\", \"$.detail.instance\"),\n Map.entry(\"status\", \"$.detail.status\")\n ))\n .inputTemplate(\"\\\"\u003cinstance\u003e is in state \u003cstatus\u003e\\\"\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:cloudwatch:EventTarget\n properties:\n arn: ${exampleAwsLambdaFunction.arn}\n rule: ${exampleEventRule.id}\n inputTransformer:\n inputPaths:\n instance: $.detail.instance\n status: $.detail.status\n inputTemplate: '\"\u003cinstance\u003e is in state \u003cstatus\u003e\"'\n exampleEventRule:\n type: aws:cloudwatch:EventRule\n name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Cloudwatch Log Group Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.cloudwatch.LogGroup(\"example\", {\n name: \"/aws/events/guardduty/logs\",\n retentionInDays: 1,\n});\nconst exampleEventRule = new aws.cloudwatch.EventRule(\"example\", {\n name: \"guard-duty_event_rule\",\n description: \"GuardDuty Findings\",\n eventPattern: JSON.stringify({\n source: [\"aws.guardduty\"],\n }),\n tags: {\n Environment: \"example\",\n },\n});\nconst exampleLogPolicy = aws.iam.getPolicyDocumentOutput({\n statements: [\n {\n effect: \"Allow\",\n actions: [\"logs:CreateLogStream\"],\n resources: [pulumi.interpolate`${example.arn}:*`],\n principals: [{\n type: \"Service\",\n identifiers: [\n \"events.amazonaws.com\",\n \"delivery.logs.amazonaws.com\",\n ],\n }],\n },\n {\n effect: \"Allow\",\n actions: [\"logs:PutLogEvents\"],\n resources: [pulumi.interpolate`${example.arn}:*:*`],\n principals: [{\n type: \"Service\",\n identifiers: [\n \"events.amazonaws.com\",\n \"delivery.logs.amazonaws.com\",\n ],\n }],\n conditions: [{\n test: \"ArnEquals\",\n values: [exampleEventRule.arn],\n variable: \"aws:SourceArn\",\n }],\n },\n ],\n});\nconst exampleLogResourcePolicy = new aws.cloudwatch.LogResourcePolicy(\"example\", {\n policyDocument: exampleLogPolicy.apply(exampleLogPolicy =\u003e exampleLogPolicy.json),\n policyName: \"guardduty-log-publishing-policy\",\n});\nconst exampleEventTarget = new aws.cloudwatch.EventTarget(\"example\", {\n rule: exampleEventRule.name,\n arn: example.arn,\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nexample = aws.cloudwatch.LogGroup(\"example\",\n name=\"/aws/events/guardduty/logs\",\n retention_in_days=1)\nexample_event_rule = aws.cloudwatch.EventRule(\"example\",\n name=\"guard-duty_event_rule\",\n description=\"GuardDuty Findings\",\n event_pattern=json.dumps({\n \"source\": [\"aws.guardduty\"],\n }),\n tags={\n \"Environment\": \"example\",\n })\nexample_log_policy = aws.iam.get_policy_document_output(statements=[\n {\n \"effect\": \"Allow\",\n \"actions\": [\"logs:CreateLogStream\"],\n \"resources\": [example.arn.apply(lambda arn: f\"{arn}:*\")],\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\n \"events.amazonaws.com\",\n \"delivery.logs.amazonaws.com\",\n ],\n }],\n },\n {\n \"effect\": \"Allow\",\n \"actions\": [\"logs:PutLogEvents\"],\n \"resources\": [example.arn.apply(lambda arn: f\"{arn}:*:*\")],\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\n \"events.amazonaws.com\",\n \"delivery.logs.amazonaws.com\",\n ],\n }],\n \"conditions\": [{\n \"test\": \"ArnEquals\",\n \"values\": [example_event_rule.arn],\n \"variable\": \"aws:SourceArn\",\n }],\n },\n])\nexample_log_resource_policy = aws.cloudwatch.LogResourcePolicy(\"example\",\n policy_document=example_log_policy.json,\n policy_name=\"guardduty-log-publishing-policy\")\nexample_event_target = aws.cloudwatch.EventTarget(\"example\",\n rule=example_event_rule.name,\n arn=example.arn)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.CloudWatch.LogGroup(\"example\", new()\n {\n Name = \"/aws/events/guardduty/logs\",\n RetentionInDays = 1,\n });\n\n var exampleEventRule = new Aws.CloudWatch.EventRule(\"example\", new()\n {\n Name = \"guard-duty_event_rule\",\n Description = \"GuardDuty Findings\",\n EventPattern = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"source\"] = new[]\n {\n \"aws.guardduty\",\n },\n }),\n Tags = \n {\n { \"Environment\", \"example\" },\n },\n });\n\n var exampleLogPolicy = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"logs:CreateLogStream\",\n },\n Resources = new[]\n {\n $\"{example.Arn}:*\",\n },\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"events.amazonaws.com\",\n \"delivery.logs.amazonaws.com\",\n },\n },\n },\n },\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"logs:PutLogEvents\",\n },\n Resources = new[]\n {\n $\"{example.Arn}:*:*\",\n },\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"events.amazonaws.com\",\n \"delivery.logs.amazonaws.com\",\n },\n },\n },\n Conditions = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementConditionInputArgs\n {\n Test = \"ArnEquals\",\n Values = new[]\n {\n exampleEventRule.Arn,\n },\n Variable = \"aws:SourceArn\",\n },\n },\n },\n },\n });\n\n var exampleLogResourcePolicy = new Aws.CloudWatch.LogResourcePolicy(\"example\", new()\n {\n PolicyDocument = exampleLogPolicy.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n PolicyName = \"guardduty-log-publishing-policy\",\n });\n\n var exampleEventTarget = new Aws.CloudWatch.EventTarget(\"example\", new()\n {\n Rule = exampleEventRule.Name,\n Arn = example.Arn,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := cloudwatch.NewLogGroup(ctx, \"example\", \u0026cloudwatch.LogGroupArgs{\n\t\t\tName: pulumi.String(\"/aws/events/guardduty/logs\"),\n\t\t\tRetentionInDays: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"source\": []string{\n\t\t\t\t\"aws.guardduty\",\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\texampleEventRule, err := cloudwatch.NewEventRule(ctx, \"example\", \u0026cloudwatch.EventRuleArgs{\n\t\t\tName: pulumi.String(\"guard-duty_event_rule\"),\n\t\t\tDescription: pulumi.String(\"GuardDuty Findings\"),\n\t\t\tEventPattern: pulumi.String(json0),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Environment\": pulumi.String(\"example\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleLogPolicy := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{\n\t\t\tStatements: iam.GetPolicyDocumentStatementArray{\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"logs:CreateLogStream\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\texample.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"%v:*\", arn), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t\tPrincipals: iam.GetPolicyDocumentStatementPrincipalArray{\n\t\t\t\t\t\t\u0026iam.GetPolicyDocumentStatementPrincipalArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Service\"),\n\t\t\t\t\t\t\tIdentifiers: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"events.amazonaws.com\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"delivery.logs.amazonaws.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"logs:PutLogEvents\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\texample.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"%v:*:*\", arn), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t\tPrincipals: iam.GetPolicyDocumentStatementPrincipalArray{\n\t\t\t\t\t\t\u0026iam.GetPolicyDocumentStatementPrincipalArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Service\"),\n\t\t\t\t\t\t\tIdentifiers: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"events.amazonaws.com\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"delivery.logs.amazonaws.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tConditions: iam.GetPolicyDocumentStatementConditionArray{\n\t\t\t\t\t\t\u0026iam.GetPolicyDocumentStatementConditionArgs{\n\t\t\t\t\t\t\tTest: pulumi.String(\"ArnEquals\"),\n\t\t\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\t\t\texampleEventRule.Arn,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tVariable: pulumi.String(\"aws:SourceArn\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\t_, err = cloudwatch.NewLogResourcePolicy(ctx, \"example\", \u0026cloudwatch.LogResourcePolicyArgs{\n\t\t\tPolicyDocument: pulumi.String(exampleLogPolicy.ApplyT(func(exampleLogPolicy iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026exampleLogPolicy.Json, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tPolicyName: pulumi.String(\"guardduty-log-publishing-policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewEventTarget(ctx, \"example\", \u0026cloudwatch.EventTargetArgs{\n\t\t\tRule: exampleEventRule.Name,\n\t\t\tArn: example.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.LogGroup;\nimport com.pulumi.aws.cloudwatch.LogGroupArgs;\nimport com.pulumi.aws.cloudwatch.EventRule;\nimport com.pulumi.aws.cloudwatch.EventRuleArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.cloudwatch.LogResourcePolicy;\nimport com.pulumi.aws.cloudwatch.LogResourcePolicyArgs;\nimport com.pulumi.aws.cloudwatch.EventTarget;\nimport com.pulumi.aws.cloudwatch.EventTargetArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new LogGroup(\"example\", LogGroupArgs.builder()\n .name(\"/aws/events/guardduty/logs\")\n .retentionInDays(1)\n .build());\n\n var exampleEventRule = new EventRule(\"exampleEventRule\", EventRuleArgs.builder()\n .name(\"guard-duty_event_rule\")\n .description(\"GuardDuty Findings\")\n .eventPattern(serializeJson(\n jsonObject(\n jsonProperty(\"source\", jsonArray(\"aws.guardduty\"))\n )))\n .tags(Map.of(\"Environment\", \"example\"))\n .build());\n\n final var exampleLogPolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements( \n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"logs:CreateLogStream\")\n .resources(example.arn().applyValue(_arn -\u003e String.format(\"%s:*\", _arn)))\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers( \n \"events.amazonaws.com\",\n \"delivery.logs.amazonaws.com\")\n .build())\n .build(),\n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"logs:PutLogEvents\")\n .resources(example.arn().applyValue(_arn -\u003e String.format(\"%s:*:*\", _arn)))\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers( \n \"events.amazonaws.com\",\n \"delivery.logs.amazonaws.com\")\n .build())\n .conditions(GetPolicyDocumentStatementConditionArgs.builder()\n .test(\"ArnEquals\")\n .values(exampleEventRule.arn())\n .variable(\"aws:SourceArn\")\n .build())\n .build())\n .build());\n\n var exampleLogResourcePolicy = new LogResourcePolicy(\"exampleLogResourcePolicy\", LogResourcePolicyArgs.builder()\n .policyDocument(exampleLogPolicy.applyValue(_exampleLogPolicy -\u003e _exampleLogPolicy.json()))\n .policyName(\"guardduty-log-publishing-policy\")\n .build());\n\n var exampleEventTarget = new EventTarget(\"exampleEventTarget\", EventTargetArgs.builder()\n .rule(exampleEventRule.name())\n .arn(example.arn())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:cloudwatch:LogGroup\n properties:\n name: /aws/events/guardduty/logs\n retentionInDays: 1\n exampleLogResourcePolicy:\n type: aws:cloudwatch:LogResourcePolicy\n name: example\n properties:\n policyDocument: ${exampleLogPolicy.json}\n policyName: guardduty-log-publishing-policy\n exampleEventRule:\n type: aws:cloudwatch:EventRule\n name: example\n properties:\n name: guard-duty_event_rule\n description: GuardDuty Findings\n eventPattern:\n fn::toJSON:\n source:\n - aws.guardduty\n tags:\n Environment: example\n exampleEventTarget:\n type: aws:cloudwatch:EventTarget\n name: example\n properties:\n rule: ${exampleEventRule.name}\n arn: ${example.arn}\nvariables:\n exampleLogPolicy:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n actions:\n - logs:CreateLogStream\n resources:\n - ${example.arn}:*\n principals:\n - type: Service\n identifiers:\n - events.amazonaws.com\n - delivery.logs.amazonaws.com\n - effect: Allow\n actions:\n - logs:PutLogEvents\n resources:\n - ${example.arn}:*:*\n principals:\n - type: Service\n identifiers:\n - events.amazonaws.com\n - delivery.logs.amazonaws.com\n conditions:\n - test: ArnEquals\n values:\n - ${exampleEventRule.arn}\n variable: aws:SourceArn\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### AppSync Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst invokeAppsyncMutation = new aws.cloudwatch.EventRule(\"invoke_appsync_mutation\", {\n name: \"invoke-appsync-mutation\",\n description: \"schedule_batch_test\",\n scheduleExpression: \"rate(5 minutes)\",\n});\nconst appsyncMutationRoleTrust = aws.iam.getPolicyDocument({\n statements: [{\n actions: [\"sts:AssumeRole\"],\n principals: [{\n type: \"Service\",\n identifiers: [\"events.amazonaws.com\"],\n }],\n }],\n});\nconst appsyncMutationRole = new aws.iam.Role(\"appsync_mutation_role\", {\n name: \"appsync-mutation-role\",\n assumeRolePolicy: appsyncMutationRoleTrust.then(appsyncMutationRoleTrust =\u003e appsyncMutationRoleTrust.json),\n});\nconst graphql_api = new aws.appsync.GraphQLApi(\"graphql-api\", {\n name: \"api\",\n authenticationType: \"AWS_IAM\",\n schema: ` schema {\n mutation: Mutation\n query: Query\n }\n\n type Query {\n testQuery: String\n }\n\n type Mutation {\n testMutation(input: MutationInput!): TestMutationResult\n }\n\n type TestMutationResult {\n test: String\n }\n\n input MutationInput {\n testInput: String\n }\n`,\n});\nconst invokeAppsyncMutationEventTarget = new aws.cloudwatch.EventTarget(\"invoke_appsync_mutation\", {\n arn: std.replaceOutput({\n text: graphql_api.arn,\n search: \"apis\",\n replace: \"endpoints/graphql-api\",\n }).apply(invoke =\u003e invoke.result),\n rule: invokeAppsyncMutation.id,\n roleArn: appsyncMutationRole.arn,\n inputTransformer: {\n inputPaths: {\n input: \"$.detail.input\",\n },\n inputTemplate: ` {\n \"input\": \u003cinput\u003e\n }\n`,\n },\n appsyncTarget: {\n graphqlOperation: \"mutation TestMutation($input:MutationInput!){testMutation(input: $input) {test}}\",\n },\n});\nconst appsyncMutationRolePolicyDocument = aws.iam.getPolicyDocumentOutput({\n statements: [{\n actions: [\"appsync:GraphQL\"],\n effect: \"Allow\",\n resources: [graphql_api.arn],\n }],\n});\nconst appsyncMutationRolePolicy = new aws.iam.Policy(\"appsync_mutation_role_policy\", {\n name: \"appsync-mutation-role-policy\",\n policy: appsyncMutationRolePolicyDocument.apply(appsyncMutationRolePolicyDocument =\u003e appsyncMutationRolePolicyDocument.json),\n});\nconst appsyncMutationRoleAttachment = new aws.iam.RolePolicyAttachment(\"appsync_mutation_role_attachment\", {\n policyArn: appsyncMutationRolePolicy.arn,\n role: appsyncMutationRole.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\ninvoke_appsync_mutation = aws.cloudwatch.EventRule(\"invoke_appsync_mutation\",\n name=\"invoke-appsync-mutation\",\n description=\"schedule_batch_test\",\n schedule_expression=\"rate(5 minutes)\")\nappsync_mutation_role_trust = aws.iam.get_policy_document(statements=[{\n \"actions\": [\"sts:AssumeRole\"],\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"events.amazonaws.com\"],\n }],\n}])\nappsync_mutation_role = aws.iam.Role(\"appsync_mutation_role\",\n name=\"appsync-mutation-role\",\n assume_role_policy=appsync_mutation_role_trust.json)\ngraphql_api = aws.appsync.GraphQLApi(\"graphql-api\",\n name=\"api\",\n authentication_type=\"AWS_IAM\",\n schema=\"\"\" schema {\n mutation: Mutation\n query: Query\n }\n\n type Query {\n testQuery: String\n }\n\n type Mutation {\n testMutation(input: MutationInput!): TestMutationResult\n }\n\n type TestMutationResult {\n test: String\n }\n\n input MutationInput {\n testInput: String\n }\n\"\"\")\ninvoke_appsync_mutation_event_target = aws.cloudwatch.EventTarget(\"invoke_appsync_mutation\",\n arn=std.replace_output(text=graphql_api.arn,\n search=\"apis\",\n replace=\"endpoints/graphql-api\").apply(lambda invoke: invoke.result),\n rule=invoke_appsync_mutation.id,\n role_arn=appsync_mutation_role.arn,\n input_transformer={\n \"input_paths\": {\n \"input\": \"$.detail.input\",\n },\n \"input_template\": \"\"\" {\n \"input\": \u003cinput\u003e\n }\n\"\"\",\n },\n appsync_target={\n \"graphql_operation\": \"mutation TestMutation($input:MutationInput!){testMutation(input: $input) {test}}\",\n })\nappsync_mutation_role_policy_document = aws.iam.get_policy_document_output(statements=[{\n \"actions\": [\"appsync:GraphQL\"],\n \"effect\": \"Allow\",\n \"resources\": [graphql_api.arn],\n}])\nappsync_mutation_role_policy = aws.iam.Policy(\"appsync_mutation_role_policy\",\n name=\"appsync-mutation-role-policy\",\n policy=appsync_mutation_role_policy_document.json)\nappsync_mutation_role_attachment = aws.iam.RolePolicyAttachment(\"appsync_mutation_role_attachment\",\n policy_arn=appsync_mutation_role_policy.arn,\n role=appsync_mutation_role.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var invokeAppsyncMutation = new Aws.CloudWatch.EventRule(\"invoke_appsync_mutation\", new()\n {\n Name = \"invoke-appsync-mutation\",\n Description = \"schedule_batch_test\",\n ScheduleExpression = \"rate(5 minutes)\",\n });\n\n var appsyncMutationRoleTrust = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"events.amazonaws.com\",\n },\n },\n },\n },\n },\n });\n\n var appsyncMutationRole = new Aws.Iam.Role(\"appsync_mutation_role\", new()\n {\n Name = \"appsync-mutation-role\",\n AssumeRolePolicy = appsyncMutationRoleTrust.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var graphql_api = new Aws.AppSync.GraphQLApi(\"graphql-api\", new()\n {\n Name = \"api\",\n AuthenticationType = \"AWS_IAM\",\n Schema = @\" schema {\n mutation: Mutation\n query: Query\n }\n\n type Query {\n testQuery: String\n }\n\n type Mutation {\n testMutation(input: MutationInput!): TestMutationResult\n }\n\n type TestMutationResult {\n test: String\n }\n\n input MutationInput {\n testInput: String\n }\n\",\n });\n\n var invokeAppsyncMutationEventTarget = new Aws.CloudWatch.EventTarget(\"invoke_appsync_mutation\", new()\n {\n Arn = Std.Replace.Invoke(new()\n {\n Text = graphql_api.Arn,\n Search = \"apis\",\n Replace = \"endpoints/graphql-api\",\n }).Apply(invoke =\u003e invoke.Result),\n Rule = invokeAppsyncMutation.Id,\n RoleArn = appsyncMutationRole.Arn,\n InputTransformer = new Aws.CloudWatch.Inputs.EventTargetInputTransformerArgs\n {\n InputPaths = \n {\n { \"input\", \"$.detail.input\" },\n },\n InputTemplate = @\" {\n \"\"input\"\": \u003cinput\u003e\n }\n\",\n },\n AppsyncTarget = new Aws.CloudWatch.Inputs.EventTargetAppsyncTargetArgs\n {\n GraphqlOperation = \"mutation TestMutation($input:MutationInput!){testMutation(input: $input) {test}}\",\n },\n });\n\n var appsyncMutationRolePolicyDocument = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Actions = new[]\n {\n \"appsync:GraphQL\",\n },\n Effect = \"Allow\",\n Resources = new[]\n {\n graphql_api.Arn,\n },\n },\n },\n });\n\n var appsyncMutationRolePolicy = new Aws.Iam.Policy(\"appsync_mutation_role_policy\", new()\n {\n Name = \"appsync-mutation-role-policy\",\n PolicyDocument = appsyncMutationRolePolicyDocument.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var appsyncMutationRoleAttachment = new Aws.Iam.RolePolicyAttachment(\"appsync_mutation_role_attachment\", new()\n {\n PolicyArn = appsyncMutationRolePolicy.Arn,\n Role = appsyncMutationRole.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeAppsyncMutation, err := cloudwatch.NewEventRule(ctx, \"invoke_appsync_mutation\", \u0026cloudwatch.EventRuleArgs{\n\t\t\tName: pulumi.String(\"invoke-appsync-mutation\"),\n\t\t\tDescription: pulumi.String(\"schedule_batch_test\"),\n\t\t\tScheduleExpression: pulumi.String(\"rate(5 minutes)\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappsyncMutationRoleTrust, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"events.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappsyncMutationRole, err := iam.NewRole(ctx, \"appsync_mutation_role\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"appsync-mutation-role\"),\n\t\t\tAssumeRolePolicy: pulumi.String(appsyncMutationRoleTrust.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgraphql_api, err := appsync.NewGraphQLApi(ctx, \"graphql-api\", \u0026appsync.GraphQLApiArgs{\n\t\t\tName: pulumi.String(\"api\"),\n\t\t\tAuthenticationType: pulumi.String(\"AWS_IAM\"),\n\t\t\tSchema: pulumi.String(` schema {\n mutation: Mutation\n query: Query\n }\n\n type Query {\n testQuery: String\n }\n\n type Mutation {\n testMutation(input: MutationInput!): TestMutationResult\n }\n\n type TestMutationResult {\n test: String\n }\n\n input MutationInput {\n testInput: String\n }\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewEventTarget(ctx, \"invoke_appsync_mutation\", \u0026cloudwatch.EventTargetArgs{\n\t\t\tArn: pulumi.String(std.ReplaceOutput(ctx, std.ReplaceOutputArgs{\n\t\t\t\tText: graphql_api.Arn,\n\t\t\t\tSearch: pulumi.String(\"apis\"),\n\t\t\t\tReplace: pulumi.String(\"endpoints/graphql-api\"),\n\t\t\t}, nil).ApplyT(func(invoke std.ReplaceResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tRule: invokeAppsyncMutation.ID(),\n\t\t\tRoleArn: appsyncMutationRole.Arn,\n\t\t\tInputTransformer: \u0026cloudwatch.EventTargetInputTransformerArgs{\n\t\t\t\tInputPaths: pulumi.StringMap{\n\t\t\t\t\t\"input\": pulumi.String(\"$.detail.input\"),\n\t\t\t\t},\n\t\t\t\tInputTemplate: pulumi.String(\" {\\n \\\"input\\\": \u003cinput\u003e\\n }\\n\"),\n\t\t\t},\n\t\t\tAppsyncTarget: \u0026cloudwatch.EventTargetAppsyncTargetArgs{\n\t\t\t\tGraphqlOperation: pulumi.String(\"mutation TestMutation($input:MutationInput!){testMutation(input: $input) {test}}\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappsyncMutationRolePolicyDocument := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{\n\t\t\tStatements: iam.GetPolicyDocumentStatementArray{\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"appsync:GraphQL\"),\n\t\t\t\t\t},\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\tgraphql_api.Arn,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tappsyncMutationRolePolicy, err := iam.NewPolicy(ctx, \"appsync_mutation_role_policy\", \u0026iam.PolicyArgs{\n\t\t\tName: pulumi.String(\"appsync-mutation-role-policy\"),\n\t\t\tPolicy: pulumi.String(appsyncMutationRolePolicyDocument.ApplyT(func(appsyncMutationRolePolicyDocument iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026appsyncMutationRolePolicyDocument.Json, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewRolePolicyAttachment(ctx, \"appsync_mutation_role_attachment\", \u0026iam.RolePolicyAttachmentArgs{\n\t\t\tPolicyArn: appsyncMutationRolePolicy.Arn,\n\t\t\tRole: appsyncMutationRole.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.EventRule;\nimport com.pulumi.aws.cloudwatch.EventRuleArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport com.pulumi.aws.cloudwatch.EventTarget;\nimport com.pulumi.aws.cloudwatch.EventTargetArgs;\nimport com.pulumi.aws.cloudwatch.inputs.EventTargetInputTransformerArgs;\nimport com.pulumi.aws.cloudwatch.inputs.EventTargetAppsyncTargetArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.ReplaceArgs;\nimport com.pulumi.aws.iam.Policy;\nimport com.pulumi.aws.iam.PolicyArgs;\nimport com.pulumi.aws.iam.RolePolicyAttachment;\nimport com.pulumi.aws.iam.RolePolicyAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var invokeAppsyncMutation = new EventRule(\"invokeAppsyncMutation\", EventRuleArgs.builder()\n .name(\"invoke-appsync-mutation\")\n .description(\"schedule_batch_test\")\n .scheduleExpression(\"rate(5 minutes)\")\n .build());\n\n final var appsyncMutationRoleTrust = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .actions(\"sts:AssumeRole\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"events.amazonaws.com\")\n .build())\n .build())\n .build());\n\n var appsyncMutationRole = new Role(\"appsyncMutationRole\", RoleArgs.builder()\n .name(\"appsync-mutation-role\")\n .assumeRolePolicy(appsyncMutationRoleTrust.json())\n .build());\n\n var graphql_api = new GraphQLApi(\"graphql-api\", GraphQLApiArgs.builder()\n .name(\"api\")\n .authenticationType(\"AWS_IAM\")\n .schema(\"\"\"\n schema {\n mutation: Mutation\n query: Query\n }\n\n type Query {\n testQuery: String\n }\n\n type Mutation {\n testMutation(input: MutationInput!): TestMutationResult\n }\n\n type TestMutationResult {\n test: String\n }\n\n input MutationInput {\n testInput: String\n }\n \"\"\")\n .build());\n\n var invokeAppsyncMutationEventTarget = new EventTarget(\"invokeAppsyncMutationEventTarget\", EventTargetArgs.builder()\n .arn(StdFunctions.replace(ReplaceArgs.builder()\n .text(graphql_api.arn())\n .search(\"apis\")\n .replace(\"endpoints/graphql-api\")\n .build()).applyValue(_invoke -\u003e _invoke.result()))\n .rule(invokeAppsyncMutation.id())\n .roleArn(appsyncMutationRole.arn())\n .inputTransformer(EventTargetInputTransformerArgs.builder()\n .inputPaths(Map.of(\"input\", \"$.detail.input\"))\n .inputTemplate(\"\"\"\n {\n \"input\": \u003cinput\u003e\n }\n \"\"\")\n .build())\n .appsyncTarget(EventTargetAppsyncTargetArgs.builder()\n .graphqlOperation(\"mutation TestMutation($input:MutationInput!){testMutation(input: $input) {test}}\")\n .build())\n .build());\n\n final var appsyncMutationRolePolicyDocument = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .actions(\"appsync:GraphQL\")\n .effect(\"Allow\")\n .resources(graphql_api.arn())\n .build())\n .build());\n\n var appsyncMutationRolePolicy = new Policy(\"appsyncMutationRolePolicy\", PolicyArgs.builder()\n .name(\"appsync-mutation-role-policy\")\n .policy(appsyncMutationRolePolicyDocument.applyValue(_appsyncMutationRolePolicyDocument -\u003e _appsyncMutationRolePolicyDocument.json()))\n .build());\n\n var appsyncMutationRoleAttachment = new RolePolicyAttachment(\"appsyncMutationRoleAttachment\", RolePolicyAttachmentArgs.builder()\n .policyArn(appsyncMutationRolePolicy.arn())\n .role(appsyncMutationRole.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n invokeAppsyncMutation:\n type: aws:cloudwatch:EventRule\n name: invoke_appsync_mutation\n properties:\n name: invoke-appsync-mutation\n description: schedule_batch_test\n scheduleExpression: rate(5 minutes)\n invokeAppsyncMutationEventTarget:\n type: aws:cloudwatch:EventTarget\n name: invoke_appsync_mutation\n properties:\n arn:\n fn::invoke:\n function: std:replace\n arguments:\n text: ${[\"graphql-api\"].arn}\n search: apis\n replace: endpoints/graphql-api\n return: result\n rule: ${invokeAppsyncMutation.id}\n roleArn: ${appsyncMutationRole.arn}\n inputTransformer:\n inputPaths:\n input: $.detail.input\n inputTemplate: |2\n {\n \"input\": \u003cinput\u003e\n }\n appsyncTarget:\n graphqlOperation: 'mutation TestMutation($input:MutationInput!){testMutation(input: $input) {test}}'\n appsyncMutationRole:\n type: aws:iam:Role\n name: appsync_mutation_role\n properties:\n name: appsync-mutation-role\n assumeRolePolicy: ${appsyncMutationRoleTrust.json}\n appsyncMutationRolePolicy:\n type: aws:iam:Policy\n name: appsync_mutation_role_policy\n properties:\n name: appsync-mutation-role-policy\n policy: ${appsyncMutationRolePolicyDocument.json}\n appsyncMutationRoleAttachment:\n type: aws:iam:RolePolicyAttachment\n name: appsync_mutation_role_attachment\n properties:\n policyArn: ${appsyncMutationRolePolicy.arn}\n role: ${appsyncMutationRole.name}\n graphql-api:\n type: aws:appsync:GraphQLApi\n properties:\n name: api\n authenticationType: AWS_IAM\n schema: |2\n schema {\n mutation: Mutation\n query: Query\n }\n\n type Query {\n testQuery: String\n }\n\n type Mutation {\n testMutation(input: MutationInput!): TestMutationResult\n }\n\n type TestMutationResult {\n test: String\n }\n\n input MutationInput {\n testInput: String\n }\nvariables:\n appsyncMutationRoleTrust:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - actions:\n - sts:AssumeRole\n principals:\n - type: Service\n identifiers:\n - events.amazonaws.com\n appsyncMutationRolePolicyDocument:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - actions:\n - appsync:GraphQL\n effect: Allow\n resources:\n - ${[\"graphql-api\"].arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n* `event_bus_name` (String) Event bus name for the target.\n\n* `rule` (String) Rule name for the target.\n\n* `target_id` (String) Target ID.\n\n#### Optional\n\n* `account_id` (String) AWS Account where this resource is managed.\n\n* `region` (String) Region where this resource is managed.\n\nUsing `pulumi import`, import EventBridge Targets using `event_bus_name/rule-name/target-id` (if you omit `event_bus_name`, the `default` event bus will be used). For example:\n\n console\n\n% pulumi import aws_cloudwatch_event_target.example rule-name/target-id\n\n", + "description": "Provides an EventBridge Target resource.\n\n\u003e **Note:** EventBridge was formerly known as CloudWatch Events. The functionality is identical.\n\n\u003e **Note:** In order to be able to have your AWS Lambda function or\n SNS topic invoked by an EventBridge rule, you must set up the right permissions\n using \u003cspan pulumi-lang-nodejs=\"`aws.lambda.Permission`\" pulumi-lang-dotnet=\"`aws.lambda.Permission`\" pulumi-lang-go=\"`lambda.Permission`\" pulumi-lang-python=\"`lambda.Permission`\" pulumi-lang-yaml=\"`aws.lambda.Permission`\" pulumi-lang-java=\"`aws.lambda.Permission`\"\u003e`aws.lambda.Permission`\u003c/span\u003e\n or \u003cspan pulumi-lang-nodejs=\"`aws.sns.TopicPolicy`\" pulumi-lang-dotnet=\"`aws.sns.TopicPolicy`\" pulumi-lang-go=\"`sns.TopicPolicy`\" pulumi-lang-python=\"`sns.TopicPolicy`\" pulumi-lang-yaml=\"`aws.sns.TopicPolicy`\" pulumi-lang-java=\"`aws.sns.TopicPolicy`\"\u003e`aws.sns.TopicPolicy`\u003c/span\u003e.\n More info [here](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-use-resource-based.html).\n\n## Example Usage\n\n### Kinesis Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst console = new aws.cloudwatch.EventRule(\"console\", {\n name: \"capture-ec2-scaling-events\",\n description: \"Capture all EC2 scaling events\",\n eventPattern: JSON.stringify({\n source: [\"aws.autoscaling\"],\n \"detail-type\": [\n \"EC2 Instance Launch Successful\",\n \"EC2 Instance Terminate Successful\",\n \"EC2 Instance Launch Unsuccessful\",\n \"EC2 Instance Terminate Unsuccessful\",\n ],\n }),\n});\nconst testStream = new aws.kinesis.Stream(\"test_stream\", {\n name: \"kinesis-test\",\n shardCount: 1,\n});\nconst yada = new aws.cloudwatch.EventTarget(\"yada\", {\n targetId: \"Yada\",\n rule: console.name,\n arn: testStream.arn,\n runCommandTargets: [\n {\n key: \"tag:Name\",\n values: [\"FooBar\"],\n },\n {\n key: \"InstanceIds\",\n values: [\"i-162058cd308bffec2\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nconsole = aws.cloudwatch.EventRule(\"console\",\n name=\"capture-ec2-scaling-events\",\n description=\"Capture all EC2 scaling events\",\n event_pattern=json.dumps({\n \"source\": [\"aws.autoscaling\"],\n \"detail-type\": [\n \"EC2 Instance Launch Successful\",\n \"EC2 Instance Terminate Successful\",\n \"EC2 Instance Launch Unsuccessful\",\n \"EC2 Instance Terminate Unsuccessful\",\n ],\n }))\ntest_stream = aws.kinesis.Stream(\"test_stream\",\n name=\"kinesis-test\",\n shard_count=1)\nyada = aws.cloudwatch.EventTarget(\"yada\",\n target_id=\"Yada\",\n rule=console.name,\n arn=test_stream.arn,\n run_command_targets=[\n {\n \"key\": \"tag:Name\",\n \"values\": [\"FooBar\"],\n },\n {\n \"key\": \"InstanceIds\",\n \"values\": [\"i-162058cd308bffec2\"],\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var console = new Aws.CloudWatch.EventRule(\"console\", new()\n {\n Name = \"capture-ec2-scaling-events\",\n Description = \"Capture all EC2 scaling events\",\n EventPattern = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"source\"] = new[]\n {\n \"aws.autoscaling\",\n },\n [\"detail-type\"] = new[]\n {\n \"EC2 Instance Launch Successful\",\n \"EC2 Instance Terminate Successful\",\n \"EC2 Instance Launch Unsuccessful\",\n \"EC2 Instance Terminate Unsuccessful\",\n },\n }),\n });\n\n var testStream = new Aws.Kinesis.Stream(\"test_stream\", new()\n {\n Name = \"kinesis-test\",\n ShardCount = 1,\n });\n\n var yada = new Aws.CloudWatch.EventTarget(\"yada\", new()\n {\n TargetId = \"Yada\",\n Rule = console.Name,\n Arn = testStream.Arn,\n RunCommandTargets = new[]\n {\n new Aws.CloudWatch.Inputs.EventTargetRunCommandTargetArgs\n {\n Key = \"tag:Name\",\n Values = new[]\n {\n \"FooBar\",\n },\n },\n new Aws.CloudWatch.Inputs.EventTargetRunCommandTargetArgs\n {\n Key = \"InstanceIds\",\n Values = new[]\n {\n \"i-162058cd308bffec2\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"source\": []string{\n\t\t\t\t\"aws.autoscaling\",\n\t\t\t},\n\t\t\t\"detail-type\": []string{\n\t\t\t\t\"EC2 Instance Launch Successful\",\n\t\t\t\t\"EC2 Instance Terminate Successful\",\n\t\t\t\t\"EC2 Instance Launch Unsuccessful\",\n\t\t\t\t\"EC2 Instance Terminate Unsuccessful\",\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\tconsole, err := cloudwatch.NewEventRule(ctx, \"console\", \u0026cloudwatch.EventRuleArgs{\n\t\t\tName: pulumi.String(\"capture-ec2-scaling-events\"),\n\t\t\tDescription: pulumi.String(\"Capture all EC2 scaling events\"),\n\t\t\tEventPattern: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestStream, err := kinesis.NewStream(ctx, \"test_stream\", \u0026kinesis.StreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-test\"),\n\t\t\tShardCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewEventTarget(ctx, \"yada\", \u0026cloudwatch.EventTargetArgs{\n\t\t\tTargetId: pulumi.String(\"Yada\"),\n\t\t\tRule: console.Name,\n\t\t\tArn: testStream.Arn,\n\t\t\tRunCommandTargets: cloudwatch.EventTargetRunCommandTargetArray{\n\t\t\t\t\u0026cloudwatch.EventTargetRunCommandTargetArgs{\n\t\t\t\t\tKey: pulumi.String(\"tag:Name\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"FooBar\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026cloudwatch.EventTargetRunCommandTargetArgs{\n\t\t\t\t\tKey: pulumi.String(\"InstanceIds\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"i-162058cd308bffec2\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.EventRule;\nimport com.pulumi.aws.cloudwatch.EventRuleArgs;\nimport com.pulumi.aws.kinesis.Stream;\nimport com.pulumi.aws.kinesis.StreamArgs;\nimport com.pulumi.aws.cloudwatch.EventTarget;\nimport com.pulumi.aws.cloudwatch.EventTargetArgs;\nimport com.pulumi.aws.cloudwatch.inputs.EventTargetRunCommandTargetArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var console = new EventRule(\"console\", EventRuleArgs.builder()\n .name(\"capture-ec2-scaling-events\")\n .description(\"Capture all EC2 scaling events\")\n .eventPattern(serializeJson(\n jsonObject(\n jsonProperty(\"source\", jsonArray(\"aws.autoscaling\")),\n jsonProperty(\"detail-type\", jsonArray(\n \"EC2 Instance Launch Successful\", \n \"EC2 Instance Terminate Successful\", \n \"EC2 Instance Launch Unsuccessful\", \n \"EC2 Instance Terminate Unsuccessful\"\n ))\n )))\n .build());\n\n var testStream = new Stream(\"testStream\", StreamArgs.builder()\n .name(\"kinesis-test\")\n .shardCount(1)\n .build());\n\n var yada = new EventTarget(\"yada\", EventTargetArgs.builder()\n .targetId(\"Yada\")\n .rule(console.name())\n .arn(testStream.arn())\n .runCommandTargets( \n EventTargetRunCommandTargetArgs.builder()\n .key(\"tag:Name\")\n .values(\"FooBar\")\n .build(),\n EventTargetRunCommandTargetArgs.builder()\n .key(\"InstanceIds\")\n .values(\"i-162058cd308bffec2\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n yada:\n type: aws:cloudwatch:EventTarget\n properties:\n targetId: Yada\n rule: ${console.name}\n arn: ${testStream.arn}\n runCommandTargets:\n - key: tag:Name\n values:\n - FooBar\n - key: InstanceIds\n values:\n - i-162058cd308bffec2\n console:\n type: aws:cloudwatch:EventRule\n properties:\n name: capture-ec2-scaling-events\n description: Capture all EC2 scaling events\n eventPattern:\n fn::toJSON:\n source:\n - aws.autoscaling\n detail-type:\n - EC2 Instance Launch Successful\n - EC2 Instance Terminate Successful\n - EC2 Instance Launch Unsuccessful\n - EC2 Instance Terminate Unsuccessful\n testStream:\n type: aws:kinesis:Stream\n name: test_stream\n properties:\n name: kinesis-test\n shardCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### SSM Document Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst ssmLifecycleTrust = aws.iam.getPolicyDocument({\n statements: [{\n actions: [\"sts:AssumeRole\"],\n principals: [{\n type: \"Service\",\n identifiers: [\"events.amazonaws.com\"],\n }],\n }],\n});\nconst stopInstance = new aws.ssm.Document(\"stop_instance\", {\n name: \"stop_instance\",\n documentType: \"Command\",\n content: JSON.stringify({\n schemaVersion: \"1.2\",\n description: \"Stop an instance\",\n parameters: {},\n runtimeConfig: {\n \"aws:runShellScript\": {\n properties: [{\n id: \"0.aws:runShellScript\",\n runCommand: [\"halt\"],\n }],\n },\n },\n }),\n});\nconst ssmLifecycle = aws.iam.getPolicyDocumentOutput({\n statements: [\n {\n effect: \"Allow\",\n actions: [\"ssm:SendCommand\"],\n resources: [\"arn:aws:ec2:eu-west-1:1234567890:instance/*\"],\n conditions: [{\n test: \"StringEquals\",\n variable: \"ec2:ResourceTag/Terminate\",\n values: [\"*\"],\n }],\n },\n {\n effect: \"Allow\",\n actions: [\"ssm:SendCommand\"],\n resources: [stopInstance.arn],\n },\n ],\n});\nconst ssmLifecycleRole = new aws.iam.Role(\"ssm_lifecycle\", {\n name: \"SSMLifecycle\",\n assumeRolePolicy: ssmLifecycleTrust.then(ssmLifecycleTrust =\u003e ssmLifecycleTrust.json),\n});\nconst ssmLifecyclePolicy = new aws.iam.Policy(\"ssm_lifecycle\", {\n name: \"SSMLifecycle\",\n policy: ssmLifecycle.apply(ssmLifecycle =\u003e ssmLifecycle.json),\n});\nconst ssmLifecycleRolePolicyAttachment = new aws.iam.RolePolicyAttachment(\"ssm_lifecycle\", {\n policyArn: ssmLifecyclePolicy.arn,\n role: ssmLifecycleRole.name,\n});\nconst stopInstances = new aws.cloudwatch.EventRule(\"stop_instances\", {\n name: \"StopInstance\",\n description: \"Stop instances nightly\",\n scheduleExpression: \"cron(0 0 * * ? *)\",\n});\nconst stopInstancesEventTarget = new aws.cloudwatch.EventTarget(\"stop_instances\", {\n targetId: \"StopInstance\",\n arn: stopInstance.arn,\n rule: stopInstances.name,\n roleArn: ssmLifecycleRole.arn,\n runCommandTargets: [{\n key: \"tag:Terminate\",\n values: [\"midnight\"],\n }],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nssm_lifecycle_trust = aws.iam.get_policy_document(statements=[{\n \"actions\": [\"sts:AssumeRole\"],\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"events.amazonaws.com\"],\n }],\n}])\nstop_instance = aws.ssm.Document(\"stop_instance\",\n name=\"stop_instance\",\n document_type=\"Command\",\n content=json.dumps({\n \"schemaVersion\": \"1.2\",\n \"description\": \"Stop an instance\",\n \"parameters\": {},\n \"runtimeConfig\": {\n \"aws:runShellScript\": {\n \"properties\": [{\n \"id\": \"0.aws:runShellScript\",\n \"runCommand\": [\"halt\"],\n }],\n },\n },\n }))\nssm_lifecycle = aws.iam.get_policy_document_output(statements=[\n {\n \"effect\": \"Allow\",\n \"actions\": [\"ssm:SendCommand\"],\n \"resources\": [\"arn:aws:ec2:eu-west-1:1234567890:instance/*\"],\n \"conditions\": [{\n \"test\": \"StringEquals\",\n \"variable\": \"ec2:ResourceTag/Terminate\",\n \"values\": [\"*\"],\n }],\n },\n {\n \"effect\": \"Allow\",\n \"actions\": [\"ssm:SendCommand\"],\n \"resources\": [stop_instance.arn],\n },\n])\nssm_lifecycle_role = aws.iam.Role(\"ssm_lifecycle\",\n name=\"SSMLifecycle\",\n assume_role_policy=ssm_lifecycle_trust.json)\nssm_lifecycle_policy = aws.iam.Policy(\"ssm_lifecycle\",\n name=\"SSMLifecycle\",\n policy=ssm_lifecycle.json)\nssm_lifecycle_role_policy_attachment = aws.iam.RolePolicyAttachment(\"ssm_lifecycle\",\n policy_arn=ssm_lifecycle_policy.arn,\n role=ssm_lifecycle_role.name)\nstop_instances = aws.cloudwatch.EventRule(\"stop_instances\",\n name=\"StopInstance\",\n description=\"Stop instances nightly\",\n schedule_expression=\"cron(0 0 * * ? *)\")\nstop_instances_event_target = aws.cloudwatch.EventTarget(\"stop_instances\",\n target_id=\"StopInstance\",\n arn=stop_instance.arn,\n rule=stop_instances.name,\n role_arn=ssm_lifecycle_role.arn,\n run_command_targets=[{\n \"key\": \"tag:Terminate\",\n \"values\": [\"midnight\"],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ssmLifecycleTrust = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"events.amazonaws.com\",\n },\n },\n },\n },\n },\n });\n\n var stopInstance = new Aws.Ssm.Document(\"stop_instance\", new()\n {\n Name = \"stop_instance\",\n DocumentType = \"Command\",\n Content = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"schemaVersion\"] = \"1.2\",\n [\"description\"] = \"Stop an instance\",\n [\"parameters\"] = new Dictionary\u003cstring, object?\u003e\n {\n },\n [\"runtimeConfig\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"aws:runShellScript\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"properties\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"id\"] = \"0.aws:runShellScript\",\n [\"runCommand\"] = new[]\n {\n \"halt\",\n },\n },\n },\n },\n },\n }),\n });\n\n var ssmLifecycle = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"ssm:SendCommand\",\n },\n Resources = new[]\n {\n \"arn:aws:ec2:eu-west-1:1234567890:instance/*\",\n },\n Conditions = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementConditionInputArgs\n {\n Test = \"StringEquals\",\n Variable = \"ec2:ResourceTag/Terminate\",\n Values = new[]\n {\n \"*\",\n },\n },\n },\n },\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"ssm:SendCommand\",\n },\n Resources = new[]\n {\n stopInstance.Arn,\n },\n },\n },\n });\n\n var ssmLifecycleRole = new Aws.Iam.Role(\"ssm_lifecycle\", new()\n {\n Name = \"SSMLifecycle\",\n AssumeRolePolicy = ssmLifecycleTrust.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var ssmLifecyclePolicy = new Aws.Iam.Policy(\"ssm_lifecycle\", new()\n {\n Name = \"SSMLifecycle\",\n PolicyDocument = ssmLifecycle.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var ssmLifecycleRolePolicyAttachment = new Aws.Iam.RolePolicyAttachment(\"ssm_lifecycle\", new()\n {\n PolicyArn = ssmLifecyclePolicy.Arn,\n Role = ssmLifecycleRole.Name,\n });\n\n var stopInstances = new Aws.CloudWatch.EventRule(\"stop_instances\", new()\n {\n Name = \"StopInstance\",\n Description = \"Stop instances nightly\",\n ScheduleExpression = \"cron(0 0 * * ? *)\",\n });\n\n var stopInstancesEventTarget = new Aws.CloudWatch.EventTarget(\"stop_instances\", new()\n {\n TargetId = \"StopInstance\",\n Arn = stopInstance.Arn,\n Rule = stopInstances.Name,\n RoleArn = ssmLifecycleRole.Arn,\n RunCommandTargets = new[]\n {\n new Aws.CloudWatch.Inputs.EventTargetRunCommandTargetArgs\n {\n Key = \"tag:Terminate\",\n Values = new[]\n {\n \"midnight\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tssmLifecycleTrust, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"events.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"schemaVersion\": \"1.2\",\n\t\t\t\"description\": \"Stop an instance\",\n\t\t\t\"parameters\": map[string]interface{}{},\n\t\t\t\"runtimeConfig\": map[string]interface{}{\n\t\t\t\t\"aws:runShellScript\": map[string]interface{}{\n\t\t\t\t\t\"properties\": []map[string]interface{}{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"id\": \"0.aws:runShellScript\",\n\t\t\t\t\t\t\t\"runCommand\": []string{\n\t\t\t\t\t\t\t\t\"halt\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\tstopInstance, err := ssm.NewDocument(ctx, \"stop_instance\", \u0026ssm.DocumentArgs{\n\t\t\tName: pulumi.String(\"stop_instance\"),\n\t\t\tDocumentType: pulumi.String(\"Command\"),\n\t\t\tContent: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tssmLifecycle := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{\n\t\t\tStatements: iam.GetPolicyDocumentStatementArray{\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ssm:SendCommand\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"arn:aws:ec2:eu-west-1:1234567890:instance/*\"),\n\t\t\t\t\t},\n\t\t\t\t\tConditions: iam.GetPolicyDocumentStatementConditionArray{\n\t\t\t\t\t\t\u0026iam.GetPolicyDocumentStatementConditionArgs{\n\t\t\t\t\t\t\tTest: pulumi.String(\"StringEquals\"),\n\t\t\t\t\t\t\tVariable: pulumi.String(\"ec2:ResourceTag/Terminate\"),\n\t\t\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ssm:SendCommand\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\tstopInstance.Arn,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tssmLifecycleRole, err := iam.NewRole(ctx, \"ssm_lifecycle\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"SSMLifecycle\"),\n\t\t\tAssumeRolePolicy: pulumi.String(ssmLifecycleTrust.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tssmLifecyclePolicy, err := iam.NewPolicy(ctx, \"ssm_lifecycle\", \u0026iam.PolicyArgs{\n\t\t\tName: pulumi.String(\"SSMLifecycle\"),\n\t\t\tPolicy: pulumi.String(ssmLifecycle.ApplyT(func(ssmLifecycle iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026ssmLifecycle.Json, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewRolePolicyAttachment(ctx, \"ssm_lifecycle\", \u0026iam.RolePolicyAttachmentArgs{\n\t\t\tPolicyArn: ssmLifecyclePolicy.Arn,\n\t\t\tRole: ssmLifecycleRole.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstopInstances, err := cloudwatch.NewEventRule(ctx, \"stop_instances\", \u0026cloudwatch.EventRuleArgs{\n\t\t\tName: pulumi.String(\"StopInstance\"),\n\t\t\tDescription: pulumi.String(\"Stop instances nightly\"),\n\t\t\tScheduleExpression: pulumi.String(\"cron(0 0 * * ? *)\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewEventTarget(ctx, \"stop_instances\", \u0026cloudwatch.EventTargetArgs{\n\t\t\tTargetId: pulumi.String(\"StopInstance\"),\n\t\t\tArn: stopInstance.Arn,\n\t\t\tRule: stopInstances.Name,\n\t\t\tRoleArn: ssmLifecycleRole.Arn,\n\t\t\tRunCommandTargets: cloudwatch.EventTargetRunCommandTargetArray{\n\t\t\t\t\u0026cloudwatch.EventTargetRunCommandTargetArgs{\n\t\t\t\t\tKey: pulumi.String(\"tag:Terminate\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"midnight\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.ssm.Document;\nimport com.pulumi.aws.ssm.DocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.iam.Policy;\nimport com.pulumi.aws.iam.PolicyArgs;\nimport com.pulumi.aws.iam.RolePolicyAttachment;\nimport com.pulumi.aws.iam.RolePolicyAttachmentArgs;\nimport com.pulumi.aws.cloudwatch.EventRule;\nimport com.pulumi.aws.cloudwatch.EventRuleArgs;\nimport com.pulumi.aws.cloudwatch.EventTarget;\nimport com.pulumi.aws.cloudwatch.EventTargetArgs;\nimport com.pulumi.aws.cloudwatch.inputs.EventTargetRunCommandTargetArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var ssmLifecycleTrust = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .actions(\"sts:AssumeRole\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"events.amazonaws.com\")\n .build())\n .build())\n .build());\n\n var stopInstance = new Document(\"stopInstance\", DocumentArgs.builder()\n .name(\"stop_instance\")\n .documentType(\"Command\")\n .content(serializeJson(\n jsonObject(\n jsonProperty(\"schemaVersion\", \"1.2\"),\n jsonProperty(\"description\", \"Stop an instance\"),\n jsonProperty(\"parameters\", jsonObject(\n\n )),\n jsonProperty(\"runtimeConfig\", jsonObject(\n jsonProperty(\"aws:runShellScript\", jsonObject(\n jsonProperty(\"properties\", jsonArray(jsonObject(\n jsonProperty(\"id\", \"0.aws:runShellScript\"),\n jsonProperty(\"runCommand\", jsonArray(\"halt\"))\n )))\n ))\n ))\n )))\n .build());\n\n final var ssmLifecycle = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements( \n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"ssm:SendCommand\")\n .resources(\"arn:aws:ec2:eu-west-1:1234567890:instance/*\")\n .conditions(GetPolicyDocumentStatementConditionArgs.builder()\n .test(\"StringEquals\")\n .variable(\"ec2:ResourceTag/Terminate\")\n .values(\"*\")\n .build())\n .build(),\n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"ssm:SendCommand\")\n .resources(stopInstance.arn())\n .build())\n .build());\n\n var ssmLifecycleRole = new Role(\"ssmLifecycleRole\", RoleArgs.builder()\n .name(\"SSMLifecycle\")\n .assumeRolePolicy(ssmLifecycleTrust.json())\n .build());\n\n var ssmLifecyclePolicy = new Policy(\"ssmLifecyclePolicy\", PolicyArgs.builder()\n .name(\"SSMLifecycle\")\n .policy(ssmLifecycle.applyValue(_ssmLifecycle -\u003e _ssmLifecycle.json()))\n .build());\n\n var ssmLifecycleRolePolicyAttachment = new RolePolicyAttachment(\"ssmLifecycleRolePolicyAttachment\", RolePolicyAttachmentArgs.builder()\n .policyArn(ssmLifecyclePolicy.arn())\n .role(ssmLifecycleRole.name())\n .build());\n\n var stopInstances = new EventRule(\"stopInstances\", EventRuleArgs.builder()\n .name(\"StopInstance\")\n .description(\"Stop instances nightly\")\n .scheduleExpression(\"cron(0 0 * * ? *)\")\n .build());\n\n var stopInstancesEventTarget = new EventTarget(\"stopInstancesEventTarget\", EventTargetArgs.builder()\n .targetId(\"StopInstance\")\n .arn(stopInstance.arn())\n .rule(stopInstances.name())\n .roleArn(ssmLifecycleRole.arn())\n .runCommandTargets(EventTargetRunCommandTargetArgs.builder()\n .key(\"tag:Terminate\")\n .values(\"midnight\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ssmLifecycleRole:\n type: aws:iam:Role\n name: ssm_lifecycle\n properties:\n name: SSMLifecycle\n assumeRolePolicy: ${ssmLifecycleTrust.json}\n ssmLifecyclePolicy:\n type: aws:iam:Policy\n name: ssm_lifecycle\n properties:\n name: SSMLifecycle\n policy: ${ssmLifecycle.json}\n ssmLifecycleRolePolicyAttachment:\n type: aws:iam:RolePolicyAttachment\n name: ssm_lifecycle\n properties:\n policyArn: ${ssmLifecyclePolicy.arn}\n role: ${ssmLifecycleRole.name}\n stopInstance:\n type: aws:ssm:Document\n name: stop_instance\n properties:\n name: stop_instance\n documentType: Command\n content:\n fn::toJSON:\n schemaVersion: '1.2'\n description: Stop an instance\n parameters: {}\n runtimeConfig:\n aws:runShellScript:\n properties:\n - id: 0.aws:runShellScript\n runCommand:\n - halt\n stopInstances:\n type: aws:cloudwatch:EventRule\n name: stop_instances\n properties:\n name: StopInstance\n description: Stop instances nightly\n scheduleExpression: cron(0 0 * * ? *)\n stopInstancesEventTarget:\n type: aws:cloudwatch:EventTarget\n name: stop_instances\n properties:\n targetId: StopInstance\n arn: ${stopInstance.arn}\n rule: ${stopInstances.name}\n roleArn: ${ssmLifecycleRole.arn}\n runCommandTargets:\n - key: tag:Terminate\n values:\n - midnight\nvariables:\n ssmLifecycleTrust:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - actions:\n - sts:AssumeRole\n principals:\n - type: Service\n identifiers:\n - events.amazonaws.com\n ssmLifecycle:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n actions:\n - ssm:SendCommand\n resources:\n - arn:aws:ec2:eu-west-1:1234567890:instance/*\n conditions:\n - test: StringEquals\n variable: ec2:ResourceTag/Terminate\n values:\n - '*'\n - effect: Allow\n actions:\n - ssm:SendCommand\n resources:\n - ${stopInstance.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### RunCommand Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst stopInstances = new aws.cloudwatch.EventRule(\"stop_instances\", {\n name: \"StopInstance\",\n description: \"Stop instances nightly\",\n scheduleExpression: \"cron(0 0 * * ? *)\",\n});\nconst stopInstancesEventTarget = new aws.cloudwatch.EventTarget(\"stop_instances\", {\n targetId: \"StopInstance\",\n arn: `arn:aws:ssm:${awsRegion}::document/AWS-RunShellScript`,\n input: \"{\\\"commands\\\":[\\\"halt\\\"]}\",\n rule: stopInstances.name,\n roleArn: ssmLifecycle.arn,\n runCommandTargets: [{\n key: \"tag:Terminate\",\n values: [\"midnight\"],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nstop_instances = aws.cloudwatch.EventRule(\"stop_instances\",\n name=\"StopInstance\",\n description=\"Stop instances nightly\",\n schedule_expression=\"cron(0 0 * * ? *)\")\nstop_instances_event_target = aws.cloudwatch.EventTarget(\"stop_instances\",\n target_id=\"StopInstance\",\n arn=f\"arn:aws:ssm:{aws_region}::document/AWS-RunShellScript\",\n input=\"{\\\"commands\\\":[\\\"halt\\\"]}\",\n rule=stop_instances.name,\n role_arn=ssm_lifecycle[\"arn\"],\n run_command_targets=[{\n \"key\": \"tag:Terminate\",\n \"values\": [\"midnight\"],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var stopInstances = new Aws.CloudWatch.EventRule(\"stop_instances\", new()\n {\n Name = \"StopInstance\",\n Description = \"Stop instances nightly\",\n ScheduleExpression = \"cron(0 0 * * ? *)\",\n });\n\n var stopInstancesEventTarget = new Aws.CloudWatch.EventTarget(\"stop_instances\", new()\n {\n TargetId = \"StopInstance\",\n Arn = $\"arn:aws:ssm:{awsRegion}::document/AWS-RunShellScript\",\n Input = \"{\\\"commands\\\":[\\\"halt\\\"]}\",\n Rule = stopInstances.Name,\n RoleArn = ssmLifecycle.Arn,\n RunCommandTargets = new[]\n {\n new Aws.CloudWatch.Inputs.EventTargetRunCommandTargetArgs\n {\n Key = \"tag:Terminate\",\n Values = new[]\n {\n \"midnight\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tstopInstances, err := cloudwatch.NewEventRule(ctx, \"stop_instances\", \u0026cloudwatch.EventRuleArgs{\n\t\t\tName: pulumi.String(\"StopInstance\"),\n\t\t\tDescription: pulumi.String(\"Stop instances nightly\"),\n\t\t\tScheduleExpression: pulumi.String(\"cron(0 0 * * ? *)\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewEventTarget(ctx, \"stop_instances\", \u0026cloudwatch.EventTargetArgs{\n\t\t\tTargetId: pulumi.String(\"StopInstance\"),\n\t\t\tArn: pulumi.Sprintf(\"arn:aws:ssm:%v::document/AWS-RunShellScript\", awsRegion),\n\t\t\tInput: pulumi.String(\"{\\\"commands\\\":[\\\"halt\\\"]}\"),\n\t\t\tRule: stopInstances.Name,\n\t\t\tRoleArn: pulumi.Any(ssmLifecycle.Arn),\n\t\t\tRunCommandTargets: cloudwatch.EventTargetRunCommandTargetArray{\n\t\t\t\t\u0026cloudwatch.EventTargetRunCommandTargetArgs{\n\t\t\t\t\tKey: pulumi.String(\"tag:Terminate\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"midnight\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.EventRule;\nimport com.pulumi.aws.cloudwatch.EventRuleArgs;\nimport com.pulumi.aws.cloudwatch.EventTarget;\nimport com.pulumi.aws.cloudwatch.EventTargetArgs;\nimport com.pulumi.aws.cloudwatch.inputs.EventTargetRunCommandTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var stopInstances = new EventRule(\"stopInstances\", EventRuleArgs.builder()\n .name(\"StopInstance\")\n .description(\"Stop instances nightly\")\n .scheduleExpression(\"cron(0 0 * * ? *)\")\n .build());\n\n var stopInstancesEventTarget = new EventTarget(\"stopInstancesEventTarget\", EventTargetArgs.builder()\n .targetId(\"StopInstance\")\n .arn(String.format(\"arn:aws:ssm:%s::document/AWS-RunShellScript\", awsRegion))\n .input(\"{\\\"commands\\\":[\\\"halt\\\"]}\")\n .rule(stopInstances.name())\n .roleArn(ssmLifecycle.arn())\n .runCommandTargets(EventTargetRunCommandTargetArgs.builder()\n .key(\"tag:Terminate\")\n .values(\"midnight\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n stopInstances:\n type: aws:cloudwatch:EventRule\n name: stop_instances\n properties:\n name: StopInstance\n description: Stop instances nightly\n scheduleExpression: cron(0 0 * * ? *)\n stopInstancesEventTarget:\n type: aws:cloudwatch:EventTarget\n name: stop_instances\n properties:\n targetId: StopInstance\n arn: arn:aws:ssm:${awsRegion}::document/AWS-RunShellScript\n input: '{\"commands\":[\"halt\"]}'\n rule: ${stopInstances.name}\n roleArn: ${ssmLifecycle.arn}\n runCommandTargets:\n - key: tag:Terminate\n values:\n - midnight\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### ECS Run Task with Role and Task Override Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst assumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"events.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst ecsEvents = new aws.iam.Role(\"ecs_events\", {\n name: \"ecs_events\",\n assumeRolePolicy: assumeRole.then(assumeRole =\u003e assumeRole.json),\n});\nconst ecsEventsRunTaskWithAnyRole = std.replace({\n text: taskName.arn,\n search: \"/:\\\\d+$/\",\n replace: \":*\",\n}).then(invoke =\u003e aws.iam.getPolicyDocument({\n statements: [\n {\n effect: \"Allow\",\n actions: [\"iam:PassRole\"],\n resources: [\"*\"],\n },\n {\n effect: \"Allow\",\n actions: [\"ecs:RunTask\"],\n resources: [invoke.result],\n },\n ],\n}));\nconst ecsEventsRunTaskWithAnyRoleRolePolicy = new aws.iam.RolePolicy(\"ecs_events_run_task_with_any_role\", {\n name: \"ecs_events_run_task_with_any_role\",\n role: ecsEvents.id,\n policy: ecsEventsRunTaskWithAnyRole.then(ecsEventsRunTaskWithAnyRole =\u003e ecsEventsRunTaskWithAnyRole.json),\n});\nconst ecsScheduledTask = new aws.cloudwatch.EventTarget(\"ecs_scheduled_task\", {\n targetId: \"run-scheduled-task-every-hour\",\n arn: clusterName.arn,\n rule: everyHour.name,\n roleArn: ecsEvents.arn,\n ecsTarget: {\n taskCount: 1,\n taskDefinitionArn: taskName.arn,\n },\n input: JSON.stringify({\n containerOverrides: [{\n name: \"name-of-container-to-override\",\n command: [\n \"bin/console\",\n \"scheduled-task\",\n ],\n }],\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nassume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"events.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\necs_events = aws.iam.Role(\"ecs_events\",\n name=\"ecs_events\",\n assume_role_policy=assume_role.json)\necs_events_run_task_with_any_role = aws.iam.get_policy_document(statements=[\n {\n \"effect\": \"Allow\",\n \"actions\": [\"iam:PassRole\"],\n \"resources\": [\"*\"],\n },\n {\n \"effect\": \"Allow\",\n \"actions\": [\"ecs:RunTask\"],\n \"resources\": [std.replace(text=task_name[\"arn\"],\n search=\"/:\\\\d+$/\",\n replace=\":*\").result],\n },\n])\necs_events_run_task_with_any_role_role_policy = aws.iam.RolePolicy(\"ecs_events_run_task_with_any_role\",\n name=\"ecs_events_run_task_with_any_role\",\n role=ecs_events.id,\n policy=ecs_events_run_task_with_any_role.json)\necs_scheduled_task = aws.cloudwatch.EventTarget(\"ecs_scheduled_task\",\n target_id=\"run-scheduled-task-every-hour\",\n arn=cluster_name[\"arn\"],\n rule=every_hour[\"name\"],\n role_arn=ecs_events.arn,\n ecs_target={\n \"task_count\": 1,\n \"task_definition_arn\": task_name[\"arn\"],\n },\n input=json.dumps({\n \"containerOverrides\": [{\n \"name\": \"name-of-container-to-override\",\n \"command\": [\n \"bin/console\",\n \"scheduled-task\",\n ],\n }],\n }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var assumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"events.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var ecsEvents = new Aws.Iam.Role(\"ecs_events\", new()\n {\n Name = \"ecs_events\",\n AssumeRolePolicy = assumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var ecsEventsRunTaskWithAnyRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"iam:PassRole\",\n },\n Resources = new[]\n {\n \"*\",\n },\n },\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"ecs:RunTask\",\n },\n Resources = new[]\n {\n Std.Replace.Invoke(new()\n {\n Text = taskName.Arn,\n Search = \"/:\\\\d+$/\",\n Replace = \":*\",\n }).Result,\n },\n },\n },\n });\n\n var ecsEventsRunTaskWithAnyRoleRolePolicy = new Aws.Iam.RolePolicy(\"ecs_events_run_task_with_any_role\", new()\n {\n Name = \"ecs_events_run_task_with_any_role\",\n Role = ecsEvents.Id,\n Policy = ecsEventsRunTaskWithAnyRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var ecsScheduledTask = new Aws.CloudWatch.EventTarget(\"ecs_scheduled_task\", new()\n {\n TargetId = \"run-scheduled-task-every-hour\",\n Arn = clusterName.Arn,\n Rule = everyHour.Name,\n RoleArn = ecsEvents.Arn,\n EcsTarget = new Aws.CloudWatch.Inputs.EventTargetEcsTargetArgs\n {\n TaskCount = 1,\n TaskDefinitionArn = taskName.Arn,\n },\n Input = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"containerOverrides\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"name-of-container-to-override\",\n [\"command\"] = new[]\n {\n \"bin/console\",\n \"scheduled-task\",\n },\n },\n },\n }),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nassumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\nStatements: []iam.GetPolicyDocumentStatement{\n{\nEffect: pulumi.StringRef(\"Allow\"),\nPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n{\nType: \"Service\",\nIdentifiers: []string{\n\"events.amazonaws.com\",\n},\n},\n},\nActions: []string{\n\"sts:AssumeRole\",\n},\n},\n},\n}, nil);\nif err != nil {\nreturn err\n}\necsEvents, err := iam.NewRole(ctx, \"ecs_events\", \u0026iam.RoleArgs{\nName: pulumi.String(\"ecs_events\"),\nAssumeRolePolicy: pulumi.String(assumeRole.Json),\n})\nif err != nil {\nreturn err\n}\necsEventsRunTaskWithAnyRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\nStatements: []iam.GetPolicyDocumentStatement{\n{\nEffect: pulumi.StringRef(\"Allow\"),\nActions: []string{\n\"iam:PassRole\",\n},\nResources: []string{\n\"*\",\n},\n},\n{\nEffect: pulumi.StringRef(\"Allow\"),\nActions: []string{\n\"ecs:RunTask\",\n},\nResources: interface{}{\nstd.Replace(ctx, {\nText: taskName.Arn,\nSearch: \"/:\\\\d+$/\",\nReplace: \":*\",\n}, nil).Result,\n},\n},\n},\n}, nil);\nif err != nil {\nreturn err\n}\n_, err = iam.NewRolePolicy(ctx, \"ecs_events_run_task_with_any_role\", \u0026iam.RolePolicyArgs{\nName: pulumi.String(\"ecs_events_run_task_with_any_role\"),\nRole: ecsEvents.ID(),\nPolicy: pulumi.String(ecsEventsRunTaskWithAnyRole.Json),\n})\nif err != nil {\nreturn err\n}\ntmpJSON0, err := json.Marshal(map[string]interface{}{\n\"containerOverrides\": []map[string]interface{}{\nmap[string]interface{}{\n\"name\": \"name-of-container-to-override\",\n\"command\": []string{\n\"bin/console\",\n\"scheduled-task\",\n},\n},\n},\n})\nif err != nil {\nreturn err\n}\njson0 := string(tmpJSON0)\n_, err = cloudwatch.NewEventTarget(ctx, \"ecs_scheduled_task\", \u0026cloudwatch.EventTargetArgs{\nTargetId: pulumi.String(\"run-scheduled-task-every-hour\"),\nArn: pulumi.Any(clusterName.Arn),\nRule: pulumi.Any(everyHour.Name),\nRoleArn: ecsEvents.Arn,\nEcsTarget: \u0026cloudwatch.EventTargetEcsTargetArgs{\nTaskCount: pulumi.Int(1),\nTaskDefinitionArn: pulumi.Any(taskName.Arn),\n},\nInput: pulumi.String(json0),\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.ReplaceArgs;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport com.pulumi.aws.cloudwatch.EventTarget;\nimport com.pulumi.aws.cloudwatch.EventTargetArgs;\nimport com.pulumi.aws.cloudwatch.inputs.EventTargetEcsTargetArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"events.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var ecsEvents = new Role(\"ecsEvents\", RoleArgs.builder()\n .name(\"ecs_events\")\n .assumeRolePolicy(assumeRole.json())\n .build());\n\n final var ecsEventsRunTaskWithAnyRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements( \n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"iam:PassRole\")\n .resources(\"*\")\n .build(),\n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"ecs:RunTask\")\n .resources(StdFunctions.replace(ReplaceArgs.builder()\n .text(taskName.arn())\n .search(\"/:\\\\d+$/\")\n .replace(\":*\")\n .build()).result())\n .build())\n .build());\n\n var ecsEventsRunTaskWithAnyRoleRolePolicy = new RolePolicy(\"ecsEventsRunTaskWithAnyRoleRolePolicy\", RolePolicyArgs.builder()\n .name(\"ecs_events_run_task_with_any_role\")\n .role(ecsEvents.id())\n .policy(ecsEventsRunTaskWithAnyRole.json())\n .build());\n\n var ecsScheduledTask = new EventTarget(\"ecsScheduledTask\", EventTargetArgs.builder()\n .targetId(\"run-scheduled-task-every-hour\")\n .arn(clusterName.arn())\n .rule(everyHour.name())\n .roleArn(ecsEvents.arn())\n .ecsTarget(EventTargetEcsTargetArgs.builder()\n .taskCount(1)\n .taskDefinitionArn(taskName.arn())\n .build())\n .input(serializeJson(\n jsonObject(\n jsonProperty(\"containerOverrides\", jsonArray(jsonObject(\n jsonProperty(\"name\", \"name-of-container-to-override\"),\n jsonProperty(\"command\", jsonArray(\n \"bin/console\", \n \"scheduled-task\"\n ))\n )))\n )))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ecsEvents:\n type: aws:iam:Role\n name: ecs_events\n properties:\n name: ecs_events\n assumeRolePolicy: ${assumeRole.json}\n ecsEventsRunTaskWithAnyRoleRolePolicy:\n type: aws:iam:RolePolicy\n name: ecs_events_run_task_with_any_role\n properties:\n name: ecs_events_run_task_with_any_role\n role: ${ecsEvents.id}\n policy: ${ecsEventsRunTaskWithAnyRole.json}\n ecsScheduledTask:\n type: aws:cloudwatch:EventTarget\n name: ecs_scheduled_task\n properties:\n targetId: run-scheduled-task-every-hour\n arn: ${clusterName.arn}\n rule: ${everyHour.name}\n roleArn: ${ecsEvents.arn}\n ecsTarget:\n taskCount: 1\n taskDefinitionArn: ${taskName.arn}\n input:\n fn::toJSON:\n containerOverrides:\n - name: name-of-container-to-override\n command:\n - bin/console\n - scheduled-task\nvariables:\n assumeRole:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - events.amazonaws.com\n actions:\n - sts:AssumeRole\n ecsEventsRunTaskWithAnyRole:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n actions:\n - iam:PassRole\n resources:\n - '*'\n - effect: Allow\n actions:\n - ecs:RunTask\n resources:\n - fn::invoke:\n function: std:replace\n arguments:\n text: ${taskName.arn}\n search: /:\\d+$/\n replace: :*\n return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### API Gateway target\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleEventRule = new aws.cloudwatch.EventRule(\"example\", {});\nconst exampleDeployment = new aws.apigateway.Deployment(\"example\", {restApi: exampleAwsApiGatewayRestApi.id});\nconst exampleStage = new aws.apigateway.Stage(\"example\", {\n restApi: exampleAwsApiGatewayRestApi.id,\n deployment: exampleDeployment.id,\n});\nconst example = new aws.cloudwatch.EventTarget(\"example\", {\n arn: pulumi.interpolate`${exampleStage.executionArn}/GET`,\n rule: exampleEventRule.id,\n httpTarget: {\n queryStringParameters: {\n Body: \"$.detail.body\",\n },\n headerParameters: {\n Env: \"Test\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_event_rule = aws.cloudwatch.EventRule(\"example\")\nexample_deployment = aws.apigateway.Deployment(\"example\", rest_api=example_aws_api_gateway_rest_api[\"id\"])\nexample_stage = aws.apigateway.Stage(\"example\",\n rest_api=example_aws_api_gateway_rest_api[\"id\"],\n deployment=example_deployment.id)\nexample = aws.cloudwatch.EventTarget(\"example\",\n arn=example_stage.execution_arn.apply(lambda execution_arn: f\"{execution_arn}/GET\"),\n rule=example_event_rule.id,\n http_target={\n \"query_string_parameters\": {\n \"Body\": \"$.detail.body\",\n },\n \"header_parameters\": {\n \"Env\": \"Test\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleEventRule = new Aws.CloudWatch.EventRule(\"example\");\n\n var exampleDeployment = new Aws.ApiGateway.Deployment(\"example\", new()\n {\n RestApi = exampleAwsApiGatewayRestApi.Id,\n });\n\n var exampleStage = new Aws.ApiGateway.Stage(\"example\", new()\n {\n RestApi = exampleAwsApiGatewayRestApi.Id,\n Deployment = exampleDeployment.Id,\n });\n\n var example = new Aws.CloudWatch.EventTarget(\"example\", new()\n {\n Arn = exampleStage.ExecutionArn.Apply(executionArn =\u003e $\"{executionArn}/GET\"),\n Rule = exampleEventRule.Id,\n HttpTarget = new Aws.CloudWatch.Inputs.EventTargetHttpTargetArgs\n {\n QueryStringParameters = \n {\n { \"Body\", \"$.detail.body\" },\n },\n HeaderParameters = \n {\n { \"Env\", \"Test\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/apigateway\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleEventRule, err := cloudwatch.NewEventRule(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDeployment, err := apigateway.NewDeployment(ctx, \"example\", \u0026apigateway.DeploymentArgs{\n\t\t\tRestApi: pulumi.Any(exampleAwsApiGatewayRestApi.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleStage, err := apigateway.NewStage(ctx, \"example\", \u0026apigateway.StageArgs{\n\t\t\tRestApi: pulumi.Any(exampleAwsApiGatewayRestApi.Id),\n\t\t\tDeployment: exampleDeployment.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewEventTarget(ctx, \"example\", \u0026cloudwatch.EventTargetArgs{\n\t\t\tArn: exampleStage.ExecutionArn.ApplyT(func(executionArn string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v/GET\", executionArn), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tRule: exampleEventRule.ID(),\n\t\t\tHttpTarget: \u0026cloudwatch.EventTargetHttpTargetArgs{\n\t\t\t\tQueryStringParameters: pulumi.StringMap{\n\t\t\t\t\t\"Body\": pulumi.String(\"$.detail.body\"),\n\t\t\t\t},\n\t\t\t\tHeaderParameters: pulumi.StringMap{\n\t\t\t\t\t\"Env\": pulumi.String(\"Test\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.EventRule;\nimport com.pulumi.aws.apigateway.Deployment;\nimport com.pulumi.aws.apigateway.DeploymentArgs;\nimport com.pulumi.aws.apigateway.Stage;\nimport com.pulumi.aws.apigateway.StageArgs;\nimport com.pulumi.aws.cloudwatch.EventTarget;\nimport com.pulumi.aws.cloudwatch.EventTargetArgs;\nimport com.pulumi.aws.cloudwatch.inputs.EventTargetHttpTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleEventRule = new EventRule(\"exampleEventRule\");\n\n var exampleDeployment = new Deployment(\"exampleDeployment\", DeploymentArgs.builder()\n .restApi(exampleAwsApiGatewayRestApi.id())\n .build());\n\n var exampleStage = new Stage(\"exampleStage\", StageArgs.builder()\n .restApi(exampleAwsApiGatewayRestApi.id())\n .deployment(exampleDeployment.id())\n .build());\n\n var example = new EventTarget(\"example\", EventTargetArgs.builder()\n .arn(exampleStage.executionArn().applyValue(_executionArn -\u003e String.format(\"%s/GET\", _executionArn)))\n .rule(exampleEventRule.id())\n .httpTarget(EventTargetHttpTargetArgs.builder()\n .queryStringParameters(Map.of(\"Body\", \"$.detail.body\"))\n .headerParameters(Map.of(\"Env\", \"Test\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:cloudwatch:EventTarget\n properties:\n arn: ${exampleStage.executionArn}/GET\n rule: ${exampleEventRule.id}\n httpTarget:\n queryStringParameters:\n Body: $.detail.body\n headerParameters:\n Env: Test\n exampleEventRule:\n type: aws:cloudwatch:EventRule\n name: example\n exampleDeployment:\n type: aws:apigateway:Deployment\n name: example\n properties:\n restApi: ${exampleAwsApiGatewayRestApi.id}\n exampleStage:\n type: aws:apigateway:Stage\n name: example\n properties:\n restApi: ${exampleAwsApiGatewayRestApi.id}\n deployment: ${exampleDeployment.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Cross-Account Event Bus target\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst assumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"events.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst eventBusInvokeRemoteEventBusRole = new aws.iam.Role(\"event_bus_invoke_remote_event_bus\", {\n name: \"event-bus-invoke-remote-event-bus\",\n assumeRolePolicy: assumeRole.then(assumeRole =\u003e assumeRole.json),\n});\nconst eventBusInvokeRemoteEventBus = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n actions: [\"events:PutEvents\"],\n resources: [\"arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\"],\n }],\n});\nconst eventBusInvokeRemoteEventBusPolicy = new aws.iam.Policy(\"event_bus_invoke_remote_event_bus\", {\n name: \"event_bus_invoke_remote_event_bus\",\n policy: eventBusInvokeRemoteEventBus.then(eventBusInvokeRemoteEventBus =\u003e eventBusInvokeRemoteEventBus.json),\n});\nconst eventBusInvokeRemoteEventBusRolePolicyAttachment = new aws.iam.RolePolicyAttachment(\"event_bus_invoke_remote_event_bus\", {\n role: eventBusInvokeRemoteEventBusRole.name,\n policyArn: eventBusInvokeRemoteEventBusPolicy.arn,\n});\nconst stopInstances = new aws.cloudwatch.EventRule(\"stop_instances\", {\n name: \"StopInstance\",\n description: \"Stop instances nightly\",\n scheduleExpression: \"cron(0 0 * * ? *)\",\n});\nconst stopInstancesEventTarget = new aws.cloudwatch.EventTarget(\"stop_instances\", {\n targetId: \"StopInstance\",\n arn: \"arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\",\n rule: stopInstances.name,\n roleArn: eventBusInvokeRemoteEventBusRole.arn,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nassume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"events.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nevent_bus_invoke_remote_event_bus_role = aws.iam.Role(\"event_bus_invoke_remote_event_bus\",\n name=\"event-bus-invoke-remote-event-bus\",\n assume_role_policy=assume_role.json)\nevent_bus_invoke_remote_event_bus = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"actions\": [\"events:PutEvents\"],\n \"resources\": [\"arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\"],\n}])\nevent_bus_invoke_remote_event_bus_policy = aws.iam.Policy(\"event_bus_invoke_remote_event_bus\",\n name=\"event_bus_invoke_remote_event_bus\",\n policy=event_bus_invoke_remote_event_bus.json)\nevent_bus_invoke_remote_event_bus_role_policy_attachment = aws.iam.RolePolicyAttachment(\"event_bus_invoke_remote_event_bus\",\n role=event_bus_invoke_remote_event_bus_role.name,\n policy_arn=event_bus_invoke_remote_event_bus_policy.arn)\nstop_instances = aws.cloudwatch.EventRule(\"stop_instances\",\n name=\"StopInstance\",\n description=\"Stop instances nightly\",\n schedule_expression=\"cron(0 0 * * ? *)\")\nstop_instances_event_target = aws.cloudwatch.EventTarget(\"stop_instances\",\n target_id=\"StopInstance\",\n arn=\"arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\",\n rule=stop_instances.name,\n role_arn=event_bus_invoke_remote_event_bus_role.arn)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var assumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"events.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var eventBusInvokeRemoteEventBusRole = new Aws.Iam.Role(\"event_bus_invoke_remote_event_bus\", new()\n {\n Name = \"event-bus-invoke-remote-event-bus\",\n AssumeRolePolicy = assumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var eventBusInvokeRemoteEventBus = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"events:PutEvents\",\n },\n Resources = new[]\n {\n \"arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\",\n },\n },\n },\n });\n\n var eventBusInvokeRemoteEventBusPolicy = new Aws.Iam.Policy(\"event_bus_invoke_remote_event_bus\", new()\n {\n Name = \"event_bus_invoke_remote_event_bus\",\n PolicyDocument = eventBusInvokeRemoteEventBus.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var eventBusInvokeRemoteEventBusRolePolicyAttachment = new Aws.Iam.RolePolicyAttachment(\"event_bus_invoke_remote_event_bus\", new()\n {\n Role = eventBusInvokeRemoteEventBusRole.Name,\n PolicyArn = eventBusInvokeRemoteEventBusPolicy.Arn,\n });\n\n var stopInstances = new Aws.CloudWatch.EventRule(\"stop_instances\", new()\n {\n Name = \"StopInstance\",\n Description = \"Stop instances nightly\",\n ScheduleExpression = \"cron(0 0 * * ? *)\",\n });\n\n var stopInstancesEventTarget = new Aws.CloudWatch.EventTarget(\"stop_instances\", new()\n {\n TargetId = \"StopInstance\",\n Arn = \"arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\",\n Rule = stopInstances.Name,\n RoleArn = eventBusInvokeRemoteEventBusRole.Arn,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tassumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"events.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teventBusInvokeRemoteEventBusRole, err := iam.NewRole(ctx, \"event_bus_invoke_remote_event_bus\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"event-bus-invoke-remote-event-bus\"),\n\t\t\tAssumeRolePolicy: pulumi.String(assumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teventBusInvokeRemoteEventBus, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"events:PutEvents\",\n\t\t\t\t\t},\n\t\t\t\t\tResources: []string{\n\t\t\t\t\t\t\"arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teventBusInvokeRemoteEventBusPolicy, err := iam.NewPolicy(ctx, \"event_bus_invoke_remote_event_bus\", \u0026iam.PolicyArgs{\n\t\t\tName: pulumi.String(\"event_bus_invoke_remote_event_bus\"),\n\t\t\tPolicy: pulumi.String(eventBusInvokeRemoteEventBus.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewRolePolicyAttachment(ctx, \"event_bus_invoke_remote_event_bus\", \u0026iam.RolePolicyAttachmentArgs{\n\t\t\tRole: eventBusInvokeRemoteEventBusRole.Name,\n\t\t\tPolicyArn: eventBusInvokeRemoteEventBusPolicy.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstopInstances, err := cloudwatch.NewEventRule(ctx, \"stop_instances\", \u0026cloudwatch.EventRuleArgs{\n\t\t\tName: pulumi.String(\"StopInstance\"),\n\t\t\tDescription: pulumi.String(\"Stop instances nightly\"),\n\t\t\tScheduleExpression: pulumi.String(\"cron(0 0 * * ? *)\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewEventTarget(ctx, \"stop_instances\", \u0026cloudwatch.EventTargetArgs{\n\t\t\tTargetId: pulumi.String(\"StopInstance\"),\n\t\t\tArn: pulumi.String(\"arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\"),\n\t\t\tRule: stopInstances.Name,\n\t\t\tRoleArn: eventBusInvokeRemoteEventBusRole.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.iam.Policy;\nimport com.pulumi.aws.iam.PolicyArgs;\nimport com.pulumi.aws.iam.RolePolicyAttachment;\nimport com.pulumi.aws.iam.RolePolicyAttachmentArgs;\nimport com.pulumi.aws.cloudwatch.EventRule;\nimport com.pulumi.aws.cloudwatch.EventRuleArgs;\nimport com.pulumi.aws.cloudwatch.EventTarget;\nimport com.pulumi.aws.cloudwatch.EventTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"events.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var eventBusInvokeRemoteEventBusRole = new Role(\"eventBusInvokeRemoteEventBusRole\", RoleArgs.builder()\n .name(\"event-bus-invoke-remote-event-bus\")\n .assumeRolePolicy(assumeRole.json())\n .build());\n\n final var eventBusInvokeRemoteEventBus = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"events:PutEvents\")\n .resources(\"arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\")\n .build())\n .build());\n\n var eventBusInvokeRemoteEventBusPolicy = new Policy(\"eventBusInvokeRemoteEventBusPolicy\", PolicyArgs.builder()\n .name(\"event_bus_invoke_remote_event_bus\")\n .policy(eventBusInvokeRemoteEventBus.json())\n .build());\n\n var eventBusInvokeRemoteEventBusRolePolicyAttachment = new RolePolicyAttachment(\"eventBusInvokeRemoteEventBusRolePolicyAttachment\", RolePolicyAttachmentArgs.builder()\n .role(eventBusInvokeRemoteEventBusRole.name())\n .policyArn(eventBusInvokeRemoteEventBusPolicy.arn())\n .build());\n\n var stopInstances = new EventRule(\"stopInstances\", EventRuleArgs.builder()\n .name(\"StopInstance\")\n .description(\"Stop instances nightly\")\n .scheduleExpression(\"cron(0 0 * * ? *)\")\n .build());\n\n var stopInstancesEventTarget = new EventTarget(\"stopInstancesEventTarget\", EventTargetArgs.builder()\n .targetId(\"StopInstance\")\n .arn(\"arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\")\n .rule(stopInstances.name())\n .roleArn(eventBusInvokeRemoteEventBusRole.arn())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n eventBusInvokeRemoteEventBusRole:\n type: aws:iam:Role\n name: event_bus_invoke_remote_event_bus\n properties:\n name: event-bus-invoke-remote-event-bus\n assumeRolePolicy: ${assumeRole.json}\n eventBusInvokeRemoteEventBusPolicy:\n type: aws:iam:Policy\n name: event_bus_invoke_remote_event_bus\n properties:\n name: event_bus_invoke_remote_event_bus\n policy: ${eventBusInvokeRemoteEventBus.json}\n eventBusInvokeRemoteEventBusRolePolicyAttachment:\n type: aws:iam:RolePolicyAttachment\n name: event_bus_invoke_remote_event_bus\n properties:\n role: ${eventBusInvokeRemoteEventBusRole.name}\n policyArn: ${eventBusInvokeRemoteEventBusPolicy.arn}\n stopInstances:\n type: aws:cloudwatch:EventRule\n name: stop_instances\n properties:\n name: StopInstance\n description: Stop instances nightly\n scheduleExpression: cron(0 0 * * ? *)\n stopInstancesEventTarget:\n type: aws:cloudwatch:EventTarget\n name: stop_instances\n properties:\n targetId: StopInstance\n arn: arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\n rule: ${stopInstances.name}\n roleArn: ${eventBusInvokeRemoteEventBusRole.arn}\nvariables:\n assumeRole:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - events.amazonaws.com\n actions:\n - sts:AssumeRole\n eventBusInvokeRemoteEventBus:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n actions:\n - events:PutEvents\n resources:\n - arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Input Transformer Usage - JSON Object\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleEventRule = new aws.cloudwatch.EventRule(\"example\", {});\nconst example = new aws.cloudwatch.EventTarget(\"example\", {\n arn: exampleAwsLambdaFunction.arn,\n rule: exampleEventRule.id,\n inputTransformer: {\n inputPaths: {\n instance: \"$.detail.instance\",\n status: \"$.detail.status\",\n },\n inputTemplate: `{\n \\\\\"instance_id\\\\\": \u003cinstance\u003e,\n \\\\\"instance_status\\\\\": \u003cstatus\u003e\n}\n`,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_event_rule = aws.cloudwatch.EventRule(\"example\")\nexample = aws.cloudwatch.EventTarget(\"example\",\n arn=example_aws_lambda_function[\"arn\"],\n rule=example_event_rule.id,\n input_transformer={\n \"input_paths\": {\n \"instance\": \"$.detail.instance\",\n \"status\": \"$.detail.status\",\n },\n \"input_template\": \"\"\"{\n \\\"instance_id\\\": \u003cinstance\u003e,\n \\\"instance_status\\\": \u003cstatus\u003e\n}\n\"\"\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleEventRule = new Aws.CloudWatch.EventRule(\"example\");\n\n var example = new Aws.CloudWatch.EventTarget(\"example\", new()\n {\n Arn = exampleAwsLambdaFunction.Arn,\n Rule = exampleEventRule.Id,\n InputTransformer = new Aws.CloudWatch.Inputs.EventTargetInputTransformerArgs\n {\n InputPaths = \n {\n { \"instance\", \"$.detail.instance\" },\n { \"status\", \"$.detail.status\" },\n },\n InputTemplate = @\"{\n \\\"\"instance_id\\\"\": \u003cinstance\u003e,\n \\\"\"instance_status\\\"\": \u003cstatus\u003e\n}\n\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleEventRule, err := cloudwatch.NewEventRule(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewEventTarget(ctx, \"example\", \u0026cloudwatch.EventTargetArgs{\n\t\t\tArn: pulumi.Any(exampleAwsLambdaFunction.Arn),\n\t\t\tRule: exampleEventRule.ID(),\n\t\t\tInputTransformer: \u0026cloudwatch.EventTargetInputTransformerArgs{\n\t\t\t\tInputPaths: pulumi.StringMap{\n\t\t\t\t\t\"instance\": pulumi.String(\"$.detail.instance\"),\n\t\t\t\t\t\"status\": pulumi.String(\"$.detail.status\"),\n\t\t\t\t},\n\t\t\t\tInputTemplate: pulumi.String(\"{\\n \\\\\\\"instance_id\\\\\\\": \u003cinstance\u003e,\\n \\\\\\\"instance_status\\\\\\\": \u003cstatus\u003e\\n}\\n\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.EventRule;\nimport com.pulumi.aws.cloudwatch.EventTarget;\nimport com.pulumi.aws.cloudwatch.EventTargetArgs;\nimport com.pulumi.aws.cloudwatch.inputs.EventTargetInputTransformerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleEventRule = new EventRule(\"exampleEventRule\");\n\n var example = new EventTarget(\"example\", EventTargetArgs.builder()\n .arn(exampleAwsLambdaFunction.arn())\n .rule(exampleEventRule.id())\n .inputTransformer(EventTargetInputTransformerArgs.builder()\n .inputPaths(Map.ofEntries(\n Map.entry(\"instance\", \"$.detail.instance\"),\n Map.entry(\"status\", \"$.detail.status\")\n ))\n .inputTemplate(\"\"\"\n{\n \\\"instance_id\\\": \u003cinstance\u003e,\n \\\"instance_status\\\": \u003cstatus\u003e\n}\n \"\"\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:cloudwatch:EventTarget\n properties:\n arn: ${exampleAwsLambdaFunction.arn}\n rule: ${exampleEventRule.id}\n inputTransformer:\n inputPaths:\n instance: $.detail.instance\n status: $.detail.status\n inputTemplate: |\n {\n \\\"instance_id\\\": \u003cinstance\u003e,\n \\\"instance_status\\\": \u003cstatus\u003e\n }\n exampleEventRule:\n type: aws:cloudwatch:EventRule\n name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Input Transformer Usage - Simple String\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleEventRule = new aws.cloudwatch.EventRule(\"example\", {});\nconst example = new aws.cloudwatch.EventTarget(\"example\", {\n arn: exampleAwsLambdaFunction.arn,\n rule: exampleEventRule.id,\n inputTransformer: {\n inputPaths: {\n instance: \"$.detail.instance\",\n status: \"$.detail.status\",\n },\n inputTemplate: \"\\\"\u003cinstance\u003e is in state \u003cstatus\u003e\\\"\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_event_rule = aws.cloudwatch.EventRule(\"example\")\nexample = aws.cloudwatch.EventTarget(\"example\",\n arn=example_aws_lambda_function[\"arn\"],\n rule=example_event_rule.id,\n input_transformer={\n \"input_paths\": {\n \"instance\": \"$.detail.instance\",\n \"status\": \"$.detail.status\",\n },\n \"input_template\": \"\\\"\u003cinstance\u003e is in state \u003cstatus\u003e\\\"\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleEventRule = new Aws.CloudWatch.EventRule(\"example\");\n\n var example = new Aws.CloudWatch.EventTarget(\"example\", new()\n {\n Arn = exampleAwsLambdaFunction.Arn,\n Rule = exampleEventRule.Id,\n InputTransformer = new Aws.CloudWatch.Inputs.EventTargetInputTransformerArgs\n {\n InputPaths = \n {\n { \"instance\", \"$.detail.instance\" },\n { \"status\", \"$.detail.status\" },\n },\n InputTemplate = \"\\\"\u003cinstance\u003e is in state \u003cstatus\u003e\\\"\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleEventRule, err := cloudwatch.NewEventRule(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewEventTarget(ctx, \"example\", \u0026cloudwatch.EventTargetArgs{\n\t\t\tArn: pulumi.Any(exampleAwsLambdaFunction.Arn),\n\t\t\tRule: exampleEventRule.ID(),\n\t\t\tInputTransformer: \u0026cloudwatch.EventTargetInputTransformerArgs{\n\t\t\t\tInputPaths: pulumi.StringMap{\n\t\t\t\t\t\"instance\": pulumi.String(\"$.detail.instance\"),\n\t\t\t\t\t\"status\": pulumi.String(\"$.detail.status\"),\n\t\t\t\t},\n\t\t\t\tInputTemplate: pulumi.String(\"\\\"\u003cinstance\u003e is in state \u003cstatus\u003e\\\"\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.EventRule;\nimport com.pulumi.aws.cloudwatch.EventTarget;\nimport com.pulumi.aws.cloudwatch.EventTargetArgs;\nimport com.pulumi.aws.cloudwatch.inputs.EventTargetInputTransformerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleEventRule = new EventRule(\"exampleEventRule\");\n\n var example = new EventTarget(\"example\", EventTargetArgs.builder()\n .arn(exampleAwsLambdaFunction.arn())\n .rule(exampleEventRule.id())\n .inputTransformer(EventTargetInputTransformerArgs.builder()\n .inputPaths(Map.ofEntries(\n Map.entry(\"instance\", \"$.detail.instance\"),\n Map.entry(\"status\", \"$.detail.status\")\n ))\n .inputTemplate(\"\\\"\u003cinstance\u003e is in state \u003cstatus\u003e\\\"\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:cloudwatch:EventTarget\n properties:\n arn: ${exampleAwsLambdaFunction.arn}\n rule: ${exampleEventRule.id}\n inputTransformer:\n inputPaths:\n instance: $.detail.instance\n status: $.detail.status\n inputTemplate: '\"\u003cinstance\u003e is in state \u003cstatus\u003e\"'\n exampleEventRule:\n type: aws:cloudwatch:EventRule\n name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Cloudwatch Log Group Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.cloudwatch.LogGroup(\"example\", {\n name: \"/aws/events/guardduty/logs\",\n retentionInDays: 1,\n});\nconst exampleEventRule = new aws.cloudwatch.EventRule(\"example\", {\n name: \"guard-duty_event_rule\",\n description: \"GuardDuty Findings\",\n eventPattern: JSON.stringify({\n source: [\"aws.guardduty\"],\n }),\n tags: {\n Environment: \"example\",\n },\n});\nconst exampleLogPolicy = aws.iam.getPolicyDocumentOutput({\n statements: [\n {\n effect: \"Allow\",\n actions: [\"logs:CreateLogStream\"],\n resources: [pulumi.interpolate`${example.arn}:*`],\n principals: [{\n type: \"Service\",\n identifiers: [\n \"events.amazonaws.com\",\n \"delivery.logs.amazonaws.com\",\n ],\n }],\n },\n {\n effect: \"Allow\",\n actions: [\"logs:PutLogEvents\"],\n resources: [pulumi.interpolate`${example.arn}:*:*`],\n principals: [{\n type: \"Service\",\n identifiers: [\n \"events.amazonaws.com\",\n \"delivery.logs.amazonaws.com\",\n ],\n }],\n conditions: [{\n test: \"ArnEquals\",\n values: [exampleEventRule.arn],\n variable: \"aws:SourceArn\",\n }],\n },\n ],\n});\nconst exampleLogResourcePolicy = new aws.cloudwatch.LogResourcePolicy(\"example\", {\n policyDocument: exampleLogPolicy.apply(exampleLogPolicy =\u003e exampleLogPolicy.json),\n policyName: \"guardduty-log-publishing-policy\",\n});\nconst exampleEventTarget = new aws.cloudwatch.EventTarget(\"example\", {\n rule: exampleEventRule.name,\n arn: example.arn,\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nexample = aws.cloudwatch.LogGroup(\"example\",\n name=\"/aws/events/guardduty/logs\",\n retention_in_days=1)\nexample_event_rule = aws.cloudwatch.EventRule(\"example\",\n name=\"guard-duty_event_rule\",\n description=\"GuardDuty Findings\",\n event_pattern=json.dumps({\n \"source\": [\"aws.guardduty\"],\n }),\n tags={\n \"Environment\": \"example\",\n })\nexample_log_policy = aws.iam.get_policy_document_output(statements=[\n {\n \"effect\": \"Allow\",\n \"actions\": [\"logs:CreateLogStream\"],\n \"resources\": [example.arn.apply(lambda arn: f\"{arn}:*\")],\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\n \"events.amazonaws.com\",\n \"delivery.logs.amazonaws.com\",\n ],\n }],\n },\n {\n \"effect\": \"Allow\",\n \"actions\": [\"logs:PutLogEvents\"],\n \"resources\": [example.arn.apply(lambda arn: f\"{arn}:*:*\")],\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\n \"events.amazonaws.com\",\n \"delivery.logs.amazonaws.com\",\n ],\n }],\n \"conditions\": [{\n \"test\": \"ArnEquals\",\n \"values\": [example_event_rule.arn],\n \"variable\": \"aws:SourceArn\",\n }],\n },\n])\nexample_log_resource_policy = aws.cloudwatch.LogResourcePolicy(\"example\",\n policy_document=example_log_policy.json,\n policy_name=\"guardduty-log-publishing-policy\")\nexample_event_target = aws.cloudwatch.EventTarget(\"example\",\n rule=example_event_rule.name,\n arn=example.arn)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.CloudWatch.LogGroup(\"example\", new()\n {\n Name = \"/aws/events/guardduty/logs\",\n RetentionInDays = 1,\n });\n\n var exampleEventRule = new Aws.CloudWatch.EventRule(\"example\", new()\n {\n Name = \"guard-duty_event_rule\",\n Description = \"GuardDuty Findings\",\n EventPattern = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"source\"] = new[]\n {\n \"aws.guardduty\",\n },\n }),\n Tags = \n {\n { \"Environment\", \"example\" },\n },\n });\n\n var exampleLogPolicy = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"logs:CreateLogStream\",\n },\n Resources = new[]\n {\n $\"{example.Arn}:*\",\n },\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"events.amazonaws.com\",\n \"delivery.logs.amazonaws.com\",\n },\n },\n },\n },\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"logs:PutLogEvents\",\n },\n Resources = new[]\n {\n $\"{example.Arn}:*:*\",\n },\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"events.amazonaws.com\",\n \"delivery.logs.amazonaws.com\",\n },\n },\n },\n Conditions = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementConditionInputArgs\n {\n Test = \"ArnEquals\",\n Values = new[]\n {\n exampleEventRule.Arn,\n },\n Variable = \"aws:SourceArn\",\n },\n },\n },\n },\n });\n\n var exampleLogResourcePolicy = new Aws.CloudWatch.LogResourcePolicy(\"example\", new()\n {\n PolicyDocument = exampleLogPolicy.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n PolicyName = \"guardduty-log-publishing-policy\",\n });\n\n var exampleEventTarget = new Aws.CloudWatch.EventTarget(\"example\", new()\n {\n Rule = exampleEventRule.Name,\n Arn = example.Arn,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := cloudwatch.NewLogGroup(ctx, \"example\", \u0026cloudwatch.LogGroupArgs{\n\t\t\tName: pulumi.String(\"/aws/events/guardduty/logs\"),\n\t\t\tRetentionInDays: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"source\": []string{\n\t\t\t\t\"aws.guardduty\",\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\texampleEventRule, err := cloudwatch.NewEventRule(ctx, \"example\", \u0026cloudwatch.EventRuleArgs{\n\t\t\tName: pulumi.String(\"guard-duty_event_rule\"),\n\t\t\tDescription: pulumi.String(\"GuardDuty Findings\"),\n\t\t\tEventPattern: pulumi.String(json0),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Environment\": pulumi.String(\"example\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleLogPolicy := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{\n\t\t\tStatements: iam.GetPolicyDocumentStatementArray{\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"logs:CreateLogStream\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\texample.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"%v:*\", arn), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t\tPrincipals: iam.GetPolicyDocumentStatementPrincipalArray{\n\t\t\t\t\t\t\u0026iam.GetPolicyDocumentStatementPrincipalArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Service\"),\n\t\t\t\t\t\t\tIdentifiers: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"events.amazonaws.com\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"delivery.logs.amazonaws.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"logs:PutLogEvents\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\texample.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"%v:*:*\", arn), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t\tPrincipals: iam.GetPolicyDocumentStatementPrincipalArray{\n\t\t\t\t\t\t\u0026iam.GetPolicyDocumentStatementPrincipalArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Service\"),\n\t\t\t\t\t\t\tIdentifiers: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"events.amazonaws.com\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"delivery.logs.amazonaws.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tConditions: iam.GetPolicyDocumentStatementConditionArray{\n\t\t\t\t\t\t\u0026iam.GetPolicyDocumentStatementConditionArgs{\n\t\t\t\t\t\t\tTest: pulumi.String(\"ArnEquals\"),\n\t\t\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\t\t\texampleEventRule.Arn,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tVariable: pulumi.String(\"aws:SourceArn\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\t_, err = cloudwatch.NewLogResourcePolicy(ctx, \"example\", \u0026cloudwatch.LogResourcePolicyArgs{\n\t\t\tPolicyDocument: pulumi.String(exampleLogPolicy.ApplyT(func(exampleLogPolicy iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026exampleLogPolicy.Json, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tPolicyName: pulumi.String(\"guardduty-log-publishing-policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewEventTarget(ctx, \"example\", \u0026cloudwatch.EventTargetArgs{\n\t\t\tRule: exampleEventRule.Name,\n\t\t\tArn: example.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.LogGroup;\nimport com.pulumi.aws.cloudwatch.LogGroupArgs;\nimport com.pulumi.aws.cloudwatch.EventRule;\nimport com.pulumi.aws.cloudwatch.EventRuleArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.cloudwatch.LogResourcePolicy;\nimport com.pulumi.aws.cloudwatch.LogResourcePolicyArgs;\nimport com.pulumi.aws.cloudwatch.EventTarget;\nimport com.pulumi.aws.cloudwatch.EventTargetArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new LogGroup(\"example\", LogGroupArgs.builder()\n .name(\"/aws/events/guardduty/logs\")\n .retentionInDays(1)\n .build());\n\n var exampleEventRule = new EventRule(\"exampleEventRule\", EventRuleArgs.builder()\n .name(\"guard-duty_event_rule\")\n .description(\"GuardDuty Findings\")\n .eventPattern(serializeJson(\n jsonObject(\n jsonProperty(\"source\", jsonArray(\"aws.guardduty\"))\n )))\n .tags(Map.of(\"Environment\", \"example\"))\n .build());\n\n final var exampleLogPolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements( \n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"logs:CreateLogStream\")\n .resources(example.arn().applyValue(_arn -\u003e String.format(\"%s:*\", _arn)))\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers( \n \"events.amazonaws.com\",\n \"delivery.logs.amazonaws.com\")\n .build())\n .build(),\n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"logs:PutLogEvents\")\n .resources(example.arn().applyValue(_arn -\u003e String.format(\"%s:*:*\", _arn)))\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers( \n \"events.amazonaws.com\",\n \"delivery.logs.amazonaws.com\")\n .build())\n .conditions(GetPolicyDocumentStatementConditionArgs.builder()\n .test(\"ArnEquals\")\n .values(exampleEventRule.arn())\n .variable(\"aws:SourceArn\")\n .build())\n .build())\n .build());\n\n var exampleLogResourcePolicy = new LogResourcePolicy(\"exampleLogResourcePolicy\", LogResourcePolicyArgs.builder()\n .policyDocument(exampleLogPolicy.applyValue(_exampleLogPolicy -\u003e _exampleLogPolicy.json()))\n .policyName(\"guardduty-log-publishing-policy\")\n .build());\n\n var exampleEventTarget = new EventTarget(\"exampleEventTarget\", EventTargetArgs.builder()\n .rule(exampleEventRule.name())\n .arn(example.arn())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:cloudwatch:LogGroup\n properties:\n name: /aws/events/guardduty/logs\n retentionInDays: 1\n exampleLogResourcePolicy:\n type: aws:cloudwatch:LogResourcePolicy\n name: example\n properties:\n policyDocument: ${exampleLogPolicy.json}\n policyName: guardduty-log-publishing-policy\n exampleEventRule:\n type: aws:cloudwatch:EventRule\n name: example\n properties:\n name: guard-duty_event_rule\n description: GuardDuty Findings\n eventPattern:\n fn::toJSON:\n source:\n - aws.guardduty\n tags:\n Environment: example\n exampleEventTarget:\n type: aws:cloudwatch:EventTarget\n name: example\n properties:\n rule: ${exampleEventRule.name}\n arn: ${example.arn}\nvariables:\n exampleLogPolicy:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n actions:\n - logs:CreateLogStream\n resources:\n - ${example.arn}:*\n principals:\n - type: Service\n identifiers:\n - events.amazonaws.com\n - delivery.logs.amazonaws.com\n - effect: Allow\n actions:\n - logs:PutLogEvents\n resources:\n - ${example.arn}:*:*\n principals:\n - type: Service\n identifiers:\n - events.amazonaws.com\n - delivery.logs.amazonaws.com\n conditions:\n - test: ArnEquals\n values:\n - ${exampleEventRule.arn}\n variable: aws:SourceArn\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### AppSync Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst invokeAppsyncMutation = new aws.cloudwatch.EventRule(\"invoke_appsync_mutation\", {\n name: \"invoke-appsync-mutation\",\n description: \"schedule_batch_test\",\n scheduleExpression: \"rate(5 minutes)\",\n});\nconst appsyncMutationRoleTrust = aws.iam.getPolicyDocument({\n statements: [{\n actions: [\"sts:AssumeRole\"],\n principals: [{\n type: \"Service\",\n identifiers: [\"events.amazonaws.com\"],\n }],\n }],\n});\nconst appsyncMutationRole = new aws.iam.Role(\"appsync_mutation_role\", {\n name: \"appsync-mutation-role\",\n assumeRolePolicy: appsyncMutationRoleTrust.then(appsyncMutationRoleTrust =\u003e appsyncMutationRoleTrust.json),\n});\nconst graphql_api = new aws.appsync.GraphQLApi(\"graphql-api\", {\n name: \"api\",\n authenticationType: \"AWS_IAM\",\n schema: ` schema {\n mutation: Mutation\n query: Query\n }\n\n type Query {\n testQuery: String\n }\n\n type Mutation {\n testMutation(input: MutationInput!): TestMutationResult\n }\n\n type TestMutationResult {\n test: String\n }\n\n input MutationInput {\n testInput: String\n }\n`,\n});\nconst invokeAppsyncMutationEventTarget = new aws.cloudwatch.EventTarget(\"invoke_appsync_mutation\", {\n arn: std.replaceOutput({\n text: graphql_api.arn,\n search: \"apis\",\n replace: \"endpoints/graphql-api\",\n }).apply(invoke =\u003e invoke.result),\n rule: invokeAppsyncMutation.id,\n roleArn: appsyncMutationRole.arn,\n inputTransformer: {\n inputPaths: {\n input: \"$.detail.input\",\n },\n inputTemplate: ` {\n \\\\\"input\\\\\": \u003cinput\u003e\n }\n`,\n },\n appsyncTarget: {\n graphqlOperation: \"mutation TestMutation($input:MutationInput!){testMutation(input: $input) {test}}\",\n },\n});\nconst appsyncMutationRolePolicyDocument = aws.iam.getPolicyDocumentOutput({\n statements: [{\n actions: [\"appsync:GraphQL\"],\n effect: \"Allow\",\n resources: [graphql_api.arn],\n }],\n});\nconst appsyncMutationRolePolicy = new aws.iam.Policy(\"appsync_mutation_role_policy\", {\n name: \"appsync-mutation-role-policy\",\n policy: appsyncMutationRolePolicyDocument.apply(appsyncMutationRolePolicyDocument =\u003e appsyncMutationRolePolicyDocument.json),\n});\nconst appsyncMutationRoleAttachment = new aws.iam.RolePolicyAttachment(\"appsync_mutation_role_attachment\", {\n policyArn: appsyncMutationRolePolicy.arn,\n role: appsyncMutationRole.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\ninvoke_appsync_mutation = aws.cloudwatch.EventRule(\"invoke_appsync_mutation\",\n name=\"invoke-appsync-mutation\",\n description=\"schedule_batch_test\",\n schedule_expression=\"rate(5 minutes)\")\nappsync_mutation_role_trust = aws.iam.get_policy_document(statements=[{\n \"actions\": [\"sts:AssumeRole\"],\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"events.amazonaws.com\"],\n }],\n}])\nappsync_mutation_role = aws.iam.Role(\"appsync_mutation_role\",\n name=\"appsync-mutation-role\",\n assume_role_policy=appsync_mutation_role_trust.json)\ngraphql_api = aws.appsync.GraphQLApi(\"graphql-api\",\n name=\"api\",\n authentication_type=\"AWS_IAM\",\n schema=\"\"\" schema {\n mutation: Mutation\n query: Query\n }\n\n type Query {\n testQuery: String\n }\n\n type Mutation {\n testMutation(input: MutationInput!): TestMutationResult\n }\n\n type TestMutationResult {\n test: String\n }\n\n input MutationInput {\n testInput: String\n }\n\"\"\")\ninvoke_appsync_mutation_event_target = aws.cloudwatch.EventTarget(\"invoke_appsync_mutation\",\n arn=std.replace_output(text=graphql_api.arn,\n search=\"apis\",\n replace=\"endpoints/graphql-api\").apply(lambda invoke: invoke.result),\n rule=invoke_appsync_mutation.id,\n role_arn=appsync_mutation_role.arn,\n input_transformer={\n \"input_paths\": {\n \"input\": \"$.detail.input\",\n },\n \"input_template\": \"\"\" {\n \\\"input\\\": \u003cinput\u003e\n }\n\"\"\",\n },\n appsync_target={\n \"graphql_operation\": \"mutation TestMutation($input:MutationInput!){testMutation(input: $input) {test}}\",\n })\nappsync_mutation_role_policy_document = aws.iam.get_policy_document_output(statements=[{\n \"actions\": [\"appsync:GraphQL\"],\n \"effect\": \"Allow\",\n \"resources\": [graphql_api.arn],\n}])\nappsync_mutation_role_policy = aws.iam.Policy(\"appsync_mutation_role_policy\",\n name=\"appsync-mutation-role-policy\",\n policy=appsync_mutation_role_policy_document.json)\nappsync_mutation_role_attachment = aws.iam.RolePolicyAttachment(\"appsync_mutation_role_attachment\",\n policy_arn=appsync_mutation_role_policy.arn,\n role=appsync_mutation_role.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var invokeAppsyncMutation = new Aws.CloudWatch.EventRule(\"invoke_appsync_mutation\", new()\n {\n Name = \"invoke-appsync-mutation\",\n Description = \"schedule_batch_test\",\n ScheduleExpression = \"rate(5 minutes)\",\n });\n\n var appsyncMutationRoleTrust = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"events.amazonaws.com\",\n },\n },\n },\n },\n },\n });\n\n var appsyncMutationRole = new Aws.Iam.Role(\"appsync_mutation_role\", new()\n {\n Name = \"appsync-mutation-role\",\n AssumeRolePolicy = appsyncMutationRoleTrust.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var graphql_api = new Aws.AppSync.GraphQLApi(\"graphql-api\", new()\n {\n Name = \"api\",\n AuthenticationType = \"AWS_IAM\",\n Schema = @\" schema {\n mutation: Mutation\n query: Query\n }\n\n type Query {\n testQuery: String\n }\n\n type Mutation {\n testMutation(input: MutationInput!): TestMutationResult\n }\n\n type TestMutationResult {\n test: String\n }\n\n input MutationInput {\n testInput: String\n }\n\",\n });\n\n var invokeAppsyncMutationEventTarget = new Aws.CloudWatch.EventTarget(\"invoke_appsync_mutation\", new()\n {\n Arn = Std.Replace.Invoke(new()\n {\n Text = graphql_api.Arn,\n Search = \"apis\",\n Replace = \"endpoints/graphql-api\",\n }).Apply(invoke =\u003e invoke.Result),\n Rule = invokeAppsyncMutation.Id,\n RoleArn = appsyncMutationRole.Arn,\n InputTransformer = new Aws.CloudWatch.Inputs.EventTargetInputTransformerArgs\n {\n InputPaths = \n {\n { \"input\", \"$.detail.input\" },\n },\n InputTemplate = @\" {\n \\\"\"input\\\"\": \u003cinput\u003e\n }\n\",\n },\n AppsyncTarget = new Aws.CloudWatch.Inputs.EventTargetAppsyncTargetArgs\n {\n GraphqlOperation = \"mutation TestMutation($input:MutationInput!){testMutation(input: $input) {test}}\",\n },\n });\n\n var appsyncMutationRolePolicyDocument = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Actions = new[]\n {\n \"appsync:GraphQL\",\n },\n Effect = \"Allow\",\n Resources = new[]\n {\n graphql_api.Arn,\n },\n },\n },\n });\n\n var appsyncMutationRolePolicy = new Aws.Iam.Policy(\"appsync_mutation_role_policy\", new()\n {\n Name = \"appsync-mutation-role-policy\",\n PolicyDocument = appsyncMutationRolePolicyDocument.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var appsyncMutationRoleAttachment = new Aws.Iam.RolePolicyAttachment(\"appsync_mutation_role_attachment\", new()\n {\n PolicyArn = appsyncMutationRolePolicy.Arn,\n Role = appsyncMutationRole.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appsync\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeAppsyncMutation, err := cloudwatch.NewEventRule(ctx, \"invoke_appsync_mutation\", \u0026cloudwatch.EventRuleArgs{\n\t\t\tName: pulumi.String(\"invoke-appsync-mutation\"),\n\t\t\tDescription: pulumi.String(\"schedule_batch_test\"),\n\t\t\tScheduleExpression: pulumi.String(\"rate(5 minutes)\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappsyncMutationRoleTrust, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"events.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappsyncMutationRole, err := iam.NewRole(ctx, \"appsync_mutation_role\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"appsync-mutation-role\"),\n\t\t\tAssumeRolePolicy: pulumi.String(appsyncMutationRoleTrust.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgraphql_api, err := appsync.NewGraphQLApi(ctx, \"graphql-api\", \u0026appsync.GraphQLApiArgs{\n\t\t\tName: pulumi.String(\"api\"),\n\t\t\tAuthenticationType: pulumi.String(\"AWS_IAM\"),\n\t\t\tSchema: pulumi.String(` schema {\n mutation: Mutation\n query: Query\n }\n\n type Query {\n testQuery: String\n }\n\n type Mutation {\n testMutation(input: MutationInput!): TestMutationResult\n }\n\n type TestMutationResult {\n test: String\n }\n\n input MutationInput {\n testInput: String\n }\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewEventTarget(ctx, \"invoke_appsync_mutation\", \u0026cloudwatch.EventTargetArgs{\n\t\t\tArn: pulumi.String(std.ReplaceOutput(ctx, std.ReplaceOutputArgs{\n\t\t\t\tText: graphql_api.Arn,\n\t\t\t\tSearch: pulumi.String(\"apis\"),\n\t\t\t\tReplace: pulumi.String(\"endpoints/graphql-api\"),\n\t\t\t}, nil).ApplyT(func(invoke std.ReplaceResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tRule: invokeAppsyncMutation.ID(),\n\t\t\tRoleArn: appsyncMutationRole.Arn,\n\t\t\tInputTransformer: \u0026cloudwatch.EventTargetInputTransformerArgs{\n\t\t\t\tInputPaths: pulumi.StringMap{\n\t\t\t\t\t\"input\": pulumi.String(\"$.detail.input\"),\n\t\t\t\t},\n\t\t\t\tInputTemplate: pulumi.String(\" {\\n \\\\\\\"input\\\\\\\": \u003cinput\u003e\\n }\\n\"),\n\t\t\t},\n\t\t\tAppsyncTarget: \u0026cloudwatch.EventTargetAppsyncTargetArgs{\n\t\t\t\tGraphqlOperation: pulumi.String(\"mutation TestMutation($input:MutationInput!){testMutation(input: $input) {test}}\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappsyncMutationRolePolicyDocument := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{\n\t\t\tStatements: iam.GetPolicyDocumentStatementArray{\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"appsync:GraphQL\"),\n\t\t\t\t\t},\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\tgraphql_api.Arn,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tappsyncMutationRolePolicy, err := iam.NewPolicy(ctx, \"appsync_mutation_role_policy\", \u0026iam.PolicyArgs{\n\t\t\tName: pulumi.String(\"appsync-mutation-role-policy\"),\n\t\t\tPolicy: pulumi.String(appsyncMutationRolePolicyDocument.ApplyT(func(appsyncMutationRolePolicyDocument iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026appsyncMutationRolePolicyDocument.Json, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewRolePolicyAttachment(ctx, \"appsync_mutation_role_attachment\", \u0026iam.RolePolicyAttachmentArgs{\n\t\t\tPolicyArn: appsyncMutationRolePolicy.Arn,\n\t\t\tRole: appsyncMutationRole.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.EventRule;\nimport com.pulumi.aws.cloudwatch.EventRuleArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.appsync.GraphQLApi;\nimport com.pulumi.aws.appsync.GraphQLApiArgs;\nimport com.pulumi.aws.cloudwatch.EventTarget;\nimport com.pulumi.aws.cloudwatch.EventTargetArgs;\nimport com.pulumi.aws.cloudwatch.inputs.EventTargetInputTransformerArgs;\nimport com.pulumi.aws.cloudwatch.inputs.EventTargetAppsyncTargetArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.ReplaceArgs;\nimport com.pulumi.aws.iam.Policy;\nimport com.pulumi.aws.iam.PolicyArgs;\nimport com.pulumi.aws.iam.RolePolicyAttachment;\nimport com.pulumi.aws.iam.RolePolicyAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var invokeAppsyncMutation = new EventRule(\"invokeAppsyncMutation\", EventRuleArgs.builder()\n .name(\"invoke-appsync-mutation\")\n .description(\"schedule_batch_test\")\n .scheduleExpression(\"rate(5 minutes)\")\n .build());\n\n final var appsyncMutationRoleTrust = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .actions(\"sts:AssumeRole\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"events.amazonaws.com\")\n .build())\n .build())\n .build());\n\n var appsyncMutationRole = new Role(\"appsyncMutationRole\", RoleArgs.builder()\n .name(\"appsync-mutation-role\")\n .assumeRolePolicy(appsyncMutationRoleTrust.json())\n .build());\n\n var graphql_api = new GraphQLApi(\"graphql-api\", GraphQLApiArgs.builder()\n .name(\"api\")\n .authenticationType(\"AWS_IAM\")\n .schema(\"\"\"\n schema {\n mutation: Mutation\n query: Query\n }\n\n type Query {\n testQuery: String\n }\n\n type Mutation {\n testMutation(input: MutationInput!): TestMutationResult\n }\n\n type TestMutationResult {\n test: String\n }\n\n input MutationInput {\n testInput: String\n }\n \"\"\")\n .build());\n\n var invokeAppsyncMutationEventTarget = new EventTarget(\"invokeAppsyncMutationEventTarget\", EventTargetArgs.builder()\n .arn(StdFunctions.replace(ReplaceArgs.builder()\n .text(graphql_api.arn())\n .search(\"apis\")\n .replace(\"endpoints/graphql-api\")\n .build()).applyValue(_invoke -\u003e _invoke.result()))\n .rule(invokeAppsyncMutation.id())\n .roleArn(appsyncMutationRole.arn())\n .inputTransformer(EventTargetInputTransformerArgs.builder()\n .inputPaths(Map.of(\"input\", \"$.detail.input\"))\n .inputTemplate(\"\"\"\n {\n \\\"input\\\": \u003cinput\u003e\n }\n \"\"\")\n .build())\n .appsyncTarget(EventTargetAppsyncTargetArgs.builder()\n .graphqlOperation(\"mutation TestMutation($input:MutationInput!){testMutation(input: $input) {test}}\")\n .build())\n .build());\n\n final var appsyncMutationRolePolicyDocument = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .actions(\"appsync:GraphQL\")\n .effect(\"Allow\")\n .resources(graphql_api.arn())\n .build())\n .build());\n\n var appsyncMutationRolePolicy = new Policy(\"appsyncMutationRolePolicy\", PolicyArgs.builder()\n .name(\"appsync-mutation-role-policy\")\n .policy(appsyncMutationRolePolicyDocument.applyValue(_appsyncMutationRolePolicyDocument -\u003e _appsyncMutationRolePolicyDocument.json()))\n .build());\n\n var appsyncMutationRoleAttachment = new RolePolicyAttachment(\"appsyncMutationRoleAttachment\", RolePolicyAttachmentArgs.builder()\n .policyArn(appsyncMutationRolePolicy.arn())\n .role(appsyncMutationRole.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n invokeAppsyncMutation:\n type: aws:cloudwatch:EventRule\n name: invoke_appsync_mutation\n properties:\n name: invoke-appsync-mutation\n description: schedule_batch_test\n scheduleExpression: rate(5 minutes)\n invokeAppsyncMutationEventTarget:\n type: aws:cloudwatch:EventTarget\n name: invoke_appsync_mutation\n properties:\n arn:\n fn::invoke:\n function: std:replace\n arguments:\n text: ${[\"graphql-api\"].arn}\n search: apis\n replace: endpoints/graphql-api\n return: result\n rule: ${invokeAppsyncMutation.id}\n roleArn: ${appsyncMutationRole.arn}\n inputTransformer:\n inputPaths:\n input: $.detail.input\n inputTemplate: |2\n {\n \\\"input\\\": \u003cinput\u003e\n }\n appsyncTarget:\n graphqlOperation: 'mutation TestMutation($input:MutationInput!){testMutation(input: $input) {test}}'\n appsyncMutationRole:\n type: aws:iam:Role\n name: appsync_mutation_role\n properties:\n name: appsync-mutation-role\n assumeRolePolicy: ${appsyncMutationRoleTrust.json}\n appsyncMutationRolePolicy:\n type: aws:iam:Policy\n name: appsync_mutation_role_policy\n properties:\n name: appsync-mutation-role-policy\n policy: ${appsyncMutationRolePolicyDocument.json}\n appsyncMutationRoleAttachment:\n type: aws:iam:RolePolicyAttachment\n name: appsync_mutation_role_attachment\n properties:\n policyArn: ${appsyncMutationRolePolicy.arn}\n role: ${appsyncMutationRole.name}\n graphql-api:\n type: aws:appsync:GraphQLApi\n properties:\n name: api\n authenticationType: AWS_IAM\n schema: |2\n schema {\n mutation: Mutation\n query: Query\n }\n\n type Query {\n testQuery: String\n }\n\n type Mutation {\n testMutation(input: MutationInput!): TestMutationResult\n }\n\n type TestMutationResult {\n test: String\n }\n\n input MutationInput {\n testInput: String\n }\nvariables:\n appsyncMutationRoleTrust:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - actions:\n - sts:AssumeRole\n principals:\n - type: Service\n identifiers:\n - events.amazonaws.com\n appsyncMutationRolePolicyDocument:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - actions:\n - appsync:GraphQL\n effect: Allow\n resources:\n - ${[\"graphql-api\"].arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n* `event_bus_name` (String) Event bus name for the target.\n\n* `rule` (String) Rule name for the target.\n\n* `target_id` (String) Target ID.\n\n#### Optional\n\n* `account_id` (String) AWS Account where this resource is managed.\n\n* `region` (String) Region where this resource is managed.\n\nUsing `pulumi import`, import EventBridge Targets using `event_bus_name/rule-name/target-id` (if you omit `event_bus_name`, the `default` event bus will be used). For example:\n\n console\n\n% pulumi import aws_cloudwatch_event_target.example rule-name/target-id\n\n", "properties": { "appsyncTarget": { "$ref": "#/types/aws:cloudwatch/EventTargetAppsyncTarget:EventTargetAppsyncTarget", @@ -231751,7 +231751,7 @@ } }, "aws:cloudwatch/metricAlarm:MetricAlarm": { - "description": "Provides a CloudWatch Metric Alarm resource.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst foobar = new aws.cloudwatch.MetricAlarm(\"foobar\", {\n name: \"test-foobar5\",\n comparisonOperator: \"GreaterThanOrEqualToThreshold\",\n evaluationPeriods: 2,\n metricName: \"CPUUtilization\",\n namespace: \"AWS/EC2\",\n period: 120,\n statistic: \"Average\",\n threshold: 80,\n alarmDescription: \"This metric monitors ec2 cpu utilization\",\n insufficientDataActions: [],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nfoobar = aws.cloudwatch.MetricAlarm(\"foobar\",\n name=\"test-foobar5\",\n comparison_operator=\"GreaterThanOrEqualToThreshold\",\n evaluation_periods=2,\n metric_name=\"CPUUtilization\",\n namespace=\"AWS/EC2\",\n period=120,\n statistic=\"Average\",\n threshold=80,\n alarm_description=\"This metric monitors ec2 cpu utilization\",\n insufficient_data_actions=[])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var foobar = new Aws.CloudWatch.MetricAlarm(\"foobar\", new()\n {\n Name = \"test-foobar5\",\n ComparisonOperator = \"GreaterThanOrEqualToThreshold\",\n EvaluationPeriods = 2,\n MetricName = \"CPUUtilization\",\n Namespace = \"AWS/EC2\",\n Period = 120,\n Statistic = \"Average\",\n Threshold = 80,\n AlarmDescription = \"This metric monitors ec2 cpu utilization\",\n InsufficientDataActions = new[] {},\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudwatch.NewMetricAlarm(ctx, \"foobar\", \u0026cloudwatch.MetricAlarmArgs{\n\t\t\tName: pulumi.String(\"test-foobar5\"),\n\t\t\tComparisonOperator: pulumi.String(\"GreaterThanOrEqualToThreshold\"),\n\t\t\tEvaluationPeriods: pulumi.Int(2),\n\t\t\tMetricName: pulumi.String(\"CPUUtilization\"),\n\t\t\tNamespace: pulumi.String(\"AWS/EC2\"),\n\t\t\tPeriod: pulumi.Int(120),\n\t\t\tStatistic: pulumi.String(\"Average\"),\n\t\t\tThreshold: pulumi.Float64(80),\n\t\t\tAlarmDescription: pulumi.String(\"This metric monitors ec2 cpu utilization\"),\n\t\t\tInsufficientDataActions: pulumi.Array{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.MetricAlarm;\nimport com.pulumi.aws.cloudwatch.MetricAlarmArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var foobar = new MetricAlarm(\"foobar\", MetricAlarmArgs.builder()\n .name(\"test-foobar5\")\n .comparisonOperator(\"GreaterThanOrEqualToThreshold\")\n .evaluationPeriods(2)\n .metricName(\"CPUUtilization\")\n .namespace(\"AWS/EC2\")\n .period(120)\n .statistic(\"Average\")\n .threshold(80.0)\n .alarmDescription(\"This metric monitors ec2 cpu utilization\")\n .insufficientDataActions()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: aws:cloudwatch:MetricAlarm\n properties:\n name: test-foobar5\n comparisonOperator: GreaterThanOrEqualToThreshold\n evaluationPeriods: 2\n metricName: CPUUtilization\n namespace: AWS/EC2\n period: 120\n statistic: Average\n threshold: 80\n alarmDescription: This metric monitors ec2 cpu utilization\n insufficientDataActions: []\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Scaling Policies\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst bat = new aws.autoscaling.Policy(\"bat\", {\n name: \"foobar3-test\",\n scalingAdjustment: 4,\n adjustmentType: \"ChangeInCapacity\",\n cooldown: 300,\n autoscalingGroupName: bar.name,\n});\nconst batMetricAlarm = new aws.cloudwatch.MetricAlarm(\"bat\", {\n name: \"test-foobar5\",\n comparisonOperator: \"GreaterThanOrEqualToThreshold\",\n evaluationPeriods: 2,\n metricName: \"CPUUtilization\",\n namespace: \"AWS/EC2\",\n period: 120,\n statistic: \"Average\",\n threshold: 80,\n dimensions: {\n AutoScalingGroupName: bar.name,\n },\n alarmDescription: \"This metric monitors ec2 cpu utilization\",\n alarmActions: [bat.arn],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nbat = aws.autoscaling.Policy(\"bat\",\n name=\"foobar3-test\",\n scaling_adjustment=4,\n adjustment_type=\"ChangeInCapacity\",\n cooldown=300,\n autoscaling_group_name=bar[\"name\"])\nbat_metric_alarm = aws.cloudwatch.MetricAlarm(\"bat\",\n name=\"test-foobar5\",\n comparison_operator=\"GreaterThanOrEqualToThreshold\",\n evaluation_periods=2,\n metric_name=\"CPUUtilization\",\n namespace=\"AWS/EC2\",\n period=120,\n statistic=\"Average\",\n threshold=80,\n dimensions={\n \"AutoScalingGroupName\": bar[\"name\"],\n },\n alarm_description=\"This metric monitors ec2 cpu utilization\",\n alarm_actions=[bat.arn])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bat = new Aws.AutoScaling.Policy(\"bat\", new()\n {\n Name = \"foobar3-test\",\n ScalingAdjustment = 4,\n AdjustmentType = \"ChangeInCapacity\",\n Cooldown = 300,\n AutoscalingGroupName = bar.Name,\n });\n\n var batMetricAlarm = new Aws.CloudWatch.MetricAlarm(\"bat\", new()\n {\n Name = \"test-foobar5\",\n ComparisonOperator = \"GreaterThanOrEqualToThreshold\",\n EvaluationPeriods = 2,\n MetricName = \"CPUUtilization\",\n Namespace = \"AWS/EC2\",\n Period = 120,\n Statistic = \"Average\",\n Threshold = 80,\n Dimensions = \n {\n { \"AutoScalingGroupName\", bar.Name },\n },\n AlarmDescription = \"This metric monitors ec2 cpu utilization\",\n AlarmActions = new[]\n {\n bat.Arn,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/autoscaling\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbat, err := autoscaling.NewPolicy(ctx, \"bat\", \u0026autoscaling.PolicyArgs{\n\t\t\tName: pulumi.String(\"foobar3-test\"),\n\t\t\tScalingAdjustment: pulumi.Int(4),\n\t\t\tAdjustmentType: pulumi.String(\"ChangeInCapacity\"),\n\t\t\tCooldown: pulumi.Int(300),\n\t\t\tAutoscalingGroupName: pulumi.Any(bar.Name),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewMetricAlarm(ctx, \"bat\", \u0026cloudwatch.MetricAlarmArgs{\n\t\t\tName: pulumi.String(\"test-foobar5\"),\n\t\t\tComparisonOperator: pulumi.String(\"GreaterThanOrEqualToThreshold\"),\n\t\t\tEvaluationPeriods: pulumi.Int(2),\n\t\t\tMetricName: pulumi.String(\"CPUUtilization\"),\n\t\t\tNamespace: pulumi.String(\"AWS/EC2\"),\n\t\t\tPeriod: pulumi.Int(120),\n\t\t\tStatistic: pulumi.String(\"Average\"),\n\t\t\tThreshold: pulumi.Float64(80),\n\t\t\tDimensions: pulumi.StringMap{\n\t\t\t\t\"AutoScalingGroupName\": pulumi.Any(bar.Name),\n\t\t\t},\n\t\t\tAlarmDescription: pulumi.String(\"This metric monitors ec2 cpu utilization\"),\n\t\t\tAlarmActions: pulumi.Array{\n\t\t\t\tbat.Arn,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.autoscaling.Policy;\nimport com.pulumi.aws.autoscaling.PolicyArgs;\nimport com.pulumi.aws.cloudwatch.MetricAlarm;\nimport com.pulumi.aws.cloudwatch.MetricAlarmArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bat = new Policy(\"bat\", PolicyArgs.builder()\n .name(\"foobar3-test\")\n .scalingAdjustment(4)\n .adjustmentType(\"ChangeInCapacity\")\n .cooldown(300)\n .autoscalingGroupName(bar.name())\n .build());\n\n var batMetricAlarm = new MetricAlarm(\"batMetricAlarm\", MetricAlarmArgs.builder()\n .name(\"test-foobar5\")\n .comparisonOperator(\"GreaterThanOrEqualToThreshold\")\n .evaluationPeriods(2)\n .metricName(\"CPUUtilization\")\n .namespace(\"AWS/EC2\")\n .period(120)\n .statistic(\"Average\")\n .threshold(80.0)\n .dimensions(Map.of(\"AutoScalingGroupName\", bar.name()))\n .alarmDescription(\"This metric monitors ec2 cpu utilization\")\n .alarmActions(bat.arn())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bat:\n type: aws:autoscaling:Policy\n properties:\n name: foobar3-test\n scalingAdjustment: 4\n adjustmentType: ChangeInCapacity\n cooldown: 300\n autoscalingGroupName: ${bar.name}\n batMetricAlarm:\n type: aws:cloudwatch:MetricAlarm\n name: bat\n properties:\n name: test-foobar5\n comparisonOperator: GreaterThanOrEqualToThreshold\n evaluationPeriods: 2\n metricName: CPUUtilization\n namespace: AWS/EC2\n period: 120\n statistic: Average\n threshold: 80\n dimensions:\n AutoScalingGroupName: ${bar.name}\n alarmDescription: This metric monitors ec2 cpu utilization\n alarmActions:\n - ${bat.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With a Metrics Math Expression\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst foobar = new aws.cloudwatch.MetricAlarm(\"foobar\", {\n name: \"test-foobar\",\n comparisonOperator: \"GreaterThanOrEqualToThreshold\",\n evaluationPeriods: 2,\n threshold: 10,\n alarmDescription: \"Request error rate has exceeded 10%\",\n insufficientDataActions: [],\n metricQueries: [\n {\n id: \"e1\",\n expression: \"m2/m1*100\",\n label: \"Error Rate\",\n returnData: true,\n },\n {\n id: \"m1\",\n metric: {\n metricName: \"RequestCount\",\n namespace: \"AWS/ApplicationELB\",\n period: 120,\n stat: \"Sum\",\n unit: \"Count\",\n dimensions: {\n LoadBalancer: \"app/web\",\n },\n },\n },\n {\n id: \"m2\",\n metric: {\n metricName: \"HTTPCode_ELB_5XX_Count\",\n namespace: \"AWS/ApplicationELB\",\n period: 120,\n stat: \"Sum\",\n unit: \"Count\",\n dimensions: {\n LoadBalancer: \"app/web\",\n },\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nfoobar = aws.cloudwatch.MetricAlarm(\"foobar\",\n name=\"test-foobar\",\n comparison_operator=\"GreaterThanOrEqualToThreshold\",\n evaluation_periods=2,\n threshold=10,\n alarm_description=\"Request error rate has exceeded 10%\",\n insufficient_data_actions=[],\n metric_queries=[\n {\n \"id\": \"e1\",\n \"expression\": \"m2/m1*100\",\n \"label\": \"Error Rate\",\n \"return_data\": True,\n },\n {\n \"id\": \"m1\",\n \"metric\": {\n \"metric_name\": \"RequestCount\",\n \"namespace\": \"AWS/ApplicationELB\",\n \"period\": 120,\n \"stat\": \"Sum\",\n \"unit\": \"Count\",\n \"dimensions\": {\n \"LoadBalancer\": \"app/web\",\n },\n },\n },\n {\n \"id\": \"m2\",\n \"metric\": {\n \"metric_name\": \"HTTPCode_ELB_5XX_Count\",\n \"namespace\": \"AWS/ApplicationELB\",\n \"period\": 120,\n \"stat\": \"Sum\",\n \"unit\": \"Count\",\n \"dimensions\": {\n \"LoadBalancer\": \"app/web\",\n },\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var foobar = new Aws.CloudWatch.MetricAlarm(\"foobar\", new()\n {\n Name = \"test-foobar\",\n ComparisonOperator = \"GreaterThanOrEqualToThreshold\",\n EvaluationPeriods = 2,\n Threshold = 10,\n AlarmDescription = \"Request error rate has exceeded 10%\",\n InsufficientDataActions = new[] {},\n MetricQueries = new[]\n {\n new Aws.CloudWatch.Inputs.MetricAlarmMetricQueryArgs\n {\n Id = \"e1\",\n Expression = \"m2/m1*100\",\n Label = \"Error Rate\",\n ReturnData = true,\n },\n new Aws.CloudWatch.Inputs.MetricAlarmMetricQueryArgs\n {\n Id = \"m1\",\n Metric = new Aws.CloudWatch.Inputs.MetricAlarmMetricQueryMetricArgs\n {\n MetricName = \"RequestCount\",\n Namespace = \"AWS/ApplicationELB\",\n Period = 120,\n Stat = \"Sum\",\n Unit = \"Count\",\n Dimensions = \n {\n { \"LoadBalancer\", \"app/web\" },\n },\n },\n },\n new Aws.CloudWatch.Inputs.MetricAlarmMetricQueryArgs\n {\n Id = \"m2\",\n Metric = new Aws.CloudWatch.Inputs.MetricAlarmMetricQueryMetricArgs\n {\n MetricName = \"HTTPCode_ELB_5XX_Count\",\n Namespace = \"AWS/ApplicationELB\",\n Period = 120,\n Stat = \"Sum\",\n Unit = \"Count\",\n Dimensions = \n {\n { \"LoadBalancer\", \"app/web\" },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudwatch.NewMetricAlarm(ctx, \"foobar\", \u0026cloudwatch.MetricAlarmArgs{\n\t\t\tName: pulumi.String(\"test-foobar\"),\n\t\t\tComparisonOperator: pulumi.String(\"GreaterThanOrEqualToThreshold\"),\n\t\t\tEvaluationPeriods: pulumi.Int(2),\n\t\t\tThreshold: pulumi.Float64(10),\n\t\t\tAlarmDescription: pulumi.String(\"Request error rate has exceeded 10%\"),\n\t\t\tInsufficientDataActions: pulumi.Array{},\n\t\t\tMetricQueries: cloudwatch.MetricAlarmMetricQueryArray{\n\t\t\t\t\u0026cloudwatch.MetricAlarmMetricQueryArgs{\n\t\t\t\t\tId: pulumi.String(\"e1\"),\n\t\t\t\t\tExpression: pulumi.String(\"m2/m1*100\"),\n\t\t\t\t\tLabel: pulumi.String(\"Error Rate\"),\n\t\t\t\t\tReturnData: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026cloudwatch.MetricAlarmMetricQueryArgs{\n\t\t\t\t\tId: pulumi.String(\"m1\"),\n\t\t\t\t\tMetric: \u0026cloudwatch.MetricAlarmMetricQueryMetricArgs{\n\t\t\t\t\t\tMetricName: pulumi.String(\"RequestCount\"),\n\t\t\t\t\t\tNamespace: pulumi.String(\"AWS/ApplicationELB\"),\n\t\t\t\t\t\tPeriod: pulumi.Int(120),\n\t\t\t\t\t\tStat: pulumi.String(\"Sum\"),\n\t\t\t\t\t\tUnit: pulumi.String(\"Count\"),\n\t\t\t\t\t\tDimensions: pulumi.StringMap{\n\t\t\t\t\t\t\t\"LoadBalancer\": pulumi.String(\"app/web\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026cloudwatch.MetricAlarmMetricQueryArgs{\n\t\t\t\t\tId: pulumi.String(\"m2\"),\n\t\t\t\t\tMetric: \u0026cloudwatch.MetricAlarmMetricQueryMetricArgs{\n\t\t\t\t\t\tMetricName: pulumi.String(\"HTTPCode_ELB_5XX_Count\"),\n\t\t\t\t\t\tNamespace: pulumi.String(\"AWS/ApplicationELB\"),\n\t\t\t\t\t\tPeriod: pulumi.Int(120),\n\t\t\t\t\t\tStat: pulumi.String(\"Sum\"),\n\t\t\t\t\t\tUnit: pulumi.String(\"Count\"),\n\t\t\t\t\t\tDimensions: pulumi.StringMap{\n\t\t\t\t\t\t\t\"LoadBalancer\": pulumi.String(\"app/web\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.MetricAlarm;\nimport com.pulumi.aws.cloudwatch.MetricAlarmArgs;\nimport com.pulumi.aws.cloudwatch.inputs.MetricAlarmMetricQueryArgs;\nimport com.pulumi.aws.cloudwatch.inputs.MetricAlarmMetricQueryMetricArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var foobar = new MetricAlarm(\"foobar\", MetricAlarmArgs.builder()\n .name(\"test-foobar\")\n .comparisonOperator(\"GreaterThanOrEqualToThreshold\")\n .evaluationPeriods(2)\n .threshold(10.0)\n .alarmDescription(\"Request error rate has exceeded 10%\")\n .insufficientDataActions()\n .metricQueries( \n MetricAlarmMetricQueryArgs.builder()\n .id(\"e1\")\n .expression(\"m2/m1*100\")\n .label(\"Error Rate\")\n .returnData(true)\n .build(),\n MetricAlarmMetricQueryArgs.builder()\n .id(\"m1\")\n .metric(MetricAlarmMetricQueryMetricArgs.builder()\n .metricName(\"RequestCount\")\n .namespace(\"AWS/ApplicationELB\")\n .period(120)\n .stat(\"Sum\")\n .unit(\"Count\")\n .dimensions(Map.of(\"LoadBalancer\", \"app/web\"))\n .build())\n .build(),\n MetricAlarmMetricQueryArgs.builder()\n .id(\"m2\")\n .metric(MetricAlarmMetricQueryMetricArgs.builder()\n .metricName(\"HTTPCode_ELB_5XX_Count\")\n .namespace(\"AWS/ApplicationELB\")\n .period(120)\n .stat(\"Sum\")\n .unit(\"Count\")\n .dimensions(Map.of(\"LoadBalancer\", \"app/web\"))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: aws:cloudwatch:MetricAlarm\n properties:\n name: test-foobar\n comparisonOperator: GreaterThanOrEqualToThreshold\n evaluationPeriods: 2\n threshold: 10\n alarmDescription: Request error rate has exceeded 10%\n insufficientDataActions: []\n metricQueries:\n - id: e1\n expression: m2/m1*100\n label: Error Rate\n returnData: 'true'\n - id: m1\n metric:\n metricName: RequestCount\n namespace: AWS/ApplicationELB\n period: 120\n stat: Sum\n unit: Count\n dimensions:\n LoadBalancer: app/web\n - id: m2\n metric:\n metricName: HTTPCode_ELB_5XX_Count\n namespace: AWS/ApplicationELB\n period: 120\n stat: Sum\n unit: Count\n dimensions:\n LoadBalancer: app/web\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst xxAnomalyDetection = new aws.cloudwatch.MetricAlarm(\"xx_anomaly_detection\", {\n name: \"test-foobar\",\n comparisonOperator: \"GreaterThanUpperThreshold\",\n evaluationPeriods: 2,\n thresholdMetricId: \"e1\",\n alarmDescription: \"This metric monitors ec2 cpu utilization\",\n insufficientDataActions: [],\n metricQueries: [\n {\n id: \"e1\",\n returnData: true,\n expression: \"ANOMALY_DETECTION_BAND(m1)\",\n label: \"CPUUtilization (Expected)\",\n },\n {\n id: \"m1\",\n returnData: true,\n metric: {\n metricName: \"CPUUtilization\",\n namespace: \"AWS/EC2\",\n period: 120,\n stat: \"Average\",\n unit: \"Count\",\n dimensions: {\n InstanceId: \"i-abc123\",\n },\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nxx_anomaly_detection = aws.cloudwatch.MetricAlarm(\"xx_anomaly_detection\",\n name=\"test-foobar\",\n comparison_operator=\"GreaterThanUpperThreshold\",\n evaluation_periods=2,\n threshold_metric_id=\"e1\",\n alarm_description=\"This metric monitors ec2 cpu utilization\",\n insufficient_data_actions=[],\n metric_queries=[\n {\n \"id\": \"e1\",\n \"return_data\": True,\n \"expression\": \"ANOMALY_DETECTION_BAND(m1)\",\n \"label\": \"CPUUtilization (Expected)\",\n },\n {\n \"id\": \"m1\",\n \"return_data\": True,\n \"metric\": {\n \"metric_name\": \"CPUUtilization\",\n \"namespace\": \"AWS/EC2\",\n \"period\": 120,\n \"stat\": \"Average\",\n \"unit\": \"Count\",\n \"dimensions\": {\n \"InstanceId\": \"i-abc123\",\n },\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var xxAnomalyDetection = new Aws.CloudWatch.MetricAlarm(\"xx_anomaly_detection\", new()\n {\n Name = \"test-foobar\",\n ComparisonOperator = \"GreaterThanUpperThreshold\",\n EvaluationPeriods = 2,\n ThresholdMetricId = \"e1\",\n AlarmDescription = \"This metric monitors ec2 cpu utilization\",\n InsufficientDataActions = new[] {},\n MetricQueries = new[]\n {\n new Aws.CloudWatch.Inputs.MetricAlarmMetricQueryArgs\n {\n Id = \"e1\",\n ReturnData = true,\n Expression = \"ANOMALY_DETECTION_BAND(m1)\",\n Label = \"CPUUtilization (Expected)\",\n },\n new Aws.CloudWatch.Inputs.MetricAlarmMetricQueryArgs\n {\n Id = \"m1\",\n ReturnData = true,\n Metric = new Aws.CloudWatch.Inputs.MetricAlarmMetricQueryMetricArgs\n {\n MetricName = \"CPUUtilization\",\n Namespace = \"AWS/EC2\",\n Period = 120,\n Stat = \"Average\",\n Unit = \"Count\",\n Dimensions = \n {\n { \"InstanceId\", \"i-abc123\" },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudwatch.NewMetricAlarm(ctx, \"xx_anomaly_detection\", \u0026cloudwatch.MetricAlarmArgs{\n\t\t\tName: pulumi.String(\"test-foobar\"),\n\t\t\tComparisonOperator: pulumi.String(\"GreaterThanUpperThreshold\"),\n\t\t\tEvaluationPeriods: pulumi.Int(2),\n\t\t\tThresholdMetricId: pulumi.String(\"e1\"),\n\t\t\tAlarmDescription: pulumi.String(\"This metric monitors ec2 cpu utilization\"),\n\t\t\tInsufficientDataActions: pulumi.Array{},\n\t\t\tMetricQueries: cloudwatch.MetricAlarmMetricQueryArray{\n\t\t\t\t\u0026cloudwatch.MetricAlarmMetricQueryArgs{\n\t\t\t\t\tId: pulumi.String(\"e1\"),\n\t\t\t\t\tReturnData: pulumi.Bool(true),\n\t\t\t\t\tExpression: pulumi.String(\"ANOMALY_DETECTION_BAND(m1)\"),\n\t\t\t\t\tLabel: pulumi.String(\"CPUUtilization (Expected)\"),\n\t\t\t\t},\n\t\t\t\t\u0026cloudwatch.MetricAlarmMetricQueryArgs{\n\t\t\t\t\tId: pulumi.String(\"m1\"),\n\t\t\t\t\tReturnData: pulumi.Bool(true),\n\t\t\t\t\tMetric: \u0026cloudwatch.MetricAlarmMetricQueryMetricArgs{\n\t\t\t\t\t\tMetricName: pulumi.String(\"CPUUtilization\"),\n\t\t\t\t\t\tNamespace: pulumi.String(\"AWS/EC2\"),\n\t\t\t\t\t\tPeriod: pulumi.Int(120),\n\t\t\t\t\t\tStat: pulumi.String(\"Average\"),\n\t\t\t\t\t\tUnit: pulumi.String(\"Count\"),\n\t\t\t\t\t\tDimensions: pulumi.StringMap{\n\t\t\t\t\t\t\t\"InstanceId\": pulumi.String(\"i-abc123\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.MetricAlarm;\nimport com.pulumi.aws.cloudwatch.MetricAlarmArgs;\nimport com.pulumi.aws.cloudwatch.inputs.MetricAlarmMetricQueryArgs;\nimport com.pulumi.aws.cloudwatch.inputs.MetricAlarmMetricQueryMetricArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var xxAnomalyDetection = new MetricAlarm(\"xxAnomalyDetection\", MetricAlarmArgs.builder()\n .name(\"test-foobar\")\n .comparisonOperator(\"GreaterThanUpperThreshold\")\n .evaluationPeriods(2)\n .thresholdMetricId(\"e1\")\n .alarmDescription(\"This metric monitors ec2 cpu utilization\")\n .insufficientDataActions()\n .metricQueries( \n MetricAlarmMetricQueryArgs.builder()\n .id(\"e1\")\n .returnData(true)\n .expression(\"ANOMALY_DETECTION_BAND(m1)\")\n .label(\"CPUUtilization (Expected)\")\n .build(),\n MetricAlarmMetricQueryArgs.builder()\n .id(\"m1\")\n .returnData(true)\n .metric(MetricAlarmMetricQueryMetricArgs.builder()\n .metricName(\"CPUUtilization\")\n .namespace(\"AWS/EC2\")\n .period(120)\n .stat(\"Average\")\n .unit(\"Count\")\n .dimensions(Map.of(\"InstanceId\", \"i-abc123\"))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n xxAnomalyDetection:\n type: aws:cloudwatch:MetricAlarm\n name: xx_anomaly_detection\n properties:\n name: test-foobar\n comparisonOperator: GreaterThanUpperThreshold\n evaluationPeriods: 2\n thresholdMetricId: e1\n alarmDescription: This metric monitors ec2 cpu utilization\n insufficientDataActions: []\n metricQueries:\n - id: e1\n returnData: true\n expression: ANOMALY_DETECTION_BAND(m1)\n label: CPUUtilization (Expected)\n - id: m1\n returnData: true\n metric:\n metricName: CPUUtilization\n namespace: AWS/EC2\n period: 120\n stat: Average\n unit: Count\n dimensions:\n InstanceId: i-abc123\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With a Metrics Insights Query\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.cloudwatch.MetricAlarm(\"example\", {\n name: \"example-alarm\",\n alarmDescription: \"Triggers if the smallest per-instance maximum load during the evaluation period exceeds the threshold\",\n comparisonOperator: \"GreaterThanThreshold\",\n evaluationPeriods: 1,\n threshold: 0.6,\n treatMissingData: \"notBreaching\",\n metricQueries: [{\n id: \"q1\",\n expression: `SELECT\n MAX(DBLoadRelativeToNumVCPUs)\nFROM SCHEMA(\"AWS/RDS\", DBInstanceIdentifier)\nWHERE DBInstanceIdentifier != 'example-rds-instance'\nGROUP BY DBInstanceIdentifier\nORDER BY MIN() ASC\nLIMIT 1\n`,\n period: 60,\n returnData: true,\n label: \"Max DB Load of the Least-Loaded RDS Instance\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.cloudwatch.MetricAlarm(\"example\",\n name=\"example-alarm\",\n alarm_description=\"Triggers if the smallest per-instance maximum load during the evaluation period exceeds the threshold\",\n comparison_operator=\"GreaterThanThreshold\",\n evaluation_periods=1,\n threshold=0.6,\n treat_missing_data=\"notBreaching\",\n metric_queries=[{\n \"id\": \"q1\",\n \"expression\": \"\"\"SELECT\n MAX(DBLoadRelativeToNumVCPUs)\nFROM SCHEMA(\"AWS/RDS\", DBInstanceIdentifier)\nWHERE DBInstanceIdentifier != 'example-rds-instance'\nGROUP BY DBInstanceIdentifier\nORDER BY MIN() ASC\nLIMIT 1\n\"\"\",\n \"period\": 60,\n \"return_data\": True,\n \"label\": \"Max DB Load of the Least-Loaded RDS Instance\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.CloudWatch.MetricAlarm(\"example\", new()\n {\n Name = \"example-alarm\",\n AlarmDescription = \"Triggers if the smallest per-instance maximum load during the evaluation period exceeds the threshold\",\n ComparisonOperator = \"GreaterThanThreshold\",\n EvaluationPeriods = 1,\n Threshold = 0.6,\n TreatMissingData = \"notBreaching\",\n MetricQueries = new[]\n {\n new Aws.CloudWatch.Inputs.MetricAlarmMetricQueryArgs\n {\n Id = \"q1\",\n Expression = @\"SELECT\n MAX(DBLoadRelativeToNumVCPUs)\nFROM SCHEMA(\"\"AWS/RDS\"\", DBInstanceIdentifier)\nWHERE DBInstanceIdentifier != 'example-rds-instance'\nGROUP BY DBInstanceIdentifier\nORDER BY MIN() ASC\nLIMIT 1\n\",\n Period = 60,\n ReturnData = true,\n Label = \"Max DB Load of the Least-Loaded RDS Instance\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudwatch.NewMetricAlarm(ctx, \"example\", \u0026cloudwatch.MetricAlarmArgs{\n\t\t\tName: pulumi.String(\"example-alarm\"),\n\t\t\tAlarmDescription: pulumi.String(\"Triggers if the smallest per-instance maximum load during the evaluation period exceeds the threshold\"),\n\t\t\tComparisonOperator: pulumi.String(\"GreaterThanThreshold\"),\n\t\t\tEvaluationPeriods: pulumi.Int(1),\n\t\t\tThreshold: pulumi.Float64(0.6),\n\t\t\tTreatMissingData: pulumi.String(\"notBreaching\"),\n\t\t\tMetricQueries: cloudwatch.MetricAlarmMetricQueryArray{\n\t\t\t\t\u0026cloudwatch.MetricAlarmMetricQueryArgs{\n\t\t\t\t\tId: pulumi.String(\"q1\"),\n\t\t\t\t\tExpression: pulumi.String(`SELECT\n MAX(DBLoadRelativeToNumVCPUs)\nFROM SCHEMA(\"AWS/RDS\", DBInstanceIdentifier)\nWHERE DBInstanceIdentifier != 'example-rds-instance'\nGROUP BY DBInstanceIdentifier\nORDER BY MIN() ASC\nLIMIT 1\n`),\n\t\t\t\t\tPeriod: pulumi.Int(60),\n\t\t\t\t\tReturnData: pulumi.Bool(true),\n\t\t\t\t\tLabel: pulumi.String(\"Max DB Load of the Least-Loaded RDS Instance\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.MetricAlarm;\nimport com.pulumi.aws.cloudwatch.MetricAlarmArgs;\nimport com.pulumi.aws.cloudwatch.inputs.MetricAlarmMetricQueryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new MetricAlarm(\"example\", MetricAlarmArgs.builder()\n .name(\"example-alarm\")\n .alarmDescription(\"Triggers if the smallest per-instance maximum load during the evaluation period exceeds the threshold\")\n .comparisonOperator(\"GreaterThanThreshold\")\n .evaluationPeriods(1)\n .threshold(0.6)\n .treatMissingData(\"notBreaching\")\n .metricQueries(MetricAlarmMetricQueryArgs.builder()\n .id(\"q1\")\n .expression(\"\"\"\nSELECT\n MAX(DBLoadRelativeToNumVCPUs)\nFROM SCHEMA(\"AWS/RDS\", DBInstanceIdentifier)\nWHERE DBInstanceIdentifier != 'example-rds-instance'\nGROUP BY DBInstanceIdentifier\nORDER BY MIN() ASC\nLIMIT 1\n \"\"\")\n .period(60)\n .returnData(true)\n .label(\"Max DB Load of the Least-Loaded RDS Instance\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:cloudwatch:MetricAlarm\n properties:\n name: example-alarm\n alarmDescription: Triggers if the smallest per-instance maximum load during the evaluation period exceeds the threshold\n comparisonOperator: GreaterThanThreshold\n evaluationPeriods: 1\n threshold: 0.6\n treatMissingData: notBreaching\n metricQueries:\n - id: q1\n expression: |\n SELECT\n MAX(DBLoadRelativeToNumVCPUs)\n FROM SCHEMA(\"AWS/RDS\", DBInstanceIdentifier)\n WHERE DBInstanceIdentifier != 'example-rds-instance'\n GROUP BY DBInstanceIdentifier\n ORDER BY MIN() ASC\n LIMIT 1\n period: 60\n returnData: true\n label: Max DB Load of the Least-Loaded RDS Instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Monitoring Healthy NLB Hosts with Target Group and NLB\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst nlbHealthyhosts = new aws.cloudwatch.MetricAlarm(\"nlb_healthyhosts\", {\n name: \"alarmname\",\n comparisonOperator: \"LessThanThreshold\",\n evaluationPeriods: 1,\n metricName: \"HealthyHostCount\",\n namespace: \"AWS/NetworkELB\",\n period: 60,\n statistic: \"Average\",\n threshold: logstashServersCount,\n alarmDescription: \"Number of healthy nodes in Target Group\",\n actionsEnabled: true,\n alarmActions: [sns.arn],\n okActions: [sns.arn],\n dimensions: {\n TargetGroup: lb_tg.arnSuffix,\n LoadBalancer: lb.arnSuffix,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nnlb_healthyhosts = aws.cloudwatch.MetricAlarm(\"nlb_healthyhosts\",\n name=\"alarmname\",\n comparison_operator=\"LessThanThreshold\",\n evaluation_periods=1,\n metric_name=\"HealthyHostCount\",\n namespace=\"AWS/NetworkELB\",\n period=60,\n statistic=\"Average\",\n threshold=logstash_servers_count,\n alarm_description=\"Number of healthy nodes in Target Group\",\n actions_enabled=True,\n alarm_actions=[sns[\"arn\"]],\n ok_actions=[sns[\"arn\"]],\n dimensions={\n \"TargetGroup\": lb_tg[\"arnSuffix\"],\n \"LoadBalancer\": lb[\"arnSuffix\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var nlbHealthyhosts = new Aws.CloudWatch.MetricAlarm(\"nlb_healthyhosts\", new()\n {\n Name = \"alarmname\",\n ComparisonOperator = \"LessThanThreshold\",\n EvaluationPeriods = 1,\n MetricName = \"HealthyHostCount\",\n Namespace = \"AWS/NetworkELB\",\n Period = 60,\n Statistic = \"Average\",\n Threshold = logstashServersCount,\n AlarmDescription = \"Number of healthy nodes in Target Group\",\n ActionsEnabled = true,\n AlarmActions = new[]\n {\n sns.Arn,\n },\n OkActions = new[]\n {\n sns.Arn,\n },\n Dimensions = \n {\n { \"TargetGroup\", lb_tg.ArnSuffix },\n { \"LoadBalancer\", lb.ArnSuffix },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudwatch.NewMetricAlarm(ctx, \"nlb_healthyhosts\", \u0026cloudwatch.MetricAlarmArgs{\n\t\t\tName: pulumi.String(\"alarmname\"),\n\t\t\tComparisonOperator: pulumi.String(\"LessThanThreshold\"),\n\t\t\tEvaluationPeriods: pulumi.Int(1),\n\t\t\tMetricName: pulumi.String(\"HealthyHostCount\"),\n\t\t\tNamespace: pulumi.String(\"AWS/NetworkELB\"),\n\t\t\tPeriod: pulumi.Int(60),\n\t\t\tStatistic: pulumi.String(\"Average\"),\n\t\t\tThreshold: pulumi.Any(logstashServersCount),\n\t\t\tAlarmDescription: pulumi.String(\"Number of healthy nodes in Target Group\"),\n\t\t\tActionsEnabled: pulumi.Bool(true),\n\t\t\tAlarmActions: pulumi.Array{\n\t\t\t\tsns.Arn,\n\t\t\t},\n\t\t\tOkActions: pulumi.Array{\n\t\t\t\tsns.Arn,\n\t\t\t},\n\t\t\tDimensions: pulumi.StringMap{\n\t\t\t\t\"TargetGroup\": pulumi.Any(lb_tg.ArnSuffix),\n\t\t\t\t\"LoadBalancer\": pulumi.Any(lb.ArnSuffix),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.MetricAlarm;\nimport com.pulumi.aws.cloudwatch.MetricAlarmArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var nlbHealthyhosts = new MetricAlarm(\"nlbHealthyhosts\", MetricAlarmArgs.builder()\n .name(\"alarmname\")\n .comparisonOperator(\"LessThanThreshold\")\n .evaluationPeriods(1)\n .metricName(\"HealthyHostCount\")\n .namespace(\"AWS/NetworkELB\")\n .period(60)\n .statistic(\"Average\")\n .threshold(logstashServersCount)\n .alarmDescription(\"Number of healthy nodes in Target Group\")\n .actionsEnabled(true)\n .alarmActions(sns.arn())\n .okActions(sns.arn())\n .dimensions(Map.ofEntries(\n Map.entry(\"TargetGroup\", lb_tg.arnSuffix()),\n Map.entry(\"LoadBalancer\", lb.arnSuffix())\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n nlbHealthyhosts:\n type: aws:cloudwatch:MetricAlarm\n name: nlb_healthyhosts\n properties:\n name: alarmname\n comparisonOperator: LessThanThreshold\n evaluationPeriods: 1\n metricName: HealthyHostCount\n namespace: AWS/NetworkELB\n period: 60\n statistic: Average\n threshold: ${logstashServersCount}\n alarmDescription: Number of healthy nodes in Target Group\n actionsEnabled: 'true'\n alarmActions:\n - ${sns.arn}\n okActions:\n - ${sns.arn}\n dimensions:\n TargetGroup: ${[\"lb-tg\"].arnSuffix}\n LoadBalancer: ${lb.arnSuffix}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e **NOTE:** You cannot create a metric alarm consisting of both \u003cspan pulumi-lang-nodejs=\"`statistic`\" pulumi-lang-dotnet=\"`Statistic`\" pulumi-lang-go=\"`statistic`\" pulumi-lang-python=\"`statistic`\" pulumi-lang-yaml=\"`statistic`\" pulumi-lang-java=\"`statistic`\"\u003e`statistic`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`extendedStatistic`\" pulumi-lang-dotnet=\"`ExtendedStatistic`\" pulumi-lang-go=\"`extendedStatistic`\" pulumi-lang-python=\"`extended_statistic`\" pulumi-lang-yaml=\"`extendedStatistic`\" pulumi-lang-java=\"`extendedStatistic`\"\u003e`extended_statistic`\u003c/span\u003e parameters.\nYou must choose one or the other.\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n* `alarm_name` (String) Name of the CloudWatch metric alarm.\n\n#### Optional\n\n* `account_id` (String) AWS Account where this resource is managed.\n\n* `region` (String) Region where this resource is managed.\n\nUsing `pulumi import`, import CloudWatch Metric Alarm using the `alarm_name`. For example:\n\nconsole\n\n% pulumi import aws_cloudwatch_metric_alarm.example alarm-12345\n\n", + "description": "Provides a CloudWatch Metric Alarm resource.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst foobar = new aws.cloudwatch.MetricAlarm(\"foobar\", {\n name: \"test-foobar5\",\n comparisonOperator: \"GreaterThanOrEqualToThreshold\",\n evaluationPeriods: 2,\n metricName: \"CPUUtilization\",\n namespace: \"AWS/EC2\",\n period: 120,\n statistic: \"Average\",\n threshold: 80,\n alarmDescription: \"This metric monitors ec2 cpu utilization\",\n insufficientDataActions: [],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nfoobar = aws.cloudwatch.MetricAlarm(\"foobar\",\n name=\"test-foobar5\",\n comparison_operator=\"GreaterThanOrEqualToThreshold\",\n evaluation_periods=2,\n metric_name=\"CPUUtilization\",\n namespace=\"AWS/EC2\",\n period=120,\n statistic=\"Average\",\n threshold=80,\n alarm_description=\"This metric monitors ec2 cpu utilization\",\n insufficient_data_actions=[])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var foobar = new Aws.CloudWatch.MetricAlarm(\"foobar\", new()\n {\n Name = \"test-foobar5\",\n ComparisonOperator = \"GreaterThanOrEqualToThreshold\",\n EvaluationPeriods = 2,\n MetricName = \"CPUUtilization\",\n Namespace = \"AWS/EC2\",\n Period = 120,\n Statistic = \"Average\",\n Threshold = 80,\n AlarmDescription = \"This metric monitors ec2 cpu utilization\",\n InsufficientDataActions = new[] {},\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudwatch.NewMetricAlarm(ctx, \"foobar\", \u0026cloudwatch.MetricAlarmArgs{\n\t\t\tName: pulumi.String(\"test-foobar5\"),\n\t\t\tComparisonOperator: pulumi.String(\"GreaterThanOrEqualToThreshold\"),\n\t\t\tEvaluationPeriods: pulumi.Int(2),\n\t\t\tMetricName: pulumi.String(\"CPUUtilization\"),\n\t\t\tNamespace: pulumi.String(\"AWS/EC2\"),\n\t\t\tPeriod: pulumi.Int(120),\n\t\t\tStatistic: pulumi.String(\"Average\"),\n\t\t\tThreshold: pulumi.Float64(80),\n\t\t\tAlarmDescription: pulumi.String(\"This metric monitors ec2 cpu utilization\"),\n\t\t\tInsufficientDataActions: pulumi.Array{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.MetricAlarm;\nimport com.pulumi.aws.cloudwatch.MetricAlarmArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var foobar = new MetricAlarm(\"foobar\", MetricAlarmArgs.builder()\n .name(\"test-foobar5\")\n .comparisonOperator(\"GreaterThanOrEqualToThreshold\")\n .evaluationPeriods(2)\n .metricName(\"CPUUtilization\")\n .namespace(\"AWS/EC2\")\n .period(120)\n .statistic(\"Average\")\n .threshold(80.0)\n .alarmDescription(\"This metric monitors ec2 cpu utilization\")\n .insufficientDataActions()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: aws:cloudwatch:MetricAlarm\n properties:\n name: test-foobar5\n comparisonOperator: GreaterThanOrEqualToThreshold\n evaluationPeriods: 2\n metricName: CPUUtilization\n namespace: AWS/EC2\n period: 120\n statistic: Average\n threshold: 80\n alarmDescription: This metric monitors ec2 cpu utilization\n insufficientDataActions: []\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Scaling Policies\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst bat = new aws.autoscaling.Policy(\"bat\", {\n name: \"foobar3-test\",\n scalingAdjustment: 4,\n adjustmentType: \"ChangeInCapacity\",\n cooldown: 300,\n autoscalingGroupName: bar.name,\n});\nconst batMetricAlarm = new aws.cloudwatch.MetricAlarm(\"bat\", {\n name: \"test-foobar5\",\n comparisonOperator: \"GreaterThanOrEqualToThreshold\",\n evaluationPeriods: 2,\n metricName: \"CPUUtilization\",\n namespace: \"AWS/EC2\",\n period: 120,\n statistic: \"Average\",\n threshold: 80,\n dimensions: {\n AutoScalingGroupName: bar.name,\n },\n alarmDescription: \"This metric monitors ec2 cpu utilization\",\n alarmActions: [bat.arn],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nbat = aws.autoscaling.Policy(\"bat\",\n name=\"foobar3-test\",\n scaling_adjustment=4,\n adjustment_type=\"ChangeInCapacity\",\n cooldown=300,\n autoscaling_group_name=bar[\"name\"])\nbat_metric_alarm = aws.cloudwatch.MetricAlarm(\"bat\",\n name=\"test-foobar5\",\n comparison_operator=\"GreaterThanOrEqualToThreshold\",\n evaluation_periods=2,\n metric_name=\"CPUUtilization\",\n namespace=\"AWS/EC2\",\n period=120,\n statistic=\"Average\",\n threshold=80,\n dimensions={\n \"AutoScalingGroupName\": bar[\"name\"],\n },\n alarm_description=\"This metric monitors ec2 cpu utilization\",\n alarm_actions=[bat.arn])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bat = new Aws.AutoScaling.Policy(\"bat\", new()\n {\n Name = \"foobar3-test\",\n ScalingAdjustment = 4,\n AdjustmentType = \"ChangeInCapacity\",\n Cooldown = 300,\n AutoscalingGroupName = bar.Name,\n });\n\n var batMetricAlarm = new Aws.CloudWatch.MetricAlarm(\"bat\", new()\n {\n Name = \"test-foobar5\",\n ComparisonOperator = \"GreaterThanOrEqualToThreshold\",\n EvaluationPeriods = 2,\n MetricName = \"CPUUtilization\",\n Namespace = \"AWS/EC2\",\n Period = 120,\n Statistic = \"Average\",\n Threshold = 80,\n Dimensions = \n {\n { \"AutoScalingGroupName\", bar.Name },\n },\n AlarmDescription = \"This metric monitors ec2 cpu utilization\",\n AlarmActions = new[]\n {\n bat.Arn,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/autoscaling\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbat, err := autoscaling.NewPolicy(ctx, \"bat\", \u0026autoscaling.PolicyArgs{\n\t\t\tName: pulumi.String(\"foobar3-test\"),\n\t\t\tScalingAdjustment: pulumi.Int(4),\n\t\t\tAdjustmentType: pulumi.String(\"ChangeInCapacity\"),\n\t\t\tCooldown: pulumi.Int(300),\n\t\t\tAutoscalingGroupName: pulumi.Any(bar.Name),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewMetricAlarm(ctx, \"bat\", \u0026cloudwatch.MetricAlarmArgs{\n\t\t\tName: pulumi.String(\"test-foobar5\"),\n\t\t\tComparisonOperator: pulumi.String(\"GreaterThanOrEqualToThreshold\"),\n\t\t\tEvaluationPeriods: pulumi.Int(2),\n\t\t\tMetricName: pulumi.String(\"CPUUtilization\"),\n\t\t\tNamespace: pulumi.String(\"AWS/EC2\"),\n\t\t\tPeriod: pulumi.Int(120),\n\t\t\tStatistic: pulumi.String(\"Average\"),\n\t\t\tThreshold: pulumi.Float64(80),\n\t\t\tDimensions: pulumi.StringMap{\n\t\t\t\t\"AutoScalingGroupName\": pulumi.Any(bar.Name),\n\t\t\t},\n\t\t\tAlarmDescription: pulumi.String(\"This metric monitors ec2 cpu utilization\"),\n\t\t\tAlarmActions: pulumi.Array{\n\t\t\t\tbat.Arn,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.autoscaling.Policy;\nimport com.pulumi.aws.autoscaling.PolicyArgs;\nimport com.pulumi.aws.cloudwatch.MetricAlarm;\nimport com.pulumi.aws.cloudwatch.MetricAlarmArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bat = new Policy(\"bat\", PolicyArgs.builder()\n .name(\"foobar3-test\")\n .scalingAdjustment(4)\n .adjustmentType(\"ChangeInCapacity\")\n .cooldown(300)\n .autoscalingGroupName(bar.name())\n .build());\n\n var batMetricAlarm = new MetricAlarm(\"batMetricAlarm\", MetricAlarmArgs.builder()\n .name(\"test-foobar5\")\n .comparisonOperator(\"GreaterThanOrEqualToThreshold\")\n .evaluationPeriods(2)\n .metricName(\"CPUUtilization\")\n .namespace(\"AWS/EC2\")\n .period(120)\n .statistic(\"Average\")\n .threshold(80.0)\n .dimensions(Map.of(\"AutoScalingGroupName\", bar.name()))\n .alarmDescription(\"This metric monitors ec2 cpu utilization\")\n .alarmActions(bat.arn())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bat:\n type: aws:autoscaling:Policy\n properties:\n name: foobar3-test\n scalingAdjustment: 4\n adjustmentType: ChangeInCapacity\n cooldown: 300\n autoscalingGroupName: ${bar.name}\n batMetricAlarm:\n type: aws:cloudwatch:MetricAlarm\n name: bat\n properties:\n name: test-foobar5\n comparisonOperator: GreaterThanOrEqualToThreshold\n evaluationPeriods: 2\n metricName: CPUUtilization\n namespace: AWS/EC2\n period: 120\n statistic: Average\n threshold: 80\n dimensions:\n AutoScalingGroupName: ${bar.name}\n alarmDescription: This metric monitors ec2 cpu utilization\n alarmActions:\n - ${bat.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With a Metrics Math Expression\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst foobar = new aws.cloudwatch.MetricAlarm(\"foobar\", {\n name: \"test-foobar\",\n comparisonOperator: \"GreaterThanOrEqualToThreshold\",\n evaluationPeriods: 2,\n threshold: 10,\n alarmDescription: \"Request error rate has exceeded 10%\",\n insufficientDataActions: [],\n metricQueries: [\n {\n id: \"e1\",\n expression: \"m2/m1*100\",\n label: \"Error Rate\",\n returnData: true,\n },\n {\n id: \"m1\",\n metric: {\n metricName: \"RequestCount\",\n namespace: \"AWS/ApplicationELB\",\n period: 120,\n stat: \"Sum\",\n unit: \"Count\",\n dimensions: {\n LoadBalancer: \"app/web\",\n },\n },\n },\n {\n id: \"m2\",\n metric: {\n metricName: \"HTTPCode_ELB_5XX_Count\",\n namespace: \"AWS/ApplicationELB\",\n period: 120,\n stat: \"Sum\",\n unit: \"Count\",\n dimensions: {\n LoadBalancer: \"app/web\",\n },\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nfoobar = aws.cloudwatch.MetricAlarm(\"foobar\",\n name=\"test-foobar\",\n comparison_operator=\"GreaterThanOrEqualToThreshold\",\n evaluation_periods=2,\n threshold=10,\n alarm_description=\"Request error rate has exceeded 10%\",\n insufficient_data_actions=[],\n metric_queries=[\n {\n \"id\": \"e1\",\n \"expression\": \"m2/m1*100\",\n \"label\": \"Error Rate\",\n \"return_data\": True,\n },\n {\n \"id\": \"m1\",\n \"metric\": {\n \"metric_name\": \"RequestCount\",\n \"namespace\": \"AWS/ApplicationELB\",\n \"period\": 120,\n \"stat\": \"Sum\",\n \"unit\": \"Count\",\n \"dimensions\": {\n \"LoadBalancer\": \"app/web\",\n },\n },\n },\n {\n \"id\": \"m2\",\n \"metric\": {\n \"metric_name\": \"HTTPCode_ELB_5XX_Count\",\n \"namespace\": \"AWS/ApplicationELB\",\n \"period\": 120,\n \"stat\": \"Sum\",\n \"unit\": \"Count\",\n \"dimensions\": {\n \"LoadBalancer\": \"app/web\",\n },\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var foobar = new Aws.CloudWatch.MetricAlarm(\"foobar\", new()\n {\n Name = \"test-foobar\",\n ComparisonOperator = \"GreaterThanOrEqualToThreshold\",\n EvaluationPeriods = 2,\n Threshold = 10,\n AlarmDescription = \"Request error rate has exceeded 10%\",\n InsufficientDataActions = new[] {},\n MetricQueries = new[]\n {\n new Aws.CloudWatch.Inputs.MetricAlarmMetricQueryArgs\n {\n Id = \"e1\",\n Expression = \"m2/m1*100\",\n Label = \"Error Rate\",\n ReturnData = true,\n },\n new Aws.CloudWatch.Inputs.MetricAlarmMetricQueryArgs\n {\n Id = \"m1\",\n Metric = new Aws.CloudWatch.Inputs.MetricAlarmMetricQueryMetricArgs\n {\n MetricName = \"RequestCount\",\n Namespace = \"AWS/ApplicationELB\",\n Period = 120,\n Stat = \"Sum\",\n Unit = \"Count\",\n Dimensions = \n {\n { \"LoadBalancer\", \"app/web\" },\n },\n },\n },\n new Aws.CloudWatch.Inputs.MetricAlarmMetricQueryArgs\n {\n Id = \"m2\",\n Metric = new Aws.CloudWatch.Inputs.MetricAlarmMetricQueryMetricArgs\n {\n MetricName = \"HTTPCode_ELB_5XX_Count\",\n Namespace = \"AWS/ApplicationELB\",\n Period = 120,\n Stat = \"Sum\",\n Unit = \"Count\",\n Dimensions = \n {\n { \"LoadBalancer\", \"app/web\" },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudwatch.NewMetricAlarm(ctx, \"foobar\", \u0026cloudwatch.MetricAlarmArgs{\n\t\t\tName: pulumi.String(\"test-foobar\"),\n\t\t\tComparisonOperator: pulumi.String(\"GreaterThanOrEqualToThreshold\"),\n\t\t\tEvaluationPeriods: pulumi.Int(2),\n\t\t\tThreshold: pulumi.Float64(10),\n\t\t\tAlarmDescription: pulumi.String(\"Request error rate has exceeded 10%\"),\n\t\t\tInsufficientDataActions: pulumi.Array{},\n\t\t\tMetricQueries: cloudwatch.MetricAlarmMetricQueryArray{\n\t\t\t\t\u0026cloudwatch.MetricAlarmMetricQueryArgs{\n\t\t\t\t\tId: pulumi.String(\"e1\"),\n\t\t\t\t\tExpression: pulumi.String(\"m2/m1*100\"),\n\t\t\t\t\tLabel: pulumi.String(\"Error Rate\"),\n\t\t\t\t\tReturnData: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026cloudwatch.MetricAlarmMetricQueryArgs{\n\t\t\t\t\tId: pulumi.String(\"m1\"),\n\t\t\t\t\tMetric: \u0026cloudwatch.MetricAlarmMetricQueryMetricArgs{\n\t\t\t\t\t\tMetricName: pulumi.String(\"RequestCount\"),\n\t\t\t\t\t\tNamespace: pulumi.String(\"AWS/ApplicationELB\"),\n\t\t\t\t\t\tPeriod: pulumi.Int(120),\n\t\t\t\t\t\tStat: pulumi.String(\"Sum\"),\n\t\t\t\t\t\tUnit: pulumi.String(\"Count\"),\n\t\t\t\t\t\tDimensions: pulumi.StringMap{\n\t\t\t\t\t\t\t\"LoadBalancer\": pulumi.String(\"app/web\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026cloudwatch.MetricAlarmMetricQueryArgs{\n\t\t\t\t\tId: pulumi.String(\"m2\"),\n\t\t\t\t\tMetric: \u0026cloudwatch.MetricAlarmMetricQueryMetricArgs{\n\t\t\t\t\t\tMetricName: pulumi.String(\"HTTPCode_ELB_5XX_Count\"),\n\t\t\t\t\t\tNamespace: pulumi.String(\"AWS/ApplicationELB\"),\n\t\t\t\t\t\tPeriod: pulumi.Int(120),\n\t\t\t\t\t\tStat: pulumi.String(\"Sum\"),\n\t\t\t\t\t\tUnit: pulumi.String(\"Count\"),\n\t\t\t\t\t\tDimensions: pulumi.StringMap{\n\t\t\t\t\t\t\t\"LoadBalancer\": pulumi.String(\"app/web\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.MetricAlarm;\nimport com.pulumi.aws.cloudwatch.MetricAlarmArgs;\nimport com.pulumi.aws.cloudwatch.inputs.MetricAlarmMetricQueryArgs;\nimport com.pulumi.aws.cloudwatch.inputs.MetricAlarmMetricQueryMetricArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var foobar = new MetricAlarm(\"foobar\", MetricAlarmArgs.builder()\n .name(\"test-foobar\")\n .comparisonOperator(\"GreaterThanOrEqualToThreshold\")\n .evaluationPeriods(2)\n .threshold(10.0)\n .alarmDescription(\"Request error rate has exceeded 10%\")\n .insufficientDataActions()\n .metricQueries( \n MetricAlarmMetricQueryArgs.builder()\n .id(\"e1\")\n .expression(\"m2/m1*100\")\n .label(\"Error Rate\")\n .returnData(true)\n .build(),\n MetricAlarmMetricQueryArgs.builder()\n .id(\"m1\")\n .metric(MetricAlarmMetricQueryMetricArgs.builder()\n .metricName(\"RequestCount\")\n .namespace(\"AWS/ApplicationELB\")\n .period(120)\n .stat(\"Sum\")\n .unit(\"Count\")\n .dimensions(Map.of(\"LoadBalancer\", \"app/web\"))\n .build())\n .build(),\n MetricAlarmMetricQueryArgs.builder()\n .id(\"m2\")\n .metric(MetricAlarmMetricQueryMetricArgs.builder()\n .metricName(\"HTTPCode_ELB_5XX_Count\")\n .namespace(\"AWS/ApplicationELB\")\n .period(120)\n .stat(\"Sum\")\n .unit(\"Count\")\n .dimensions(Map.of(\"LoadBalancer\", \"app/web\"))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: aws:cloudwatch:MetricAlarm\n properties:\n name: test-foobar\n comparisonOperator: GreaterThanOrEqualToThreshold\n evaluationPeriods: 2\n threshold: 10\n alarmDescription: Request error rate has exceeded 10%\n insufficientDataActions: []\n metricQueries:\n - id: e1\n expression: m2/m1*100\n label: Error Rate\n returnData: 'true'\n - id: m1\n metric:\n metricName: RequestCount\n namespace: AWS/ApplicationELB\n period: 120\n stat: Sum\n unit: Count\n dimensions:\n LoadBalancer: app/web\n - id: m2\n metric:\n metricName: HTTPCode_ELB_5XX_Count\n namespace: AWS/ApplicationELB\n period: 120\n stat: Sum\n unit: Count\n dimensions:\n LoadBalancer: app/web\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst xxAnomalyDetection = new aws.cloudwatch.MetricAlarm(\"xx_anomaly_detection\", {\n name: \"test-foobar\",\n comparisonOperator: \"GreaterThanUpperThreshold\",\n evaluationPeriods: 2,\n thresholdMetricId: \"e1\",\n alarmDescription: \"This metric monitors ec2 cpu utilization\",\n insufficientDataActions: [],\n metricQueries: [\n {\n id: \"e1\",\n returnData: true,\n expression: \"ANOMALY_DETECTION_BAND(m1)\",\n label: \"CPUUtilization (Expected)\",\n },\n {\n id: \"m1\",\n returnData: true,\n metric: {\n metricName: \"CPUUtilization\",\n namespace: \"AWS/EC2\",\n period: 120,\n stat: \"Average\",\n unit: \"Count\",\n dimensions: {\n InstanceId: \"i-abc123\",\n },\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nxx_anomaly_detection = aws.cloudwatch.MetricAlarm(\"xx_anomaly_detection\",\n name=\"test-foobar\",\n comparison_operator=\"GreaterThanUpperThreshold\",\n evaluation_periods=2,\n threshold_metric_id=\"e1\",\n alarm_description=\"This metric monitors ec2 cpu utilization\",\n insufficient_data_actions=[],\n metric_queries=[\n {\n \"id\": \"e1\",\n \"return_data\": True,\n \"expression\": \"ANOMALY_DETECTION_BAND(m1)\",\n \"label\": \"CPUUtilization (Expected)\",\n },\n {\n \"id\": \"m1\",\n \"return_data\": True,\n \"metric\": {\n \"metric_name\": \"CPUUtilization\",\n \"namespace\": \"AWS/EC2\",\n \"period\": 120,\n \"stat\": \"Average\",\n \"unit\": \"Count\",\n \"dimensions\": {\n \"InstanceId\": \"i-abc123\",\n },\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var xxAnomalyDetection = new Aws.CloudWatch.MetricAlarm(\"xx_anomaly_detection\", new()\n {\n Name = \"test-foobar\",\n ComparisonOperator = \"GreaterThanUpperThreshold\",\n EvaluationPeriods = 2,\n ThresholdMetricId = \"e1\",\n AlarmDescription = \"This metric monitors ec2 cpu utilization\",\n InsufficientDataActions = new[] {},\n MetricQueries = new[]\n {\n new Aws.CloudWatch.Inputs.MetricAlarmMetricQueryArgs\n {\n Id = \"e1\",\n ReturnData = true,\n Expression = \"ANOMALY_DETECTION_BAND(m1)\",\n Label = \"CPUUtilization (Expected)\",\n },\n new Aws.CloudWatch.Inputs.MetricAlarmMetricQueryArgs\n {\n Id = \"m1\",\n ReturnData = true,\n Metric = new Aws.CloudWatch.Inputs.MetricAlarmMetricQueryMetricArgs\n {\n MetricName = \"CPUUtilization\",\n Namespace = \"AWS/EC2\",\n Period = 120,\n Stat = \"Average\",\n Unit = \"Count\",\n Dimensions = \n {\n { \"InstanceId\", \"i-abc123\" },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudwatch.NewMetricAlarm(ctx, \"xx_anomaly_detection\", \u0026cloudwatch.MetricAlarmArgs{\n\t\t\tName: pulumi.String(\"test-foobar\"),\n\t\t\tComparisonOperator: pulumi.String(\"GreaterThanUpperThreshold\"),\n\t\t\tEvaluationPeriods: pulumi.Int(2),\n\t\t\tThresholdMetricId: pulumi.String(\"e1\"),\n\t\t\tAlarmDescription: pulumi.String(\"This metric monitors ec2 cpu utilization\"),\n\t\t\tInsufficientDataActions: pulumi.Array{},\n\t\t\tMetricQueries: cloudwatch.MetricAlarmMetricQueryArray{\n\t\t\t\t\u0026cloudwatch.MetricAlarmMetricQueryArgs{\n\t\t\t\t\tId: pulumi.String(\"e1\"),\n\t\t\t\t\tReturnData: pulumi.Bool(true),\n\t\t\t\t\tExpression: pulumi.String(\"ANOMALY_DETECTION_BAND(m1)\"),\n\t\t\t\t\tLabel: pulumi.String(\"CPUUtilization (Expected)\"),\n\t\t\t\t},\n\t\t\t\t\u0026cloudwatch.MetricAlarmMetricQueryArgs{\n\t\t\t\t\tId: pulumi.String(\"m1\"),\n\t\t\t\t\tReturnData: pulumi.Bool(true),\n\t\t\t\t\tMetric: \u0026cloudwatch.MetricAlarmMetricQueryMetricArgs{\n\t\t\t\t\t\tMetricName: pulumi.String(\"CPUUtilization\"),\n\t\t\t\t\t\tNamespace: pulumi.String(\"AWS/EC2\"),\n\t\t\t\t\t\tPeriod: pulumi.Int(120),\n\t\t\t\t\t\tStat: pulumi.String(\"Average\"),\n\t\t\t\t\t\tUnit: pulumi.String(\"Count\"),\n\t\t\t\t\t\tDimensions: pulumi.StringMap{\n\t\t\t\t\t\t\t\"InstanceId\": pulumi.String(\"i-abc123\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.MetricAlarm;\nimport com.pulumi.aws.cloudwatch.MetricAlarmArgs;\nimport com.pulumi.aws.cloudwatch.inputs.MetricAlarmMetricQueryArgs;\nimport com.pulumi.aws.cloudwatch.inputs.MetricAlarmMetricQueryMetricArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var xxAnomalyDetection = new MetricAlarm(\"xxAnomalyDetection\", MetricAlarmArgs.builder()\n .name(\"test-foobar\")\n .comparisonOperator(\"GreaterThanUpperThreshold\")\n .evaluationPeriods(2)\n .thresholdMetricId(\"e1\")\n .alarmDescription(\"This metric monitors ec2 cpu utilization\")\n .insufficientDataActions()\n .metricQueries( \n MetricAlarmMetricQueryArgs.builder()\n .id(\"e1\")\n .returnData(true)\n .expression(\"ANOMALY_DETECTION_BAND(m1)\")\n .label(\"CPUUtilization (Expected)\")\n .build(),\n MetricAlarmMetricQueryArgs.builder()\n .id(\"m1\")\n .returnData(true)\n .metric(MetricAlarmMetricQueryMetricArgs.builder()\n .metricName(\"CPUUtilization\")\n .namespace(\"AWS/EC2\")\n .period(120)\n .stat(\"Average\")\n .unit(\"Count\")\n .dimensions(Map.of(\"InstanceId\", \"i-abc123\"))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n xxAnomalyDetection:\n type: aws:cloudwatch:MetricAlarm\n name: xx_anomaly_detection\n properties:\n name: test-foobar\n comparisonOperator: GreaterThanUpperThreshold\n evaluationPeriods: 2\n thresholdMetricId: e1\n alarmDescription: This metric monitors ec2 cpu utilization\n insufficientDataActions: []\n metricQueries:\n - id: e1\n returnData: true\n expression: ANOMALY_DETECTION_BAND(m1)\n label: CPUUtilization (Expected)\n - id: m1\n returnData: true\n metric:\n metricName: CPUUtilization\n namespace: AWS/EC2\n period: 120\n stat: Average\n unit: Count\n dimensions:\n InstanceId: i-abc123\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With a Metrics Insights Query\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.cloudwatch.MetricAlarm(\"example\", {\n name: \"example-alarm\",\n alarmDescription: \"Triggers if the smallest per-instance maximum load during the evaluation period exceeds the threshold\",\n comparisonOperator: \"GreaterThanThreshold\",\n evaluationPeriods: 1,\n threshold: 0.6,\n treatMissingData: \"notBreaching\",\n metricQueries: [{\n id: \"q1\",\n expression: `SELECT\n MAX(DBLoadRelativeToNumVCPUs)\nFROM SCHEMA(\\\\\"AWS/RDS\\\\\", DBInstanceIdentifier)\nWHERE DBInstanceIdentifier != 'example-rds-instance'\nGROUP BY DBInstanceIdentifier\nORDER BY MIN() ASC\nLIMIT 1\n`,\n period: 60,\n returnData: true,\n label: \"Max DB Load of the Least-Loaded RDS Instance\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.cloudwatch.MetricAlarm(\"example\",\n name=\"example-alarm\",\n alarm_description=\"Triggers if the smallest per-instance maximum load during the evaluation period exceeds the threshold\",\n comparison_operator=\"GreaterThanThreshold\",\n evaluation_periods=1,\n threshold=0.6,\n treat_missing_data=\"notBreaching\",\n metric_queries=[{\n \"id\": \"q1\",\n \"expression\": \"\"\"SELECT\n MAX(DBLoadRelativeToNumVCPUs)\nFROM SCHEMA(\\\"AWS/RDS\\\", DBInstanceIdentifier)\nWHERE DBInstanceIdentifier != 'example-rds-instance'\nGROUP BY DBInstanceIdentifier\nORDER BY MIN() ASC\nLIMIT 1\n\"\"\",\n \"period\": 60,\n \"return_data\": True,\n \"label\": \"Max DB Load of the Least-Loaded RDS Instance\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.CloudWatch.MetricAlarm(\"example\", new()\n {\n Name = \"example-alarm\",\n AlarmDescription = \"Triggers if the smallest per-instance maximum load during the evaluation period exceeds the threshold\",\n ComparisonOperator = \"GreaterThanThreshold\",\n EvaluationPeriods = 1,\n Threshold = 0.6,\n TreatMissingData = \"notBreaching\",\n MetricQueries = new[]\n {\n new Aws.CloudWatch.Inputs.MetricAlarmMetricQueryArgs\n {\n Id = \"q1\",\n Expression = @\"SELECT\n MAX(DBLoadRelativeToNumVCPUs)\nFROM SCHEMA(\\\"\"AWS/RDS\\\"\", DBInstanceIdentifier)\nWHERE DBInstanceIdentifier != 'example-rds-instance'\nGROUP BY DBInstanceIdentifier\nORDER BY MIN() ASC\nLIMIT 1\n\",\n Period = 60,\n ReturnData = true,\n Label = \"Max DB Load of the Least-Loaded RDS Instance\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudwatch.NewMetricAlarm(ctx, \"example\", \u0026cloudwatch.MetricAlarmArgs{\n\t\t\tName: pulumi.String(\"example-alarm\"),\n\t\t\tAlarmDescription: pulumi.String(\"Triggers if the smallest per-instance maximum load during the evaluation period exceeds the threshold\"),\n\t\t\tComparisonOperator: pulumi.String(\"GreaterThanThreshold\"),\n\t\t\tEvaluationPeriods: pulumi.Int(1),\n\t\t\tThreshold: pulumi.Float64(0.6),\n\t\t\tTreatMissingData: pulumi.String(\"notBreaching\"),\n\t\t\tMetricQueries: cloudwatch.MetricAlarmMetricQueryArray{\n\t\t\t\t\u0026cloudwatch.MetricAlarmMetricQueryArgs{\n\t\t\t\t\tId: pulumi.String(\"q1\"),\n\t\t\t\t\tExpression: pulumi.String(`SELECT\n MAX(DBLoadRelativeToNumVCPUs)\nFROM SCHEMA(\\\"AWS/RDS\\\", DBInstanceIdentifier)\nWHERE DBInstanceIdentifier != 'example-rds-instance'\nGROUP BY DBInstanceIdentifier\nORDER BY MIN() ASC\nLIMIT 1\n`),\n\t\t\t\t\tPeriod: pulumi.Int(60),\n\t\t\t\t\tReturnData: pulumi.Bool(true),\n\t\t\t\t\tLabel: pulumi.String(\"Max DB Load of the Least-Loaded RDS Instance\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.MetricAlarm;\nimport com.pulumi.aws.cloudwatch.MetricAlarmArgs;\nimport com.pulumi.aws.cloudwatch.inputs.MetricAlarmMetricQueryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new MetricAlarm(\"example\", MetricAlarmArgs.builder()\n .name(\"example-alarm\")\n .alarmDescription(\"Triggers if the smallest per-instance maximum load during the evaluation period exceeds the threshold\")\n .comparisonOperator(\"GreaterThanThreshold\")\n .evaluationPeriods(1)\n .threshold(0.6)\n .treatMissingData(\"notBreaching\")\n .metricQueries(MetricAlarmMetricQueryArgs.builder()\n .id(\"q1\")\n .expression(\"\"\"\nSELECT\n MAX(DBLoadRelativeToNumVCPUs)\nFROM SCHEMA(\\\"AWS/RDS\\\", DBInstanceIdentifier)\nWHERE DBInstanceIdentifier != 'example-rds-instance'\nGROUP BY DBInstanceIdentifier\nORDER BY MIN() ASC\nLIMIT 1\n \"\"\")\n .period(60)\n .returnData(true)\n .label(\"Max DB Load of the Least-Loaded RDS Instance\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:cloudwatch:MetricAlarm\n properties:\n name: example-alarm\n alarmDescription: Triggers if the smallest per-instance maximum load during the evaluation period exceeds the threshold\n comparisonOperator: GreaterThanThreshold\n evaluationPeriods: 1\n threshold: 0.6\n treatMissingData: notBreaching\n metricQueries:\n - id: q1\n expression: |\n SELECT\n MAX(DBLoadRelativeToNumVCPUs)\n FROM SCHEMA(\\\"AWS/RDS\\\", DBInstanceIdentifier)\n WHERE DBInstanceIdentifier != 'example-rds-instance'\n GROUP BY DBInstanceIdentifier\n ORDER BY MIN() ASC\n LIMIT 1\n period: 60\n returnData: true\n label: Max DB Load of the Least-Loaded RDS Instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Monitoring Healthy NLB Hosts with Target Group and NLB\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst nlbHealthyhosts = new aws.cloudwatch.MetricAlarm(\"nlb_healthyhosts\", {\n name: \"alarmname\",\n comparisonOperator: \"LessThanThreshold\",\n evaluationPeriods: 1,\n metricName: \"HealthyHostCount\",\n namespace: \"AWS/NetworkELB\",\n period: 60,\n statistic: \"Average\",\n threshold: logstashServersCount,\n alarmDescription: \"Number of healthy nodes in Target Group\",\n actionsEnabled: true,\n alarmActions: [sns.arn],\n okActions: [sns.arn],\n dimensions: {\n TargetGroup: lb_tg.arnSuffix,\n LoadBalancer: lb.arnSuffix,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nnlb_healthyhosts = aws.cloudwatch.MetricAlarm(\"nlb_healthyhosts\",\n name=\"alarmname\",\n comparison_operator=\"LessThanThreshold\",\n evaluation_periods=1,\n metric_name=\"HealthyHostCount\",\n namespace=\"AWS/NetworkELB\",\n period=60,\n statistic=\"Average\",\n threshold=logstash_servers_count,\n alarm_description=\"Number of healthy nodes in Target Group\",\n actions_enabled=True,\n alarm_actions=[sns[\"arn\"]],\n ok_actions=[sns[\"arn\"]],\n dimensions={\n \"TargetGroup\": lb_tg[\"arnSuffix\"],\n \"LoadBalancer\": lb[\"arnSuffix\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var nlbHealthyhosts = new Aws.CloudWatch.MetricAlarm(\"nlb_healthyhosts\", new()\n {\n Name = \"alarmname\",\n ComparisonOperator = \"LessThanThreshold\",\n EvaluationPeriods = 1,\n MetricName = \"HealthyHostCount\",\n Namespace = \"AWS/NetworkELB\",\n Period = 60,\n Statistic = \"Average\",\n Threshold = logstashServersCount,\n AlarmDescription = \"Number of healthy nodes in Target Group\",\n ActionsEnabled = true,\n AlarmActions = new[]\n {\n sns.Arn,\n },\n OkActions = new[]\n {\n sns.Arn,\n },\n Dimensions = \n {\n { \"TargetGroup\", lb_tg.ArnSuffix },\n { \"LoadBalancer\", lb.ArnSuffix },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudwatch.NewMetricAlarm(ctx, \"nlb_healthyhosts\", \u0026cloudwatch.MetricAlarmArgs{\n\t\t\tName: pulumi.String(\"alarmname\"),\n\t\t\tComparisonOperator: pulumi.String(\"LessThanThreshold\"),\n\t\t\tEvaluationPeriods: pulumi.Int(1),\n\t\t\tMetricName: pulumi.String(\"HealthyHostCount\"),\n\t\t\tNamespace: pulumi.String(\"AWS/NetworkELB\"),\n\t\t\tPeriod: pulumi.Int(60),\n\t\t\tStatistic: pulumi.String(\"Average\"),\n\t\t\tThreshold: pulumi.Any(logstashServersCount),\n\t\t\tAlarmDescription: pulumi.String(\"Number of healthy nodes in Target Group\"),\n\t\t\tActionsEnabled: pulumi.Bool(true),\n\t\t\tAlarmActions: pulumi.Array{\n\t\t\t\tsns.Arn,\n\t\t\t},\n\t\t\tOkActions: pulumi.Array{\n\t\t\t\tsns.Arn,\n\t\t\t},\n\t\t\tDimensions: pulumi.StringMap{\n\t\t\t\t\"TargetGroup\": pulumi.Any(lb_tg.ArnSuffix),\n\t\t\t\t\"LoadBalancer\": pulumi.Any(lb.ArnSuffix),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.MetricAlarm;\nimport com.pulumi.aws.cloudwatch.MetricAlarmArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var nlbHealthyhosts = new MetricAlarm(\"nlbHealthyhosts\", MetricAlarmArgs.builder()\n .name(\"alarmname\")\n .comparisonOperator(\"LessThanThreshold\")\n .evaluationPeriods(1)\n .metricName(\"HealthyHostCount\")\n .namespace(\"AWS/NetworkELB\")\n .period(60)\n .statistic(\"Average\")\n .threshold(logstashServersCount)\n .alarmDescription(\"Number of healthy nodes in Target Group\")\n .actionsEnabled(true)\n .alarmActions(sns.arn())\n .okActions(sns.arn())\n .dimensions(Map.ofEntries(\n Map.entry(\"TargetGroup\", lb_tg.arnSuffix()),\n Map.entry(\"LoadBalancer\", lb.arnSuffix())\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n nlbHealthyhosts:\n type: aws:cloudwatch:MetricAlarm\n name: nlb_healthyhosts\n properties:\n name: alarmname\n comparisonOperator: LessThanThreshold\n evaluationPeriods: 1\n metricName: HealthyHostCount\n namespace: AWS/NetworkELB\n period: 60\n statistic: Average\n threshold: ${logstashServersCount}\n alarmDescription: Number of healthy nodes in Target Group\n actionsEnabled: 'true'\n alarmActions:\n - ${sns.arn}\n okActions:\n - ${sns.arn}\n dimensions:\n TargetGroup: ${[\"lb-tg\"].arnSuffix}\n LoadBalancer: ${lb.arnSuffix}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e **NOTE:** You cannot create a metric alarm consisting of both \u003cspan pulumi-lang-nodejs=\"`statistic`\" pulumi-lang-dotnet=\"`Statistic`\" pulumi-lang-go=\"`statistic`\" pulumi-lang-python=\"`statistic`\" pulumi-lang-yaml=\"`statistic`\" pulumi-lang-java=\"`statistic`\"\u003e`statistic`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`extendedStatistic`\" pulumi-lang-dotnet=\"`ExtendedStatistic`\" pulumi-lang-go=\"`extendedStatistic`\" pulumi-lang-python=\"`extended_statistic`\" pulumi-lang-yaml=\"`extendedStatistic`\" pulumi-lang-java=\"`extendedStatistic`\"\u003e`extended_statistic`\u003c/span\u003e parameters.\nYou must choose one or the other.\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n* `alarm_name` (String) Name of the CloudWatch metric alarm.\n\n#### Optional\n\n* `account_id` (String) AWS Account where this resource is managed.\n\n* `region` (String) Region where this resource is managed.\n\nUsing `pulumi import`, import CloudWatch Metric Alarm using the `alarm_name`. For example:\n\nconsole\n\n% pulumi import aws_cloudwatch_metric_alarm.example alarm-12345\n\n", "properties": { "actionsEnabled": { "type": "boolean", @@ -234056,7 +234056,7 @@ } }, "aws:codebuild/webhook:Webhook": { - "description": "Manages a CodeBuild webhook, which is an endpoint accepted by the CodeBuild service to trigger builds from source code repositories. Depending on the source type of the CodeBuild project, the CodeBuild service may also automatically create and delete the actual repository webhook as well.\n\n## Example Usage\n\n### Bitbucket and GitHub\n\nWhen working with [Bitbucket](https://bitbucket.org) and [GitHub](https://github.com) source CodeBuild webhooks, the CodeBuild service will automatically create (on \u003cspan pulumi-lang-nodejs=\"`aws.codebuild.Webhook`\" pulumi-lang-dotnet=\"`aws.codebuild.Webhook`\" pulumi-lang-go=\"`codebuild.Webhook`\" pulumi-lang-python=\"`codebuild.Webhook`\" pulumi-lang-yaml=\"`aws.codebuild.Webhook`\" pulumi-lang-java=\"`aws.codebuild.Webhook`\"\u003e`aws.codebuild.Webhook`\u003c/span\u003e resource creation) and delete (on \u003cspan pulumi-lang-nodejs=\"`aws.codebuild.Webhook`\" pulumi-lang-dotnet=\"`aws.codebuild.Webhook`\" pulumi-lang-go=\"`codebuild.Webhook`\" pulumi-lang-python=\"`codebuild.Webhook`\" pulumi-lang-yaml=\"`aws.codebuild.Webhook`\" pulumi-lang-java=\"`aws.codebuild.Webhook`\"\u003e`aws.codebuild.Webhook`\u003c/span\u003e resource deletion) the Bitbucket/GitHub repository webhook using its granted OAuth permissions. This behavior cannot be controlled by this provider.\n\n\u003e **Note:** The AWS account that this provider uses to create this resource *must* have authorized CodeBuild to access Bitbucket/GitHub's OAuth API in each applicable region. This is a manual step that must be done *before* creating webhooks with this resource. If OAuth is not configured, AWS will return an error similar to `ResourceNotFoundException: Could not find access token for server type github`. More information can be found in the CodeBuild User Guide for [Bitbucket](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-bitbucket-pull-request.html) and [GitHub](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-github-pull-request.html).\n\n\u003e **Note:** Further managing the automatically created Bitbucket/GitHub webhook with the \u003cspan pulumi-lang-nodejs=\"`bitbucketHook`\" pulumi-lang-dotnet=\"`BitbucketHook`\" pulumi-lang-go=\"`bitbucketHook`\" pulumi-lang-python=\"`bitbucket_hook`\" pulumi-lang-yaml=\"`bitbucketHook`\" pulumi-lang-java=\"`bitbucketHook`\"\u003e`bitbucket_hook`\u003c/span\u003e/\u003cspan pulumi-lang-nodejs=\"`githubRepositoryWebhook`\" pulumi-lang-dotnet=\"`GithubRepositoryWebhook`\" pulumi-lang-go=\"`githubRepositoryWebhook`\" pulumi-lang-python=\"`github_repository_webhook`\" pulumi-lang-yaml=\"`githubRepositoryWebhook`\" pulumi-lang-java=\"`githubRepositoryWebhook`\"\u003e`github_repository_webhook`\u003c/span\u003e resource is only possible with importing that resource after creation of the \u003cspan pulumi-lang-nodejs=\"`aws.codebuild.Webhook`\" pulumi-lang-dotnet=\"`aws.codebuild.Webhook`\" pulumi-lang-go=\"`codebuild.Webhook`\" pulumi-lang-python=\"`codebuild.Webhook`\" pulumi-lang-yaml=\"`aws.codebuild.Webhook`\" pulumi-lang-java=\"`aws.codebuild.Webhook`\"\u003e`aws.codebuild.Webhook`\u003c/span\u003e resource. The CodeBuild API does not ever provide the \u003cspan pulumi-lang-nodejs=\"`secret`\" pulumi-lang-dotnet=\"`Secret`\" pulumi-lang-go=\"`secret`\" pulumi-lang-python=\"`secret`\" pulumi-lang-yaml=\"`secret`\" pulumi-lang-java=\"`secret`\"\u003e`secret`\u003c/span\u003e attribute for the \u003cspan pulumi-lang-nodejs=\"`aws.codebuild.Webhook`\" pulumi-lang-dotnet=\"`aws.codebuild.Webhook`\" pulumi-lang-go=\"`codebuild.Webhook`\" pulumi-lang-python=\"`codebuild.Webhook`\" pulumi-lang-yaml=\"`aws.codebuild.Webhook`\" pulumi-lang-java=\"`aws.codebuild.Webhook`\"\u003e`aws.codebuild.Webhook`\u003c/span\u003e resource in this scenario.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.codebuild.Webhook(\"example\", {\n projectName: exampleAwsCodebuildProject.name,\n buildType: \"BUILD\",\n filterGroups: [{\n filters: [\n {\n type: \"EVENT\",\n pattern: \"PUSH\",\n },\n {\n type: \"BASE_REF\",\n pattern: \"master\",\n },\n ],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.codebuild.Webhook(\"example\",\n project_name=example_aws_codebuild_project[\"name\"],\n build_type=\"BUILD\",\n filter_groups=[{\n \"filters\": [\n {\n \"type\": \"EVENT\",\n \"pattern\": \"PUSH\",\n },\n {\n \"type\": \"BASE_REF\",\n \"pattern\": \"master\",\n },\n ],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.CodeBuild.Webhook(\"example\", new()\n {\n ProjectName = exampleAwsCodebuildProject.Name,\n BuildType = \"BUILD\",\n FilterGroups = new[]\n {\n new Aws.CodeBuild.Inputs.WebhookFilterGroupArgs\n {\n Filters = new[]\n {\n new Aws.CodeBuild.Inputs.WebhookFilterGroupFilterArgs\n {\n Type = \"EVENT\",\n Pattern = \"PUSH\",\n },\n new Aws.CodeBuild.Inputs.WebhookFilterGroupFilterArgs\n {\n Type = \"BASE_REF\",\n Pattern = \"master\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/codebuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := codebuild.NewWebhook(ctx, \"example\", \u0026codebuild.WebhookArgs{\n\t\t\tProjectName: pulumi.Any(exampleAwsCodebuildProject.Name),\n\t\t\tBuildType: pulumi.String(\"BUILD\"),\n\t\t\tFilterGroups: codebuild.WebhookFilterGroupArray{\n\t\t\t\t\u0026codebuild.WebhookFilterGroupArgs{\n\t\t\t\t\tFilters: codebuild.WebhookFilterGroupFilterArray{\n\t\t\t\t\t\t\u0026codebuild.WebhookFilterGroupFilterArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"EVENT\"),\n\t\t\t\t\t\t\tPattern: pulumi.String(\"PUSH\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026codebuild.WebhookFilterGroupFilterArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"BASE_REF\"),\n\t\t\t\t\t\t\tPattern: pulumi.String(\"master\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.codebuild.Webhook;\nimport com.pulumi.aws.codebuild.WebhookArgs;\nimport com.pulumi.aws.codebuild.inputs.WebhookFilterGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Webhook(\"example\", WebhookArgs.builder()\n .projectName(exampleAwsCodebuildProject.name())\n .buildType(\"BUILD\")\n .filterGroups(WebhookFilterGroupArgs.builder()\n .filters( \n WebhookFilterGroupFilterArgs.builder()\n .type(\"EVENT\")\n .pattern(\"PUSH\")\n .build(),\n WebhookFilterGroupFilterArgs.builder()\n .type(\"BASE_REF\")\n .pattern(\"master\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:codebuild:Webhook\n properties:\n projectName: ${exampleAwsCodebuildProject.name}\n buildType: BUILD\n filterGroups:\n - filters:\n - type: EVENT\n pattern: PUSH\n - type: BASE_REF\n pattern: master\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### GitHub Enterprise\n\nWhen working with [GitHub Enterprise](https://enterprise.github.com/) source CodeBuild webhooks, the GHE repository webhook must be separately managed (e.g., manually or with the \u003cspan pulumi-lang-nodejs=\"`githubRepositoryWebhook`\" pulumi-lang-dotnet=\"`GithubRepositoryWebhook`\" pulumi-lang-go=\"`githubRepositoryWebhook`\" pulumi-lang-python=\"`github_repository_webhook`\" pulumi-lang-yaml=\"`githubRepositoryWebhook`\" pulumi-lang-java=\"`githubRepositoryWebhook`\"\u003e`github_repository_webhook`\u003c/span\u003e resource).\n\nMore information creating webhooks with GitHub Enterprise can be found in the [CodeBuild User Guide](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-github-enterprise.html).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n example:\n type: aws:codebuild:Webhook\n properties:\n projectName: ${exampleAwsCodebuildProject.name}\n exampleRepositoryWebhook:\n type: github:RepositoryWebhook\n name: example\n properties:\n active: true\n events:\n - push\n name: example\n repository: ${exampleGithubRepository.name}\n configuration:\n url: ${example.payloadUrl}\n secret: ${example.secret}\n contentType: json\n insecureSsl: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### For CodeBuild Runner Project\n\nTo create a CodeBuild project as a Runner Project, the following \u003cspan pulumi-lang-nodejs=\"`aws.codebuild.Webhook`\" pulumi-lang-dotnet=\"`aws.codebuild.Webhook`\" pulumi-lang-go=\"`codebuild.Webhook`\" pulumi-lang-python=\"`codebuild.Webhook`\" pulumi-lang-yaml=\"`aws.codebuild.Webhook`\" pulumi-lang-java=\"`aws.codebuild.Webhook`\"\u003e`aws.codebuild.Webhook`\u003c/span\u003e resource is required for the project.\nSee thr [AWS Documentation](https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html) for more information about CodeBuild Runner Projects.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.codebuild.Webhook(\"example\", {\n projectName: exampleAwsCodebuildProject.name,\n buildType: \"BUILD\",\n filterGroups: [{\n filters: [{\n type: \"EVENT\",\n pattern: \"WORKFLOW_JOB_QUEUED\",\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.codebuild.Webhook(\"example\",\n project_name=example_aws_codebuild_project[\"name\"],\n build_type=\"BUILD\",\n filter_groups=[{\n \"filters\": [{\n \"type\": \"EVENT\",\n \"pattern\": \"WORKFLOW_JOB_QUEUED\",\n }],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.CodeBuild.Webhook(\"example\", new()\n {\n ProjectName = exampleAwsCodebuildProject.Name,\n BuildType = \"BUILD\",\n FilterGroups = new[]\n {\n new Aws.CodeBuild.Inputs.WebhookFilterGroupArgs\n {\n Filters = new[]\n {\n new Aws.CodeBuild.Inputs.WebhookFilterGroupFilterArgs\n {\n Type = \"EVENT\",\n Pattern = \"WORKFLOW_JOB_QUEUED\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/codebuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := codebuild.NewWebhook(ctx, \"example\", \u0026codebuild.WebhookArgs{\n\t\t\tProjectName: pulumi.Any(exampleAwsCodebuildProject.Name),\n\t\t\tBuildType: pulumi.String(\"BUILD\"),\n\t\t\tFilterGroups: codebuild.WebhookFilterGroupArray{\n\t\t\t\t\u0026codebuild.WebhookFilterGroupArgs{\n\t\t\t\t\tFilters: codebuild.WebhookFilterGroupFilterArray{\n\t\t\t\t\t\t\u0026codebuild.WebhookFilterGroupFilterArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"EVENT\"),\n\t\t\t\t\t\t\tPattern: pulumi.String(\"WORKFLOW_JOB_QUEUED\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.codebuild.Webhook;\nimport com.pulumi.aws.codebuild.WebhookArgs;\nimport com.pulumi.aws.codebuild.inputs.WebhookFilterGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Webhook(\"example\", WebhookArgs.builder()\n .projectName(exampleAwsCodebuildProject.name())\n .buildType(\"BUILD\")\n .filterGroups(WebhookFilterGroupArgs.builder()\n .filters(WebhookFilterGroupFilterArgs.builder()\n .type(\"EVENT\")\n .pattern(\"WORKFLOW_JOB_QUEUED\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:codebuild:Webhook\n properties:\n projectName: ${exampleAwsCodebuildProject.name}\n buildType: BUILD\n filterGroups:\n - filters:\n - type: EVENT\n pattern: WORKFLOW_JOB_QUEUED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import CodeBuild Webhooks using the CodeBuild Project name. For example:\n\n```sh\n$ pulumi import aws:codebuild/webhook:Webhook example MyProjectName\n```\n", + "description": "Manages a CodeBuild webhook, which is an endpoint accepted by the CodeBuild service to trigger builds from source code repositories. Depending on the source type of the CodeBuild project, the CodeBuild service may also automatically create and delete the actual repository webhook as well.\n\n## Example Usage\n\n### Bitbucket and GitHub\n\nWhen working with [Bitbucket](https://bitbucket.org) and [GitHub](https://github.com) source CodeBuild webhooks, the CodeBuild service will automatically create (on \u003cspan pulumi-lang-nodejs=\"`aws.codebuild.Webhook`\" pulumi-lang-dotnet=\"`aws.codebuild.Webhook`\" pulumi-lang-go=\"`codebuild.Webhook`\" pulumi-lang-python=\"`codebuild.Webhook`\" pulumi-lang-yaml=\"`aws.codebuild.Webhook`\" pulumi-lang-java=\"`aws.codebuild.Webhook`\"\u003e`aws.codebuild.Webhook`\u003c/span\u003e resource creation) and delete (on \u003cspan pulumi-lang-nodejs=\"`aws.codebuild.Webhook`\" pulumi-lang-dotnet=\"`aws.codebuild.Webhook`\" pulumi-lang-go=\"`codebuild.Webhook`\" pulumi-lang-python=\"`codebuild.Webhook`\" pulumi-lang-yaml=\"`aws.codebuild.Webhook`\" pulumi-lang-java=\"`aws.codebuild.Webhook`\"\u003e`aws.codebuild.Webhook`\u003c/span\u003e resource deletion) the Bitbucket/GitHub repository webhook using its granted OAuth permissions. This behavior cannot be controlled by this provider.\n\n\u003e **Note:** The AWS account that this provider uses to create this resource *must* have authorized CodeBuild to access Bitbucket/GitHub's OAuth API in each applicable region. This is a manual step that must be done *before* creating webhooks with this resource. If OAuth is not configured, AWS will return an error similar to `ResourceNotFoundException: Could not find access token for server type github`. More information can be found in the CodeBuild User Guide for [Bitbucket](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-bitbucket-pull-request.html) and [GitHub](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-github-pull-request.html).\n\n\u003e **Note:** Further managing the automatically created Bitbucket/GitHub webhook with the \u003cspan pulumi-lang-nodejs=\"`bitbucketHook`\" pulumi-lang-dotnet=\"`BitbucketHook`\" pulumi-lang-go=\"`bitbucketHook`\" pulumi-lang-python=\"`bitbucket_hook`\" pulumi-lang-yaml=\"`bitbucketHook`\" pulumi-lang-java=\"`bitbucketHook`\"\u003e`bitbucket_hook`\u003c/span\u003e/\u003cspan pulumi-lang-nodejs=\"`githubRepositoryWebhook`\" pulumi-lang-dotnet=\"`GithubRepositoryWebhook`\" pulumi-lang-go=\"`githubRepositoryWebhook`\" pulumi-lang-python=\"`github_repository_webhook`\" pulumi-lang-yaml=\"`githubRepositoryWebhook`\" pulumi-lang-java=\"`githubRepositoryWebhook`\"\u003e`github_repository_webhook`\u003c/span\u003e resource is only possible with importing that resource after creation of the \u003cspan pulumi-lang-nodejs=\"`aws.codebuild.Webhook`\" pulumi-lang-dotnet=\"`aws.codebuild.Webhook`\" pulumi-lang-go=\"`codebuild.Webhook`\" pulumi-lang-python=\"`codebuild.Webhook`\" pulumi-lang-yaml=\"`aws.codebuild.Webhook`\" pulumi-lang-java=\"`aws.codebuild.Webhook`\"\u003e`aws.codebuild.Webhook`\u003c/span\u003e resource. The CodeBuild API does not ever provide the \u003cspan pulumi-lang-nodejs=\"`secret`\" pulumi-lang-dotnet=\"`Secret`\" pulumi-lang-go=\"`secret`\" pulumi-lang-python=\"`secret`\" pulumi-lang-yaml=\"`secret`\" pulumi-lang-java=\"`secret`\"\u003e`secret`\u003c/span\u003e attribute for the \u003cspan pulumi-lang-nodejs=\"`aws.codebuild.Webhook`\" pulumi-lang-dotnet=\"`aws.codebuild.Webhook`\" pulumi-lang-go=\"`codebuild.Webhook`\" pulumi-lang-python=\"`codebuild.Webhook`\" pulumi-lang-yaml=\"`aws.codebuild.Webhook`\" pulumi-lang-java=\"`aws.codebuild.Webhook`\"\u003e`aws.codebuild.Webhook`\u003c/span\u003e resource in this scenario.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.codebuild.Webhook(\"example\", {\n projectName: exampleAwsCodebuildProject.name,\n buildType: \"BUILD\",\n filterGroups: [{\n filters: [\n {\n type: \"EVENT\",\n pattern: \"PUSH\",\n },\n {\n type: \"BASE_REF\",\n pattern: \"master\",\n },\n ],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.codebuild.Webhook(\"example\",\n project_name=example_aws_codebuild_project[\"name\"],\n build_type=\"BUILD\",\n filter_groups=[{\n \"filters\": [\n {\n \"type\": \"EVENT\",\n \"pattern\": \"PUSH\",\n },\n {\n \"type\": \"BASE_REF\",\n \"pattern\": \"master\",\n },\n ],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.CodeBuild.Webhook(\"example\", new()\n {\n ProjectName = exampleAwsCodebuildProject.Name,\n BuildType = \"BUILD\",\n FilterGroups = new[]\n {\n new Aws.CodeBuild.Inputs.WebhookFilterGroupArgs\n {\n Filters = new[]\n {\n new Aws.CodeBuild.Inputs.WebhookFilterGroupFilterArgs\n {\n Type = \"EVENT\",\n Pattern = \"PUSH\",\n },\n new Aws.CodeBuild.Inputs.WebhookFilterGroupFilterArgs\n {\n Type = \"BASE_REF\",\n Pattern = \"master\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/codebuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := codebuild.NewWebhook(ctx, \"example\", \u0026codebuild.WebhookArgs{\n\t\t\tProjectName: pulumi.Any(exampleAwsCodebuildProject.Name),\n\t\t\tBuildType: pulumi.String(\"BUILD\"),\n\t\t\tFilterGroups: codebuild.WebhookFilterGroupArray{\n\t\t\t\t\u0026codebuild.WebhookFilterGroupArgs{\n\t\t\t\t\tFilters: codebuild.WebhookFilterGroupFilterArray{\n\t\t\t\t\t\t\u0026codebuild.WebhookFilterGroupFilterArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"EVENT\"),\n\t\t\t\t\t\t\tPattern: pulumi.String(\"PUSH\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026codebuild.WebhookFilterGroupFilterArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"BASE_REF\"),\n\t\t\t\t\t\t\tPattern: pulumi.String(\"master\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.codebuild.Webhook;\nimport com.pulumi.aws.codebuild.WebhookArgs;\nimport com.pulumi.aws.codebuild.inputs.WebhookFilterGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Webhook(\"example\", WebhookArgs.builder()\n .projectName(exampleAwsCodebuildProject.name())\n .buildType(\"BUILD\")\n .filterGroups(WebhookFilterGroupArgs.builder()\n .filters( \n WebhookFilterGroupFilterArgs.builder()\n .type(\"EVENT\")\n .pattern(\"PUSH\")\n .build(),\n WebhookFilterGroupFilterArgs.builder()\n .type(\"BASE_REF\")\n .pattern(\"master\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:codebuild:Webhook\n properties:\n projectName: ${exampleAwsCodebuildProject.name}\n buildType: BUILD\n filterGroups:\n - filters:\n - type: EVENT\n pattern: PUSH\n - type: BASE_REF\n pattern: master\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### GitHub Enterprise\n\nWhen working with [GitHub Enterprise](https://enterprise.github.com/) source CodeBuild webhooks, the GHE repository webhook must be separately managed (e.g., manually or with the \u003cspan pulumi-lang-nodejs=\"`githubRepositoryWebhook`\" pulumi-lang-dotnet=\"`GithubRepositoryWebhook`\" pulumi-lang-go=\"`githubRepositoryWebhook`\" pulumi-lang-python=\"`github_repository_webhook`\" pulumi-lang-yaml=\"`githubRepositoryWebhook`\" pulumi-lang-java=\"`githubRepositoryWebhook`\"\u003e`github_repository_webhook`\u003c/span\u003e resource).\n\nMore information creating webhooks with GitHub Enterprise can be found in the [CodeBuild User Guide](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-github-enterprise.html).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n example:\n type: aws:codebuild:Webhook\n properties:\n projectName: ${exampleAwsCodebuildProject.name}\n exampleRepositoryWebhook:\n type: github:RepositoryWebhook\n name: example\n properties:\n active: true\n events:\n - push\n name: example\n repository: ${exampleGithubRepository.name}\n configuration:\n - url: ${example.payloadUrl}\n secret: ${example.secret}\n contentType: json\n insecureSsl: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### For CodeBuild Runner Project\n\nTo create a CodeBuild project as a Runner Project, the following \u003cspan pulumi-lang-nodejs=\"`aws.codebuild.Webhook`\" pulumi-lang-dotnet=\"`aws.codebuild.Webhook`\" pulumi-lang-go=\"`codebuild.Webhook`\" pulumi-lang-python=\"`codebuild.Webhook`\" pulumi-lang-yaml=\"`aws.codebuild.Webhook`\" pulumi-lang-java=\"`aws.codebuild.Webhook`\"\u003e`aws.codebuild.Webhook`\u003c/span\u003e resource is required for the project.\nSee thr [AWS Documentation](https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html) for more information about CodeBuild Runner Projects.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.codebuild.Webhook(\"example\", {\n projectName: exampleAwsCodebuildProject.name,\n buildType: \"BUILD\",\n filterGroups: [{\n filters: [{\n type: \"EVENT\",\n pattern: \"WORKFLOW_JOB_QUEUED\",\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.codebuild.Webhook(\"example\",\n project_name=example_aws_codebuild_project[\"name\"],\n build_type=\"BUILD\",\n filter_groups=[{\n \"filters\": [{\n \"type\": \"EVENT\",\n \"pattern\": \"WORKFLOW_JOB_QUEUED\",\n }],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.CodeBuild.Webhook(\"example\", new()\n {\n ProjectName = exampleAwsCodebuildProject.Name,\n BuildType = \"BUILD\",\n FilterGroups = new[]\n {\n new Aws.CodeBuild.Inputs.WebhookFilterGroupArgs\n {\n Filters = new[]\n {\n new Aws.CodeBuild.Inputs.WebhookFilterGroupFilterArgs\n {\n Type = \"EVENT\",\n Pattern = \"WORKFLOW_JOB_QUEUED\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/codebuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := codebuild.NewWebhook(ctx, \"example\", \u0026codebuild.WebhookArgs{\n\t\t\tProjectName: pulumi.Any(exampleAwsCodebuildProject.Name),\n\t\t\tBuildType: pulumi.String(\"BUILD\"),\n\t\t\tFilterGroups: codebuild.WebhookFilterGroupArray{\n\t\t\t\t\u0026codebuild.WebhookFilterGroupArgs{\n\t\t\t\t\tFilters: codebuild.WebhookFilterGroupFilterArray{\n\t\t\t\t\t\t\u0026codebuild.WebhookFilterGroupFilterArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"EVENT\"),\n\t\t\t\t\t\t\tPattern: pulumi.String(\"WORKFLOW_JOB_QUEUED\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.codebuild.Webhook;\nimport com.pulumi.aws.codebuild.WebhookArgs;\nimport com.pulumi.aws.codebuild.inputs.WebhookFilterGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Webhook(\"example\", WebhookArgs.builder()\n .projectName(exampleAwsCodebuildProject.name())\n .buildType(\"BUILD\")\n .filterGroups(WebhookFilterGroupArgs.builder()\n .filters(WebhookFilterGroupFilterArgs.builder()\n .type(\"EVENT\")\n .pattern(\"WORKFLOW_JOB_QUEUED\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:codebuild:Webhook\n properties:\n projectName: ${exampleAwsCodebuildProject.name}\n buildType: BUILD\n filterGroups:\n - filters:\n - type: EVENT\n pattern: WORKFLOW_JOB_QUEUED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import CodeBuild Webhooks using the CodeBuild Project name. For example:\n\n```sh\n$ pulumi import aws:codebuild/webhook:Webhook example MyProjectName\n```\n", "properties": { "branchFilter": { "type": "string", @@ -236490,7 +236490,7 @@ } }, "aws:codepipeline/webhook:Webhook": { - "description": "Provides a CodePipeline Webhook.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n bar:\n type: aws:codepipeline:Pipeline\n properties:\n name: tf-test-pipeline\n roleArn: ${barAwsIamRole.arn}\n artifactStores:\n - location: ${barAwsS3Bucket.bucket}\n type: S3\n encryptionKey:\n id: ${s3kmskey.arn}\n type: KMS\n stages:\n - name: Source\n actions:\n - name: Source\n category: Source\n owner: ThirdParty\n provider: GitHub\n version: '1'\n outputArtifacts:\n - test\n configuration:\n Owner: my-organization\n Repo: test\n Branch: master\n - name: Build\n actions:\n - name: Build\n category: Build\n owner: AWS\n provider: CodeBuild\n inputArtifacts:\n - test\n version: '1'\n configuration:\n ProjectName: test\n barWebhook:\n type: aws:codepipeline:Webhook\n name: bar\n properties:\n name: test-webhook-github-bar\n authentication: GITHUB_HMAC\n targetAction: Source\n targetPipeline: ${bar.name}\n authenticationConfiguration:\n secretToken: ${webhookSecret}\n filters:\n - jsonPath: $.ref\n matchEquals: refs/heads/{Branch}\n # Wire the CodePipeline webhook into a GitHub repository.\n barRepositoryWebhook:\n type: github:RepositoryWebhook\n name: bar\n properties:\n repository: ${repo.name}\n name: web\n configuration:\n url: ${barWebhook.url}\n contentType: json\n insecureSsl: true\n secret: ${webhookSecret}\n events:\n - push\nvariables:\n webhookSecret: super-secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n- `arn` (String) Amazon Resource Name (ARN) of the CodePipeline webhook.\n\nUsing `pulumi import`, import CodePipeline Webhooks using their ARN. For example:\n\nconsole\n\n% pulumi import aws_codepipeline_webhook.example arn:aws:codepipeline:us-west-2:123456789012:webhook:example\n\n", + "description": "Provides a CodePipeline Webhook.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n bar:\n type: aws:codepipeline:Pipeline\n properties:\n name: tf-test-pipeline\n roleArn: ${barAwsIamRole.arn}\n artifactStores:\n - location: ${barAwsS3Bucket.bucket}\n type: S3\n encryptionKey:\n id: ${s3kmskey.arn}\n type: KMS\n stages:\n - name: Source\n actions:\n - name: Source\n category: Source\n owner: ThirdParty\n provider: GitHub\n version: '1'\n outputArtifacts:\n - test\n configuration:\n Owner: my-organization\n Repo: test\n Branch: master\n - name: Build\n actions:\n - name: Build\n category: Build\n owner: AWS\n provider: CodeBuild\n inputArtifacts:\n - test\n version: '1'\n configuration:\n ProjectName: test\n barWebhook:\n type: aws:codepipeline:Webhook\n name: bar\n properties:\n name: test-webhook-github-bar\n authentication: GITHUB_HMAC\n targetAction: Source\n targetPipeline: ${bar.name}\n authenticationConfiguration:\n secretToken: ${webhookSecret}\n filters:\n - jsonPath: $.ref\n matchEquals: refs/heads/{Branch}\n # Wire the CodePipeline webhook into a GitHub repository.\n barRepositoryWebhook:\n type: github:RepositoryWebhook\n name: bar\n properties:\n repository: ${repo.name}\n name: web\n configuration:\n - url: ${barWebhook.url}\n contentType: json\n insecureSsl: true\n secret: ${webhookSecret}\n events:\n - push\nvariables:\n webhookSecret: super-secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n- `arn` (String) Amazon Resource Name (ARN) of the CodePipeline webhook.\n\nUsing `pulumi import`, import CodePipeline Webhooks using their ARN. For example:\n\nconsole\n\n% pulumi import aws_codepipeline_webhook.example arn:aws:codepipeline:us-west-2:123456789012:webhook:example\n\n", "properties": { "arn": { "type": "string", @@ -237292,7 +237292,7 @@ } }, "aws:cognito/identityPoolProviderPrincipalTag:IdentityPoolProviderPrincipalTag": { - "description": "Provides an AWS Cognito Identity Principal Mapping.\n\n## Import\n\nUsing `pulumi import`, import Cognito Identity Pool Roles Attachment using the Identity Pool ID and provider name. For example:\n\n```sh\n$ pulumi import aws:cognito/identityPoolProviderPrincipalTag:IdentityPoolProviderPrincipalTag example us-west-2_abc123:CorpAD\n```\n", + "description": "Provides an AWS Cognito Identity Principal Mapping.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new aws.cognito.UserPool(\"example\", {\n name: \"user pool\",\n autoVerifiedAttributes: [\"email\"],\n});\nconst exampleUserPoolClient = new aws.cognito.UserPoolClient(\"example\", {\n name: \"client\",\n userPoolId: example.id,\n supportedIdentityProviders: std.compact({\n input: [\"COGNITO\"],\n }).then(invoke =\u003e invoke.result),\n});\nconst exampleIdentityPool = new aws.cognito.IdentityPool(\"example\", {\n identityPoolName: \"identity pool\",\n allowUnauthenticatedIdentities: false,\n cognitoIdentityProviders: [{\n clientId: exampleUserPoolClient.id,\n providerName: example.endpoint,\n serverSideTokenCheck: false,\n }],\n});\nconst exampleIdentityPoolProviderPrincipalTag = new aws.cognito.IdentityPoolProviderPrincipalTag(\"example\", {\n identityPoolId: exampleIdentityPool.id,\n identityProviderName: example.endpoint,\n useDefaults: false,\n principalTags: {\n test: \"value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.cognito.UserPool(\"example\",\n name=\"user pool\",\n auto_verified_attributes=[\"email\"])\nexample_user_pool_client = aws.cognito.UserPoolClient(\"example\",\n name=\"client\",\n user_pool_id=example.id,\n supported_identity_providers=std.compact(input=[\"COGNITO\"]).result)\nexample_identity_pool = aws.cognito.IdentityPool(\"example\",\n identity_pool_name=\"identity pool\",\n allow_unauthenticated_identities=False,\n cognito_identity_providers=[{\n \"client_id\": example_user_pool_client.id,\n \"provider_name\": example.endpoint,\n \"server_side_token_check\": False,\n }])\nexample_identity_pool_provider_principal_tag = aws.cognito.IdentityPoolProviderPrincipalTag(\"example\",\n identity_pool_id=example_identity_pool.id,\n identity_provider_name=example.endpoint,\n use_defaults=False,\n principal_tags={\n \"test\": \"value\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Cognito.UserPool(\"example\", new()\n {\n Name = \"user pool\",\n AutoVerifiedAttributes = new[]\n {\n \"email\",\n },\n });\n\n var exampleUserPoolClient = new Aws.Cognito.UserPoolClient(\"example\", new()\n {\n Name = \"client\",\n UserPoolId = example.Id,\n SupportedIdentityProviders = Std.Compact.Invoke(new()\n {\n Input = new[]\n {\n \"COGNITO\",\n },\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var exampleIdentityPool = new Aws.Cognito.IdentityPool(\"example\", new()\n {\n IdentityPoolName = \"identity pool\",\n AllowUnauthenticatedIdentities = false,\n CognitoIdentityProviders = new[]\n {\n new Aws.Cognito.Inputs.IdentityPoolCognitoIdentityProviderArgs\n {\n ClientId = exampleUserPoolClient.Id,\n ProviderName = example.Endpoint,\n ServerSideTokenCheck = false,\n },\n },\n });\n\n var exampleIdentityPoolProviderPrincipalTag = new Aws.Cognito.IdentityPoolProviderPrincipalTag(\"example\", new()\n {\n IdentityPoolId = exampleIdentityPool.Id,\n IdentityProviderName = example.Endpoint,\n UseDefaults = false,\n PrincipalTags = \n {\n { \"test\", \"value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cognito\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := cognito.NewUserPool(ctx, \"example\", \u0026cognito.UserPoolArgs{\n\t\t\tName: pulumi.String(\"user pool\"),\n\t\t\tAutoVerifiedAttributes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"email\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeCompact, err := std.Compact(ctx, \u0026std.CompactArgs{\n\t\t\tInput: []string{\n\t\t\t\t\"COGNITO\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleUserPoolClient, err := cognito.NewUserPoolClient(ctx, \"example\", \u0026cognito.UserPoolClientArgs{\n\t\t\tName: pulumi.String(\"client\"),\n\t\t\tUserPoolId: example.ID(),\n\t\t\tSupportedIdentityProviders: pulumi.StringArray(invokeCompact.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleIdentityPool, err := cognito.NewIdentityPool(ctx, \"example\", \u0026cognito.IdentityPoolArgs{\n\t\t\tIdentityPoolName: pulumi.String(\"identity pool\"),\n\t\t\tAllowUnauthenticatedIdentities: pulumi.Bool(false),\n\t\t\tCognitoIdentityProviders: cognito.IdentityPoolCognitoIdentityProviderArray{\n\t\t\t\t\u0026cognito.IdentityPoolCognitoIdentityProviderArgs{\n\t\t\t\t\tClientId: exampleUserPoolClient.ID(),\n\t\t\t\t\tProviderName: example.Endpoint,\n\t\t\t\t\tServerSideTokenCheck: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cognito.NewIdentityPoolProviderPrincipalTag(ctx, \"example\", \u0026cognito.IdentityPoolProviderPrincipalTagArgs{\n\t\t\tIdentityPoolId: exampleIdentityPool.ID(),\n\t\t\tIdentityProviderName: example.Endpoint,\n\t\t\tUseDefaults: pulumi.Bool(false),\n\t\t\tPrincipalTags: pulumi.StringMap{\n\t\t\t\t\"test\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cognito.UserPool;\nimport com.pulumi.aws.cognito.UserPoolArgs;\nimport com.pulumi.aws.cognito.UserPoolClient;\nimport com.pulumi.aws.cognito.UserPoolClientArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.CompactArgs;\nimport com.pulumi.aws.cognito.IdentityPool;\nimport com.pulumi.aws.cognito.IdentityPoolArgs;\nimport com.pulumi.aws.cognito.inputs.IdentityPoolCognitoIdentityProviderArgs;\nimport com.pulumi.aws.cognito.IdentityPoolProviderPrincipalTag;\nimport com.pulumi.aws.cognito.IdentityPoolProviderPrincipalTagArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new UserPool(\"example\", UserPoolArgs.builder()\n .name(\"user pool\")\n .autoVerifiedAttributes(\"email\")\n .build());\n\n var exampleUserPoolClient = new UserPoolClient(\"exampleUserPoolClient\", UserPoolClientArgs.builder()\n .name(\"client\")\n .userPoolId(example.id())\n .supportedIdentityProviders(StdFunctions.compact(CompactArgs.builder()\n .input(\"COGNITO\")\n .build()).result())\n .build());\n\n var exampleIdentityPool = new IdentityPool(\"exampleIdentityPool\", IdentityPoolArgs.builder()\n .identityPoolName(\"identity pool\")\n .allowUnauthenticatedIdentities(false)\n .cognitoIdentityProviders(IdentityPoolCognitoIdentityProviderArgs.builder()\n .clientId(exampleUserPoolClient.id())\n .providerName(example.endpoint())\n .serverSideTokenCheck(false)\n .build())\n .build());\n\n var exampleIdentityPoolProviderPrincipalTag = new IdentityPoolProviderPrincipalTag(\"exampleIdentityPoolProviderPrincipalTag\", IdentityPoolProviderPrincipalTagArgs.builder()\n .identityPoolId(exampleIdentityPool.id())\n .identityProviderName(example.endpoint())\n .useDefaults(false)\n .principalTags(Map.of(\"test\", \"value\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:cognito:UserPool\n properties:\n name: user pool\n autoVerifiedAttributes:\n - email\n exampleUserPoolClient:\n type: aws:cognito:UserPoolClient\n name: example\n properties:\n name: client\n userPoolId: ${example.id}\n supportedIdentityProviders:\n fn::invoke:\n function: std:compact\n arguments:\n input:\n - COGNITO\n return: result\n exampleIdentityPool:\n type: aws:cognito:IdentityPool\n name: example\n properties:\n identityPoolName: identity pool\n allowUnauthenticatedIdentities: false\n cognitoIdentityProviders:\n - clientId: ${exampleUserPoolClient.id}\n providerName: ${example.endpoint}\n serverSideTokenCheck: false\n exampleIdentityPoolProviderPrincipalTag:\n type: aws:cognito:IdentityPoolProviderPrincipalTag\n name: example\n properties:\n identityPoolId: ${exampleIdentityPool.id}\n identityProviderName: ${example.endpoint}\n useDefaults: false\n principalTags:\n test: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Cognito Identity Pool Roles Attachment using the Identity Pool ID and provider name. For example:\n\n```sh\n$ pulumi import aws:cognito/identityPoolProviderPrincipalTag:IdentityPoolProviderPrincipalTag example us-west-2_abc123:CorpAD\n```\n", "properties": { "identityPoolId": { "type": "string", @@ -248766,7 +248766,7 @@ } }, "aws:datazone/formType:FormType": { - "description": "Resource for managing an AWS DataZone Form Type.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst domainExecutionRole = new aws.iam.Role(\"domain_execution_role\", {\n name: \"example-role\",\n assumeRolePolicy: JSON.stringify({\n Version: \"2012-10-17\",\n Statement: [\n {\n Action: [\n \"sts:AssumeRole\",\n \"sts:TagSession\",\n ],\n Effect: \"Allow\",\n Principal: {\n Service: \"datazone.amazonaws.com\",\n },\n },\n {\n Action: [\n \"sts:AssumeRole\",\n \"sts:TagSession\",\n ],\n Effect: \"Allow\",\n Principal: {\n Service: \"cloudformation.amazonaws.com\",\n },\n },\n ],\n }),\n inlinePolicies: [{\n name: \"example-policy\",\n policy: JSON.stringify({\n Version: \"2012-10-17\",\n Statement: [{\n Action: [\n \"datazone:*\",\n \"ram:*\",\n \"sso:*\",\n \"kms:*\",\n ],\n Effect: \"Allow\",\n Resource: \"*\",\n }],\n }),\n }],\n});\nconst test = new aws.datazone.Domain(\"test\", {\n name: \"example\",\n domainExecutionRole: domainExecutionRole.arn,\n});\nconst testSecurityGroup = new aws.ec2.SecurityGroup(\"test\", {name: \"example\"});\nconst testProject = new aws.datazone.Project(\"test\", {\n domainIdentifier: test.id,\n glossaryTerms: [\"2N8w6XJCwZf\"],\n name: \"example name\",\n description: \"desc\",\n skipDeletionCheck: true,\n});\nconst testFormType = new aws.datazone.FormType(\"test\", {\n description: \"desc\",\n name: \"SageMakerModelFormType\",\n domainIdentifier: test.id,\n owningProjectIdentifier: testProject.id,\n status: \"DISABLED\",\n model: {\n smithy: `\\x09structure SageMakerModelFormType {\n\\x09\\x09\\x09@required\n\\x09\\x09\\x09@amazon.datazone#searchable\n\\x09\\x09\\x09modelName: String\n\n\\x09\\x09\\x09@required\n\\x09\\x09\\x09modelArn: String\n\n\\x09\\x09\\x09@required\n\\x09\\x09\\x09creationTime: String\n\\x09\\x09\\x09}\n`,\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\ndomain_execution_role = aws.iam.Role(\"domain_execution_role\",\n name=\"example-role\",\n assume_role_policy=json.dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Action\": [\n \"sts:AssumeRole\",\n \"sts:TagSession\",\n ],\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"Service\": \"datazone.amazonaws.com\",\n },\n },\n {\n \"Action\": [\n \"sts:AssumeRole\",\n \"sts:TagSession\",\n ],\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"Service\": \"cloudformation.amazonaws.com\",\n },\n },\n ],\n }),\n inline_policies=[{\n \"name\": \"example-policy\",\n \"policy\": json.dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Action\": [\n \"datazone:*\",\n \"ram:*\",\n \"sso:*\",\n \"kms:*\",\n ],\n \"Effect\": \"Allow\",\n \"Resource\": \"*\",\n }],\n }),\n }])\ntest = aws.datazone.Domain(\"test\",\n name=\"example\",\n domain_execution_role=domain_execution_role.arn)\ntest_security_group = aws.ec2.SecurityGroup(\"test\", name=\"example\")\ntest_project = aws.datazone.Project(\"test\",\n domain_identifier=test.id,\n glossary_terms=[\"2N8w6XJCwZf\"],\n name=\"example name\",\n description=\"desc\",\n skip_deletion_check=True)\ntest_form_type = aws.datazone.FormType(\"test\",\n description=\"desc\",\n name=\"SageMakerModelFormType\",\n domain_identifier=test.id,\n owning_project_identifier=test_project.id,\n status=\"DISABLED\",\n model={\n \"smithy\": \"\"\"\\x09structure SageMakerModelFormType {\n\\x09\\x09\\x09@required\n\\x09\\x09\\x09@amazon.datazone#searchable\n\\x09\\x09\\x09modelName: String\n\n\\x09\\x09\\x09@required\n\\x09\\x09\\x09modelArn: String\n\n\\x09\\x09\\x09@required\n\\x09\\x09\\x09creationTime: String\n\\x09\\x09\\x09}\n\"\"\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var domainExecutionRole = new Aws.Iam.Role(\"domain_execution_role\", new()\n {\n Name = \"example-role\",\n AssumeRolePolicy = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"Version\"] = \"2012-10-17\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Action\"] = new[]\n {\n \"sts:AssumeRole\",\n \"sts:TagSession\",\n },\n [\"Effect\"] = \"Allow\",\n [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"Service\"] = \"datazone.amazonaws.com\",\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Action\"] = new[]\n {\n \"sts:AssumeRole\",\n \"sts:TagSession\",\n },\n [\"Effect\"] = \"Allow\",\n [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"Service\"] = \"cloudformation.amazonaws.com\",\n },\n },\n },\n }),\n InlinePolicies = new[]\n {\n new Aws.Iam.Inputs.RoleInlinePolicyArgs\n {\n Name = \"example-policy\",\n Policy = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"Version\"] = \"2012-10-17\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Action\"] = new[]\n {\n \"datazone:*\",\n \"ram:*\",\n \"sso:*\",\n \"kms:*\",\n },\n [\"Effect\"] = \"Allow\",\n [\"Resource\"] = \"*\",\n },\n },\n }),\n },\n },\n });\n\n var test = new Aws.DataZone.Domain(\"test\", new()\n {\n Name = \"example\",\n DomainExecutionRole = domainExecutionRole.Arn,\n });\n\n var testSecurityGroup = new Aws.Ec2.SecurityGroup(\"test\", new()\n {\n Name = \"example\",\n });\n\n var testProject = new Aws.DataZone.Project(\"test\", new()\n {\n DomainIdentifier = test.Id,\n GlossaryTerms = new[]\n {\n \"2N8w6XJCwZf\",\n },\n Name = \"example name\",\n Description = \"desc\",\n SkipDeletionCheck = true,\n });\n\n var testFormType = new Aws.DataZone.FormType(\"test\", new()\n {\n Description = \"desc\",\n Name = \"SageMakerModelFormType\",\n DomainIdentifier = test.Id,\n OwningProjectIdentifier = testProject.Id,\n Status = \"DISABLED\",\n Model = new Aws.DataZone.Inputs.FormTypeModelArgs\n {\n Smithy = @\"\tstructure SageMakerModelFormType {\n\t\t\t@required\n\t\t\t@amazon.datazone#searchable\n\t\t\tmodelName: String\n\n\t\t\t@required\n\t\t\tmodelArn: String\n\n\t\t\t@required\n\t\t\tcreationTime: String\n\t\t\t}\n\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/datazone\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"Version\": \"2012-10-17\",\n\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t\t\"sts:TagSession\",\n\t\t\t\t\t},\n\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\"Service\": \"datazone.amazonaws.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t\t\"sts:TagSession\",\n\t\t\t\t\t},\n\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\"Service\": \"cloudformation.amazonaws.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"Version\": \"2012-10-17\",\n\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\"datazone:*\",\n\t\t\t\t\t\t\"ram:*\",\n\t\t\t\t\t\t\"sso:*\",\n\t\t\t\t\t\t\"kms:*\",\n\t\t\t\t\t},\n\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\"Resource\": \"*\",\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\tdomainExecutionRole, err := iam.NewRole(ctx, \"domain_execution_role\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"example-role\"),\n\t\t\tAssumeRolePolicy: pulumi.String(json0),\n\t\t\tInlinePolicies: iam.RoleInlinePolicyArray{\n\t\t\t\t\u0026iam.RoleInlinePolicyArgs{\n\t\t\t\t\tName: pulumi.String(\"example-policy\"),\n\t\t\t\t\tPolicy: pulumi.String(json1),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := datazone.NewDomain(ctx, \"test\", \u0026datazone.DomainArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tDomainExecutionRole: domainExecutionRole.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ec2.NewSecurityGroup(ctx, \"test\", \u0026ec2.SecurityGroupArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestProject, err := datazone.NewProject(ctx, \"test\", \u0026datazone.ProjectArgs{\n\t\t\tDomainIdentifier: test.ID(),\n\t\t\tGlossaryTerms: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2N8w6XJCwZf\"),\n\t\t\t},\n\t\t\tName: pulumi.String(\"example name\"),\n\t\t\tDescription: pulumi.String(\"desc\"),\n\t\t\tSkipDeletionCheck: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datazone.NewFormType(ctx, \"test\", \u0026datazone.FormTypeArgs{\n\t\t\tDescription: pulumi.String(\"desc\"),\n\t\t\tName: pulumi.String(\"SageMakerModelFormType\"),\n\t\t\tDomainIdentifier: test.ID(),\n\t\t\tOwningProjectIdentifier: testProject.ID(),\n\t\t\tStatus: pulumi.String(\"DISABLED\"),\n\t\t\tModel: \u0026datazone.FormTypeModelArgs{\n\t\t\t\tSmithy: pulumi.String(`\tstructure SageMakerModelFormType {\n\t\t\t@required\n\t\t\t@amazon.datazone#searchable\n\t\t\tmodelName: String\n\n\t\t\t@required\n\t\t\tmodelArn: String\n\n\t\t\t@required\n\t\t\tcreationTime: String\n\t\t\t}\n`),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.iam.inputs.RoleInlinePolicyArgs;\nimport com.pulumi.aws.datazone.Domain;\nimport com.pulumi.aws.datazone.DomainArgs;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport com.pulumi.aws.datazone.Project;\nimport com.pulumi.aws.datazone.ProjectArgs;\nimport com.pulumi.aws.datazone.FormType;\nimport com.pulumi.aws.datazone.FormTypeArgs;\nimport com.pulumi.aws.datazone.inputs.FormTypeModelArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var domainExecutionRole = new Role(\"domainExecutionRole\", RoleArgs.builder()\n .name(\"example-role\")\n .assumeRolePolicy(serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonArray(\n jsonObject(\n jsonProperty(\"Action\", jsonArray(\n \"sts:AssumeRole\", \n \"sts:TagSession\"\n )),\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Principal\", jsonObject(\n jsonProperty(\"Service\", \"datazone.amazonaws.com\")\n ))\n ), \n jsonObject(\n jsonProperty(\"Action\", jsonArray(\n \"sts:AssumeRole\", \n \"sts:TagSession\"\n )),\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Principal\", jsonObject(\n jsonProperty(\"Service\", \"cloudformation.amazonaws.com\")\n ))\n )\n ))\n )))\n .inlinePolicies(RoleInlinePolicyArgs.builder()\n .name(\"example-policy\")\n .policy(serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Action\", jsonArray(\n \"datazone:*\", \n \"ram:*\", \n \"sso:*\", \n \"kms:*\"\n )),\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Resource\", \"*\")\n )))\n )))\n .build())\n .build());\n\n var test = new Domain(\"test\", DomainArgs.builder()\n .name(\"example\")\n .domainExecutionRole(domainExecutionRole.arn())\n .build());\n\n var testSecurityGroup = new SecurityGroup(\"testSecurityGroup\", SecurityGroupArgs.builder()\n .name(\"example\")\n .build());\n\n var testProject = new Project(\"testProject\", ProjectArgs.builder()\n .domainIdentifier(test.id())\n .glossaryTerms(\"2N8w6XJCwZf\")\n .name(\"example name\")\n .description(\"desc\")\n .skipDeletionCheck(true)\n .build());\n\n var testFormType = new FormType(\"testFormType\", FormTypeArgs.builder()\n .description(\"desc\")\n .name(\"SageMakerModelFormType\")\n .domainIdentifier(test.id())\n .owningProjectIdentifier(testProject.id())\n .status(\"DISABLED\")\n .model(FormTypeModelArgs.builder()\n .smithy(\"\"\"\n\tstructure SageMakerModelFormType {\n\t\t\t@required\n\t\t\t@amazon.datazone#searchable\n\t\t\tmodelName: String\n\n\t\t\t@required\n\t\t\tmodelArn: String\n\n\t\t\t@required\n\t\t\tcreationTime: String\n\t\t\t}\n \"\"\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n domainExecutionRole:\n type: aws:iam:Role\n name: domain_execution_role\n properties:\n name: example-role\n assumeRolePolicy:\n fn::toJSON:\n Version: 2012-10-17\n Statement:\n - Action:\n - sts:AssumeRole\n - sts:TagSession\n Effect: Allow\n Principal:\n Service: datazone.amazonaws.com\n - Action:\n - sts:AssumeRole\n - sts:TagSession\n Effect: Allow\n Principal:\n Service: cloudformation.amazonaws.com\n inlinePolicies:\n - name: example-policy\n policy:\n fn::toJSON:\n Version: 2012-10-17\n Statement:\n - Action:\n - datazone:*\n - ram:*\n - sso:*\n - kms:*\n Effect: Allow\n Resource: '*'\n test:\n type: aws:datazone:Domain\n properties:\n name: example\n domainExecutionRole: ${domainExecutionRole.arn}\n testSecurityGroup:\n type: aws:ec2:SecurityGroup\n name: test\n properties:\n name: example\n testProject:\n type: aws:datazone:Project\n name: test\n properties:\n domainIdentifier: ${test.id}\n glossaryTerms:\n - 2N8w6XJCwZf\n name: example name\n description: desc\n skipDeletionCheck: true\n testFormType:\n type: aws:datazone:FormType\n name: test\n properties:\n description: desc\n name: SageMakerModelFormType\n domainIdentifier: ${test.id}\n owningProjectIdentifier: ${testProject.id}\n status: DISABLED\n model:\n smithy: |\n \tstructure SageMakerModelFormType {\n \t\t\t@required\n \t\t\t@amazon.datazone#searchable\n \t\t\tmodelName: String\n\n \t\t\t@required\n \t\t\tmodelArn: String\n\n \t\t\t@required\n \t\t\tcreationTime: String\n \t\t\t}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import DataZone Form Type using a comma separated value of `domain_identifier`,`name`,`revision`. For example:\n\n```sh\n$ pulumi import aws:datazone/formType:FormType example domain_identifier,name,revision\n```\n", + "description": "Resource for managing an AWS DataZone Form Type.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst domainExecutionRole = new aws.iam.Role(\"domain_execution_role\", {\n name: \"example-role\",\n assumeRolePolicy: JSON.stringify({\n Version: \"2012-10-17\",\n Statement: [\n {\n Action: [\n \"sts:AssumeRole\",\n \"sts:TagSession\",\n ],\n Effect: \"Allow\",\n Principal: {\n Service: \"datazone.amazonaws.com\",\n },\n },\n {\n Action: [\n \"sts:AssumeRole\",\n \"sts:TagSession\",\n ],\n Effect: \"Allow\",\n Principal: {\n Service: \"cloudformation.amazonaws.com\",\n },\n },\n ],\n }),\n inlinePolicies: [{\n name: \"example-policy\",\n policy: JSON.stringify({\n Version: \"2012-10-17\",\n Statement: [{\n Action: [\n \"datazone:*\",\n \"ram:*\",\n \"sso:*\",\n \"kms:*\",\n ],\n Effect: \"Allow\",\n Resource: \"*\",\n }],\n }),\n }],\n});\nconst test = new aws.datazone.Domain(\"test\", {\n name: \"example\",\n domainExecutionRole: domainExecutionRole.arn,\n});\nconst testSecurityGroup = new aws.ec2.SecurityGroup(\"test\", {name: \"example\"});\nconst testProject = new aws.datazone.Project(\"test\", {\n domainIdentifier: test.id,\n glossaryTerms: [\"2N8w6XJCwZf\"],\n name: \"example name\",\n description: \"desc\",\n skipDeletionCheck: true,\n});\nconst testFormType = new aws.datazone.FormType(\"test\", {\n description: \"desc\",\n name: \"SageMakerModelFormType\",\n domainIdentifier: test.id,\n owningProjectIdentifier: testProject.id,\n status: \"DISABLED\",\n model: {\n smithy: `\\\\tstructure SageMakerModelFormType {\n\\\\t\\\\t\\\\t@required\n\\\\t\\\\t\\\\t@amazon.datazone#searchable\n\\\\t\\\\t\\\\tmodelName: String\n\n\\\\t\\\\t\\\\t@required\n\\\\t\\\\t\\\\tmodelArn: String\n\n\\\\t\\\\t\\\\t@required\n\\\\t\\\\t\\\\tcreationTime: String\n\\\\t\\\\t\\\\t}\n`,\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\ndomain_execution_role = aws.iam.Role(\"domain_execution_role\",\n name=\"example-role\",\n assume_role_policy=json.dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Action\": [\n \"sts:AssumeRole\",\n \"sts:TagSession\",\n ],\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"Service\": \"datazone.amazonaws.com\",\n },\n },\n {\n \"Action\": [\n \"sts:AssumeRole\",\n \"sts:TagSession\",\n ],\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"Service\": \"cloudformation.amazonaws.com\",\n },\n },\n ],\n }),\n inline_policies=[{\n \"name\": \"example-policy\",\n \"policy\": json.dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Action\": [\n \"datazone:*\",\n \"ram:*\",\n \"sso:*\",\n \"kms:*\",\n ],\n \"Effect\": \"Allow\",\n \"Resource\": \"*\",\n }],\n }),\n }])\ntest = aws.datazone.Domain(\"test\",\n name=\"example\",\n domain_execution_role=domain_execution_role.arn)\ntest_security_group = aws.ec2.SecurityGroup(\"test\", name=\"example\")\ntest_project = aws.datazone.Project(\"test\",\n domain_identifier=test.id,\n glossary_terms=[\"2N8w6XJCwZf\"],\n name=\"example name\",\n description=\"desc\",\n skip_deletion_check=True)\ntest_form_type = aws.datazone.FormType(\"test\",\n description=\"desc\",\n name=\"SageMakerModelFormType\",\n domain_identifier=test.id,\n owning_project_identifier=test_project.id,\n status=\"DISABLED\",\n model={\n \"smithy\": \"\"\"\\tstructure SageMakerModelFormType {\n\\t\\t\\t@required\n\\t\\t\\t@amazon.datazone#searchable\n\\t\\t\\tmodelName: String\n\n\\t\\t\\t@required\n\\t\\t\\tmodelArn: String\n\n\\t\\t\\t@required\n\\t\\t\\tcreationTime: String\n\\t\\t\\t}\n\"\"\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var domainExecutionRole = new Aws.Iam.Role(\"domain_execution_role\", new()\n {\n Name = \"example-role\",\n AssumeRolePolicy = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"Version\"] = \"2012-10-17\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Action\"] = new[]\n {\n \"sts:AssumeRole\",\n \"sts:TagSession\",\n },\n [\"Effect\"] = \"Allow\",\n [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"Service\"] = \"datazone.amazonaws.com\",\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Action\"] = new[]\n {\n \"sts:AssumeRole\",\n \"sts:TagSession\",\n },\n [\"Effect\"] = \"Allow\",\n [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"Service\"] = \"cloudformation.amazonaws.com\",\n },\n },\n },\n }),\n InlinePolicies = new[]\n {\n new Aws.Iam.Inputs.RoleInlinePolicyArgs\n {\n Name = \"example-policy\",\n Policy = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"Version\"] = \"2012-10-17\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Action\"] = new[]\n {\n \"datazone:*\",\n \"ram:*\",\n \"sso:*\",\n \"kms:*\",\n },\n [\"Effect\"] = \"Allow\",\n [\"Resource\"] = \"*\",\n },\n },\n }),\n },\n },\n });\n\n var test = new Aws.DataZone.Domain(\"test\", new()\n {\n Name = \"example\",\n DomainExecutionRole = domainExecutionRole.Arn,\n });\n\n var testSecurityGroup = new Aws.Ec2.SecurityGroup(\"test\", new()\n {\n Name = \"example\",\n });\n\n var testProject = new Aws.DataZone.Project(\"test\", new()\n {\n DomainIdentifier = test.Id,\n GlossaryTerms = new[]\n {\n \"2N8w6XJCwZf\",\n },\n Name = \"example name\",\n Description = \"desc\",\n SkipDeletionCheck = true,\n });\n\n var testFormType = new Aws.DataZone.FormType(\"test\", new()\n {\n Description = \"desc\",\n Name = \"SageMakerModelFormType\",\n DomainIdentifier = test.Id,\n OwningProjectIdentifier = testProject.Id,\n Status = \"DISABLED\",\n Model = new Aws.DataZone.Inputs.FormTypeModelArgs\n {\n Smithy = @\"\\tstructure SageMakerModelFormType {\n\\t\\t\\t@required\n\\t\\t\\t@amazon.datazone#searchable\n\\t\\t\\tmodelName: String\n\n\\t\\t\\t@required\n\\t\\t\\tmodelArn: String\n\n\\t\\t\\t@required\n\\t\\t\\tcreationTime: String\n\\t\\t\\t}\n\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/datazone\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"Version\": \"2012-10-17\",\n\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t\t\"sts:TagSession\",\n\t\t\t\t\t},\n\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\"Service\": \"datazone.amazonaws.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t\t\"sts:TagSession\",\n\t\t\t\t\t},\n\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\"Service\": \"cloudformation.amazonaws.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"Version\": \"2012-10-17\",\n\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\"datazone:*\",\n\t\t\t\t\t\t\"ram:*\",\n\t\t\t\t\t\t\"sso:*\",\n\t\t\t\t\t\t\"kms:*\",\n\t\t\t\t\t},\n\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\"Resource\": \"*\",\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\tdomainExecutionRole, err := iam.NewRole(ctx, \"domain_execution_role\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"example-role\"),\n\t\t\tAssumeRolePolicy: pulumi.String(json0),\n\t\t\tInlinePolicies: iam.RoleInlinePolicyArray{\n\t\t\t\t\u0026iam.RoleInlinePolicyArgs{\n\t\t\t\t\tName: pulumi.String(\"example-policy\"),\n\t\t\t\t\tPolicy: pulumi.String(json1),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := datazone.NewDomain(ctx, \"test\", \u0026datazone.DomainArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tDomainExecutionRole: domainExecutionRole.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ec2.NewSecurityGroup(ctx, \"test\", \u0026ec2.SecurityGroupArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestProject, err := datazone.NewProject(ctx, \"test\", \u0026datazone.ProjectArgs{\n\t\t\tDomainIdentifier: test.ID(),\n\t\t\tGlossaryTerms: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2N8w6XJCwZf\"),\n\t\t\t},\n\t\t\tName: pulumi.String(\"example name\"),\n\t\t\tDescription: pulumi.String(\"desc\"),\n\t\t\tSkipDeletionCheck: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datazone.NewFormType(ctx, \"test\", \u0026datazone.FormTypeArgs{\n\t\t\tDescription: pulumi.String(\"desc\"),\n\t\t\tName: pulumi.String(\"SageMakerModelFormType\"),\n\t\t\tDomainIdentifier: test.ID(),\n\t\t\tOwningProjectIdentifier: testProject.ID(),\n\t\t\tStatus: pulumi.String(\"DISABLED\"),\n\t\t\tModel: \u0026datazone.FormTypeModelArgs{\n\t\t\t\tSmithy: pulumi.String(`\\tstructure SageMakerModelFormType {\n\\t\\t\\t@required\n\\t\\t\\t@amazon.datazone#searchable\n\\t\\t\\tmodelName: String\n\n\\t\\t\\t@required\n\\t\\t\\tmodelArn: String\n\n\\t\\t\\t@required\n\\t\\t\\tcreationTime: String\n\\t\\t\\t}\n`),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.iam.inputs.RoleInlinePolicyArgs;\nimport com.pulumi.aws.datazone.Domain;\nimport com.pulumi.aws.datazone.DomainArgs;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport com.pulumi.aws.datazone.Project;\nimport com.pulumi.aws.datazone.ProjectArgs;\nimport com.pulumi.aws.datazone.FormType;\nimport com.pulumi.aws.datazone.FormTypeArgs;\nimport com.pulumi.aws.datazone.inputs.FormTypeModelArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var domainExecutionRole = new Role(\"domainExecutionRole\", RoleArgs.builder()\n .name(\"example-role\")\n .assumeRolePolicy(serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonArray(\n jsonObject(\n jsonProperty(\"Action\", jsonArray(\n \"sts:AssumeRole\", \n \"sts:TagSession\"\n )),\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Principal\", jsonObject(\n jsonProperty(\"Service\", \"datazone.amazonaws.com\")\n ))\n ), \n jsonObject(\n jsonProperty(\"Action\", jsonArray(\n \"sts:AssumeRole\", \n \"sts:TagSession\"\n )),\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Principal\", jsonObject(\n jsonProperty(\"Service\", \"cloudformation.amazonaws.com\")\n ))\n )\n ))\n )))\n .inlinePolicies(RoleInlinePolicyArgs.builder()\n .name(\"example-policy\")\n .policy(serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Action\", jsonArray(\n \"datazone:*\", \n \"ram:*\", \n \"sso:*\", \n \"kms:*\"\n )),\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Resource\", \"*\")\n )))\n )))\n .build())\n .build());\n\n var test = new Domain(\"test\", DomainArgs.builder()\n .name(\"example\")\n .domainExecutionRole(domainExecutionRole.arn())\n .build());\n\n var testSecurityGroup = new SecurityGroup(\"testSecurityGroup\", SecurityGroupArgs.builder()\n .name(\"example\")\n .build());\n\n var testProject = new Project(\"testProject\", ProjectArgs.builder()\n .domainIdentifier(test.id())\n .glossaryTerms(\"2N8w6XJCwZf\")\n .name(\"example name\")\n .description(\"desc\")\n .skipDeletionCheck(true)\n .build());\n\n var testFormType = new FormType(\"testFormType\", FormTypeArgs.builder()\n .description(\"desc\")\n .name(\"SageMakerModelFormType\")\n .domainIdentifier(test.id())\n .owningProjectIdentifier(testProject.id())\n .status(\"DISABLED\")\n .model(FormTypeModelArgs.builder()\n .smithy(\"\"\"\n\\tstructure SageMakerModelFormType {\n\\t\\t\\t@required\n\\t\\t\\t@amazon.datazone#searchable\n\\t\\t\\tmodelName: String\n\n\\t\\t\\t@required\n\\t\\t\\tmodelArn: String\n\n\\t\\t\\t@required\n\\t\\t\\tcreationTime: String\n\\t\\t\\t}\n \"\"\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n domainExecutionRole:\n type: aws:iam:Role\n name: domain_execution_role\n properties:\n name: example-role\n assumeRolePolicy:\n fn::toJSON:\n Version: 2012-10-17\n Statement:\n - Action:\n - sts:AssumeRole\n - sts:TagSession\n Effect: Allow\n Principal:\n Service: datazone.amazonaws.com\n - Action:\n - sts:AssumeRole\n - sts:TagSession\n Effect: Allow\n Principal:\n Service: cloudformation.amazonaws.com\n inlinePolicies:\n - name: example-policy\n policy:\n fn::toJSON:\n Version: 2012-10-17\n Statement:\n - Action:\n - datazone:*\n - ram:*\n - sso:*\n - kms:*\n Effect: Allow\n Resource: '*'\n test:\n type: aws:datazone:Domain\n properties:\n name: example\n domainExecutionRole: ${domainExecutionRole.arn}\n testSecurityGroup:\n type: aws:ec2:SecurityGroup\n name: test\n properties:\n name: example\n testProject:\n type: aws:datazone:Project\n name: test\n properties:\n domainIdentifier: ${test.id}\n glossaryTerms:\n - 2N8w6XJCwZf\n name: example name\n description: desc\n skipDeletionCheck: true\n testFormType:\n type: aws:datazone:FormType\n name: test\n properties:\n description: desc\n name: SageMakerModelFormType\n domainIdentifier: ${test.id}\n owningProjectIdentifier: ${testProject.id}\n status: DISABLED\n model:\n smithy: |\n \\tstructure SageMakerModelFormType {\n \\t\\t\\t@required\n \\t\\t\\t@amazon.datazone#searchable\n \\t\\t\\tmodelName: String\n\n \\t\\t\\t@required\n \\t\\t\\tmodelArn: String\n\n \\t\\t\\t@required\n \\t\\t\\tcreationTime: String\n \\t\\t\\t}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import DataZone Form Type using a comma separated value of `domain_identifier`,`name`,`revision`. For example:\n\n```sh\n$ pulumi import aws:datazone/formType:FormType example domain_identifier,name,revision\n```\n", "properties": { "createdAt": { "type": "string", @@ -256434,7 +256434,7 @@ } }, "aws:dms/replicationConfig:ReplicationConfig": { - "description": "Provides a DMS Serverless replication config resource.\n\n\u003e **NOTE:** Changing most arguments will stop the replication if it is running. You can set \u003cspan pulumi-lang-nodejs=\"`startReplication`\" pulumi-lang-dotnet=\"`StartReplication`\" pulumi-lang-go=\"`startReplication`\" pulumi-lang-python=\"`start_replication`\" pulumi-lang-yaml=\"`startReplication`\" pulumi-lang-java=\"`startReplication`\"\u003e`start_replication`\u003c/span\u003e to resume the replication afterwards.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst name = new aws.dms.ReplicationConfig(\"name\", {\n replicationConfigIdentifier: \"test-dms-serverless-replication-tf\",\n resourceIdentifier: \"test-dms-serverless-replication-tf\",\n replicationType: \"cdc\",\n sourceEndpointArn: source.endpointArn,\n targetEndpointArn: target.endpointArn,\n tableMappings: ` {\n \"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"1\",\"rule-action\":\"include\",\"object-locator\":{\"schema-name\":\"%%\",\"table-name\":\"%%\"}}]\n }\n`,\n startReplication: true,\n computeConfig: {\n replicationSubnetGroupId: _default.replicationSubnetGroupId,\n maxCapacityUnits: 64,\n minCapacityUnits: 2,\n preferredMaintenanceWindow: \"sun:23:45-mon:00:30\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nname = aws.dms.ReplicationConfig(\"name\",\n replication_config_identifier=\"test-dms-serverless-replication-tf\",\n resource_identifier=\"test-dms-serverless-replication-tf\",\n replication_type=\"cdc\",\n source_endpoint_arn=source[\"endpointArn\"],\n target_endpoint_arn=target[\"endpointArn\"],\n table_mappings=\"\"\" {\n \"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"1\",\"rule-action\":\"include\",\"object-locator\":{\"schema-name\":\"%%\",\"table-name\":\"%%\"}}]\n }\n\"\"\",\n start_replication=True,\n compute_config={\n \"replication_subnet_group_id\": default[\"replicationSubnetGroupId\"],\n \"max_capacity_units\": 64,\n \"min_capacity_units\": 2,\n \"preferred_maintenance_window\": \"sun:23:45-mon:00:30\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var name = new Aws.Dms.ReplicationConfig(\"name\", new()\n {\n ReplicationConfigIdentifier = \"test-dms-serverless-replication-tf\",\n ResourceIdentifier = \"test-dms-serverless-replication-tf\",\n ReplicationType = \"cdc\",\n SourceEndpointArn = source.EndpointArn,\n TargetEndpointArn = target.EndpointArn,\n TableMappings = @\" {\n \"\"rules\"\":[{\"\"rule-type\"\":\"\"selection\"\",\"\"rule-id\"\":\"\"1\"\",\"\"rule-name\"\":\"\"1\"\",\"\"rule-action\"\":\"\"include\"\",\"\"object-locator\"\":{\"\"schema-name\"\":\"\"%%\"\",\"\"table-name\"\":\"\"%%\"\"}}]\n }\n\",\n StartReplication = true,\n ComputeConfig = new Aws.Dms.Inputs.ReplicationConfigComputeConfigArgs\n {\n ReplicationSubnetGroupId = @default.ReplicationSubnetGroupId,\n MaxCapacityUnits = 64,\n MinCapacityUnits = 2,\n PreferredMaintenanceWindow = \"sun:23:45-mon:00:30\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/dms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dms.NewReplicationConfig(ctx, \"name\", \u0026dms.ReplicationConfigArgs{\n\t\t\tReplicationConfigIdentifier: pulumi.String(\"test-dms-serverless-replication-tf\"),\n\t\t\tResourceIdentifier: pulumi.String(\"test-dms-serverless-replication-tf\"),\n\t\t\tReplicationType: pulumi.String(\"cdc\"),\n\t\t\tSourceEndpointArn: pulumi.Any(source.EndpointArn),\n\t\t\tTargetEndpointArn: pulumi.Any(target.EndpointArn),\n\t\t\tTableMappings: pulumi.String(\" {\\n \\\"rules\\\":[{\\\"rule-type\\\":\\\"selection\\\",\\\"rule-id\\\":\\\"1\\\",\\\"rule-name\\\":\\\"1\\\",\\\"rule-action\\\":\\\"include\\\",\\\"object-locator\\\":{\\\"schema-name\\\":\\\"%%\\\",\\\"table-name\\\":\\\"%%\\\"}}]\\n }\\n\"),\n\t\t\tStartReplication: pulumi.Bool(true),\n\t\t\tComputeConfig: \u0026dms.ReplicationConfigComputeConfigArgs{\n\t\t\t\tReplicationSubnetGroupId: pulumi.Any(_default.ReplicationSubnetGroupId),\n\t\t\t\tMaxCapacityUnits: pulumi.Int(64),\n\t\t\t\tMinCapacityUnits: pulumi.Int(2),\n\t\t\t\tPreferredMaintenanceWindow: pulumi.String(\"sun:23:45-mon:00:30\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.dms.ReplicationConfig;\nimport com.pulumi.aws.dms.ReplicationConfigArgs;\nimport com.pulumi.aws.dms.inputs.ReplicationConfigComputeConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var name = new ReplicationConfig(\"name\", ReplicationConfigArgs.builder()\n .replicationConfigIdentifier(\"test-dms-serverless-replication-tf\")\n .resourceIdentifier(\"test-dms-serverless-replication-tf\")\n .replicationType(\"cdc\")\n .sourceEndpointArn(source.endpointArn())\n .targetEndpointArn(target.endpointArn())\n .tableMappings(\"\"\"\n {\n \"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"1\",\"rule-action\":\"include\",\"object-locator\":{\"schema-name\":\"%%\",\"table-name\":\"%%\"}}]\n }\n \"\"\")\n .startReplication(true)\n .computeConfig(ReplicationConfigComputeConfigArgs.builder()\n .replicationSubnetGroupId(default_.replicationSubnetGroupId())\n .maxCapacityUnits(64)\n .minCapacityUnits(2)\n .preferredMaintenanceWindow(\"sun:23:45-mon:00:30\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n name:\n type: aws:dms:ReplicationConfig\n properties:\n replicationConfigIdentifier: test-dms-serverless-replication-tf\n resourceIdentifier: test-dms-serverless-replication-tf\n replicationType: cdc\n sourceEndpointArn: ${source.endpointArn}\n targetEndpointArn: ${target.endpointArn}\n tableMappings: |2\n {\n \"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"1\",\"rule-action\":\"include\",\"object-locator\":{\"schema-name\":\"%%\",\"table-name\":\"%%\"}}]\n }\n startReplication: true\n computeConfig:\n replicationSubnetGroupId: ${default.replicationSubnetGroupId}\n maxCapacityUnits: '64'\n minCapacityUnits: '2'\n preferredMaintenanceWindow: sun:23:45-mon:00:30\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n- `arn` (String) Amazon Resource Name (ARN) of the DMS replication configuration.\n\nUsing `pulumi import`, import a replication config using the `arn`. For example:\n\nconsole\n\n% pulumi import aws_dms_replication_config.example arn:aws:dms:us-east-1:123456789012:replication-config:UX6OL6MHMMJKFFOXE3H7LLJCMEKBDUG4ZV7DRSI\n\n", + "description": "Provides a DMS Serverless replication config resource.\n\n\u003e **NOTE:** Changing most arguments will stop the replication if it is running. You can set \u003cspan pulumi-lang-nodejs=\"`startReplication`\" pulumi-lang-dotnet=\"`StartReplication`\" pulumi-lang-go=\"`startReplication`\" pulumi-lang-python=\"`start_replication`\" pulumi-lang-yaml=\"`startReplication`\" pulumi-lang-java=\"`startReplication`\"\u003e`start_replication`\u003c/span\u003e to resume the replication afterwards.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst name = new aws.dms.ReplicationConfig(\"name\", {\n replicationConfigIdentifier: \"test-dms-serverless-replication-tf\",\n resourceIdentifier: \"test-dms-serverless-replication-tf\",\n replicationType: \"cdc\",\n sourceEndpointArn: source.endpointArn,\n targetEndpointArn: target.endpointArn,\n tableMappings: ` {\n \\\\\"rules\\\\\":[{\\\\\"rule-type\\\\\":\\\\\"selection\\\\\",\\\\\"rule-id\\\\\":\\\\\"1\\\\\",\\\\\"rule-name\\\\\":\\\\\"1\\\\\",\\\\\"rule-action\\\\\":\\\\\"include\\\\\",\\\\\"object-locator\\\\\":{\\\\\"schema-name\\\\\":\\\\\"%%\\\\\",\\\\\"table-name\\\\\":\\\\\"%%\\\\\"}}]\n }\n`,\n startReplication: true,\n computeConfig: {\n replicationSubnetGroupId: _default.replicationSubnetGroupId,\n maxCapacityUnits: 64,\n minCapacityUnits: 2,\n preferredMaintenanceWindow: \"sun:23:45-mon:00:30\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nname = aws.dms.ReplicationConfig(\"name\",\n replication_config_identifier=\"test-dms-serverless-replication-tf\",\n resource_identifier=\"test-dms-serverless-replication-tf\",\n replication_type=\"cdc\",\n source_endpoint_arn=source[\"endpointArn\"],\n target_endpoint_arn=target[\"endpointArn\"],\n table_mappings=\"\"\" {\n \\\"rules\\\":[{\\\"rule-type\\\":\\\"selection\\\",\\\"rule-id\\\":\\\"1\\\",\\\"rule-name\\\":\\\"1\\\",\\\"rule-action\\\":\\\"include\\\",\\\"object-locator\\\":{\\\"schema-name\\\":\\\"%%\\\",\\\"table-name\\\":\\\"%%\\\"}}]\n }\n\"\"\",\n start_replication=True,\n compute_config={\n \"replication_subnet_group_id\": default[\"replicationSubnetGroupId\"],\n \"max_capacity_units\": 64,\n \"min_capacity_units\": 2,\n \"preferred_maintenance_window\": \"sun:23:45-mon:00:30\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var name = new Aws.Dms.ReplicationConfig(\"name\", new()\n {\n ReplicationConfigIdentifier = \"test-dms-serverless-replication-tf\",\n ResourceIdentifier = \"test-dms-serverless-replication-tf\",\n ReplicationType = \"cdc\",\n SourceEndpointArn = source.EndpointArn,\n TargetEndpointArn = target.EndpointArn,\n TableMappings = @\" {\n \\\"\"rules\\\"\":[{\\\"\"rule-type\\\"\":\\\"\"selection\\\"\",\\\"\"rule-id\\\"\":\\\"\"1\\\"\",\\\"\"rule-name\\\"\":\\\"\"1\\\"\",\\\"\"rule-action\\\"\":\\\"\"include\\\"\",\\\"\"object-locator\\\"\":{\\\"\"schema-name\\\"\":\\\"\"%%\\\"\",\\\"\"table-name\\\"\":\\\"\"%%\\\"\"}}]\n }\n\",\n StartReplication = true,\n ComputeConfig = new Aws.Dms.Inputs.ReplicationConfigComputeConfigArgs\n {\n ReplicationSubnetGroupId = @default.ReplicationSubnetGroupId,\n MaxCapacityUnits = 64,\n MinCapacityUnits = 2,\n PreferredMaintenanceWindow = \"sun:23:45-mon:00:30\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/dms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dms.NewReplicationConfig(ctx, \"name\", \u0026dms.ReplicationConfigArgs{\n\t\t\tReplicationConfigIdentifier: pulumi.String(\"test-dms-serverless-replication-tf\"),\n\t\t\tResourceIdentifier: pulumi.String(\"test-dms-serverless-replication-tf\"),\n\t\t\tReplicationType: pulumi.String(\"cdc\"),\n\t\t\tSourceEndpointArn: pulumi.Any(source.EndpointArn),\n\t\t\tTargetEndpointArn: pulumi.Any(target.EndpointArn),\n\t\t\tTableMappings: pulumi.String(\" {\\n \\\\\\\"rules\\\\\\\":[{\\\\\\\"rule-type\\\\\\\":\\\\\\\"selection\\\\\\\",\\\\\\\"rule-id\\\\\\\":\\\\\\\"1\\\\\\\",\\\\\\\"rule-name\\\\\\\":\\\\\\\"1\\\\\\\",\\\\\\\"rule-action\\\\\\\":\\\\\\\"include\\\\\\\",\\\\\\\"object-locator\\\\\\\":{\\\\\\\"schema-name\\\\\\\":\\\\\\\"%%\\\\\\\",\\\\\\\"table-name\\\\\\\":\\\\\\\"%%\\\\\\\"}}]\\n }\\n\"),\n\t\t\tStartReplication: pulumi.Bool(true),\n\t\t\tComputeConfig: \u0026dms.ReplicationConfigComputeConfigArgs{\n\t\t\t\tReplicationSubnetGroupId: pulumi.Any(_default.ReplicationSubnetGroupId),\n\t\t\t\tMaxCapacityUnits: pulumi.Int(64),\n\t\t\t\tMinCapacityUnits: pulumi.Int(2),\n\t\t\t\tPreferredMaintenanceWindow: pulumi.String(\"sun:23:45-mon:00:30\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.dms.ReplicationConfig;\nimport com.pulumi.aws.dms.ReplicationConfigArgs;\nimport com.pulumi.aws.dms.inputs.ReplicationConfigComputeConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var name = new ReplicationConfig(\"name\", ReplicationConfigArgs.builder()\n .replicationConfigIdentifier(\"test-dms-serverless-replication-tf\")\n .resourceIdentifier(\"test-dms-serverless-replication-tf\")\n .replicationType(\"cdc\")\n .sourceEndpointArn(source.endpointArn())\n .targetEndpointArn(target.endpointArn())\n .tableMappings(\"\"\"\n {\n \\\"rules\\\":[{\\\"rule-type\\\":\\\"selection\\\",\\\"rule-id\\\":\\\"1\\\",\\\"rule-name\\\":\\\"1\\\",\\\"rule-action\\\":\\\"include\\\",\\\"object-locator\\\":{\\\"schema-name\\\":\\\"%%\\\",\\\"table-name\\\":\\\"%%\\\"}}]\n }\n \"\"\")\n .startReplication(true)\n .computeConfig(ReplicationConfigComputeConfigArgs.builder()\n .replicationSubnetGroupId(default_.replicationSubnetGroupId())\n .maxCapacityUnits(64)\n .minCapacityUnits(2)\n .preferredMaintenanceWindow(\"sun:23:45-mon:00:30\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n name:\n type: aws:dms:ReplicationConfig\n properties:\n replicationConfigIdentifier: test-dms-serverless-replication-tf\n resourceIdentifier: test-dms-serverless-replication-tf\n replicationType: cdc\n sourceEndpointArn: ${source.endpointArn}\n targetEndpointArn: ${target.endpointArn}\n tableMappings: |2\n {\n \\\"rules\\\":[{\\\"rule-type\\\":\\\"selection\\\",\\\"rule-id\\\":\\\"1\\\",\\\"rule-name\\\":\\\"1\\\",\\\"rule-action\\\":\\\"include\\\",\\\"object-locator\\\":{\\\"schema-name\\\":\\\"%%\\\",\\\"table-name\\\":\\\"%%\\\"}}]\n }\n startReplication: true\n computeConfig:\n replicationSubnetGroupId: ${default.replicationSubnetGroupId}\n maxCapacityUnits: '64'\n minCapacityUnits: '2'\n preferredMaintenanceWindow: sun:23:45-mon:00:30\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n- `arn` (String) Amazon Resource Name (ARN) of the DMS replication configuration.\n\nUsing `pulumi import`, import a replication config using the `arn`. For example:\n\nconsole\n\n% pulumi import aws_dms_replication_config.example arn:aws:dms:us-east-1:123456789012:replication-config:UX6OL6MHMMJKFFOXE3H7LLJCMEKBDUG4ZV7DRSI\n\n", "properties": { "arn": { "type": "string", @@ -261607,7 +261607,7 @@ } }, "aws:dynamodb/tableItem:TableItem": { - "description": "Provides a DynamoDB table item resource\n\n\u003e **Note:** This resource is not meant to be used for managing large amounts of data in your table, it is not designed to scale.\n You should perform **regular backups** of all data in the table, see [AWS docs for more](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BackupRestore.html).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleTable = new aws.dynamodb.Table(\"example\", {\n name: \"example-name\",\n readCapacity: 10,\n writeCapacity: 10,\n hashKey: \"exampleHashKey\",\n attributes: [{\n name: \"exampleHashKey\",\n type: \"S\",\n }],\n});\nconst example = new aws.dynamodb.TableItem(\"example\", {\n tableName: exampleTable.name,\n hashKey: exampleTable.hashKey,\n item: `{\n \"exampleHashKey\": {\"S\": \"something\"},\n \"one\": {\"N\": \"11111\"},\n \"two\": {\"N\": \"22222\"},\n \"three\": {\"N\": \"33333\"},\n \"four\": {\"N\": \"44444\"}\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_table = aws.dynamodb.Table(\"example\",\n name=\"example-name\",\n read_capacity=10,\n write_capacity=10,\n hash_key=\"exampleHashKey\",\n attributes=[{\n \"name\": \"exampleHashKey\",\n \"type\": \"S\",\n }])\nexample = aws.dynamodb.TableItem(\"example\",\n table_name=example_table.name,\n hash_key=example_table.hash_key,\n item=\"\"\"{\n \"exampleHashKey\": {\"S\": \"something\"},\n \"one\": {\"N\": \"11111\"},\n \"two\": {\"N\": \"22222\"},\n \"three\": {\"N\": \"33333\"},\n \"four\": {\"N\": \"44444\"}\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleTable = new Aws.DynamoDB.Table(\"example\", new()\n {\n Name = \"example-name\",\n ReadCapacity = 10,\n WriteCapacity = 10,\n HashKey = \"exampleHashKey\",\n Attributes = new[]\n {\n new Aws.DynamoDB.Inputs.TableAttributeArgs\n {\n Name = \"exampleHashKey\",\n Type = \"S\",\n },\n },\n });\n\n var example = new Aws.DynamoDB.TableItem(\"example\", new()\n {\n TableName = exampleTable.Name,\n HashKey = exampleTable.HashKey,\n Item = @\"{\n \"\"exampleHashKey\"\": {\"\"S\"\": \"\"something\"\"},\n \"\"one\"\": {\"\"N\"\": \"\"11111\"\"},\n \"\"two\"\": {\"\"N\"\": \"\"22222\"\"},\n \"\"three\"\": {\"\"N\"\": \"\"33333\"\"},\n \"\"four\"\": {\"\"N\"\": \"\"44444\"\"}\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/dynamodb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleTable, err := dynamodb.NewTable(ctx, \"example\", \u0026dynamodb.TableArgs{\n\t\t\tName: pulumi.String(\"example-name\"),\n\t\t\tReadCapacity: pulumi.Int(10),\n\t\t\tWriteCapacity: pulumi.Int(10),\n\t\t\tHashKey: pulumi.String(\"exampleHashKey\"),\n\t\t\tAttributes: dynamodb.TableAttributeArray{\n\t\t\t\t\u0026dynamodb.TableAttributeArgs{\n\t\t\t\t\tName: pulumi.String(\"exampleHashKey\"),\n\t\t\t\t\tType: pulumi.String(\"S\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dynamodb.NewTableItem(ctx, \"example\", \u0026dynamodb.TableItemArgs{\n\t\t\tTableName: exampleTable.Name,\n\t\t\tHashKey: exampleTable.HashKey,\n\t\t\tItem: pulumi.String(`{\n \"exampleHashKey\": {\"S\": \"something\"},\n \"one\": {\"N\": \"11111\"},\n \"two\": {\"N\": \"22222\"},\n \"three\": {\"N\": \"33333\"},\n \"four\": {\"N\": \"44444\"}\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.dynamodb.Table;\nimport com.pulumi.aws.dynamodb.TableArgs;\nimport com.pulumi.aws.dynamodb.inputs.TableAttributeArgs;\nimport com.pulumi.aws.dynamodb.TableItem;\nimport com.pulumi.aws.dynamodb.TableItemArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleTable = new Table(\"exampleTable\", TableArgs.builder()\n .name(\"example-name\")\n .readCapacity(10)\n .writeCapacity(10)\n .hashKey(\"exampleHashKey\")\n .attributes(TableAttributeArgs.builder()\n .name(\"exampleHashKey\")\n .type(\"S\")\n .build())\n .build());\n\n var example = new TableItem(\"example\", TableItemArgs.builder()\n .tableName(exampleTable.name())\n .hashKey(exampleTable.hashKey())\n .item(\"\"\"\n{\n \"exampleHashKey\": {\"S\": \"something\"},\n \"one\": {\"N\": \"11111\"},\n \"two\": {\"N\": \"22222\"},\n \"three\": {\"N\": \"33333\"},\n \"four\": {\"N\": \"44444\"}\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:dynamodb:TableItem\n properties:\n tableName: ${exampleTable.name}\n hashKey: ${exampleTable.hashKey}\n item: |\n {\n \"exampleHashKey\": {\"S\": \"something\"},\n \"one\": {\"N\": \"11111\"},\n \"two\": {\"N\": \"22222\"},\n \"three\": {\"N\": \"33333\"},\n \"four\": {\"N\": \"44444\"}\n }\n exampleTable:\n type: aws:dynamodb:Table\n name: example\n properties:\n name: example-name\n readCapacity: 10\n writeCapacity: 10\n hashKey: exampleHashKey\n attributes:\n - name: exampleHashKey\n type: S\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nYou cannot import DynamoDB table items.\n\n", + "description": "Provides a DynamoDB table item resource\n\n\u003e **Note:** This resource is not meant to be used for managing large amounts of data in your table, it is not designed to scale.\n You should perform **regular backups** of all data in the table, see [AWS docs for more](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BackupRestore.html).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleTable = new aws.dynamodb.Table(\"example\", {\n name: \"example-name\",\n readCapacity: 10,\n writeCapacity: 10,\n hashKey: \"exampleHashKey\",\n attributes: [{\n name: \"exampleHashKey\",\n type: \"S\",\n }],\n});\nconst example = new aws.dynamodb.TableItem(\"example\", {\n tableName: exampleTable.name,\n hashKey: exampleTable.hashKey,\n item: `{\n \\\\\"exampleHashKey\\\\\": {\\\\\"S\\\\\": \\\\\"something\\\\\"},\n \\\\\"one\\\\\": {\\\\\"N\\\\\": \\\\\"11111\\\\\"},\n \\\\\"two\\\\\": {\\\\\"N\\\\\": \\\\\"22222\\\\\"},\n \\\\\"three\\\\\": {\\\\\"N\\\\\": \\\\\"33333\\\\\"},\n \\\\\"four\\\\\": {\\\\\"N\\\\\": \\\\\"44444\\\\\"}\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_table = aws.dynamodb.Table(\"example\",\n name=\"example-name\",\n read_capacity=10,\n write_capacity=10,\n hash_key=\"exampleHashKey\",\n attributes=[{\n \"name\": \"exampleHashKey\",\n \"type\": \"S\",\n }])\nexample = aws.dynamodb.TableItem(\"example\",\n table_name=example_table.name,\n hash_key=example_table.hash_key,\n item=\"\"\"{\n \\\"exampleHashKey\\\": {\\\"S\\\": \\\"something\\\"},\n \\\"one\\\": {\\\"N\\\": \\\"11111\\\"},\n \\\"two\\\": {\\\"N\\\": \\\"22222\\\"},\n \\\"three\\\": {\\\"N\\\": \\\"33333\\\"},\n \\\"four\\\": {\\\"N\\\": \\\"44444\\\"}\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleTable = new Aws.DynamoDB.Table(\"example\", new()\n {\n Name = \"example-name\",\n ReadCapacity = 10,\n WriteCapacity = 10,\n HashKey = \"exampleHashKey\",\n Attributes = new[]\n {\n new Aws.DynamoDB.Inputs.TableAttributeArgs\n {\n Name = \"exampleHashKey\",\n Type = \"S\",\n },\n },\n });\n\n var example = new Aws.DynamoDB.TableItem(\"example\", new()\n {\n TableName = exampleTable.Name,\n HashKey = exampleTable.HashKey,\n Item = @\"{\n \\\"\"exampleHashKey\\\"\": {\\\"\"S\\\"\": \\\"\"something\\\"\"},\n \\\"\"one\\\"\": {\\\"\"N\\\"\": \\\"\"11111\\\"\"},\n \\\"\"two\\\"\": {\\\"\"N\\\"\": \\\"\"22222\\\"\"},\n \\\"\"three\\\"\": {\\\"\"N\\\"\": \\\"\"33333\\\"\"},\n \\\"\"four\\\"\": {\\\"\"N\\\"\": \\\"\"44444\\\"\"}\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/dynamodb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleTable, err := dynamodb.NewTable(ctx, \"example\", \u0026dynamodb.TableArgs{\n\t\t\tName: pulumi.String(\"example-name\"),\n\t\t\tReadCapacity: pulumi.Int(10),\n\t\t\tWriteCapacity: pulumi.Int(10),\n\t\t\tHashKey: pulumi.String(\"exampleHashKey\"),\n\t\t\tAttributes: dynamodb.TableAttributeArray{\n\t\t\t\t\u0026dynamodb.TableAttributeArgs{\n\t\t\t\t\tName: pulumi.String(\"exampleHashKey\"),\n\t\t\t\t\tType: pulumi.String(\"S\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dynamodb.NewTableItem(ctx, \"example\", \u0026dynamodb.TableItemArgs{\n\t\t\tTableName: exampleTable.Name,\n\t\t\tHashKey: exampleTable.HashKey,\n\t\t\tItem: pulumi.String(`{\n \\\"exampleHashKey\\\": {\\\"S\\\": \\\"something\\\"},\n \\\"one\\\": {\\\"N\\\": \\\"11111\\\"},\n \\\"two\\\": {\\\"N\\\": \\\"22222\\\"},\n \\\"three\\\": {\\\"N\\\": \\\"33333\\\"},\n \\\"four\\\": {\\\"N\\\": \\\"44444\\\"}\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.dynamodb.Table;\nimport com.pulumi.aws.dynamodb.TableArgs;\nimport com.pulumi.aws.dynamodb.inputs.TableAttributeArgs;\nimport com.pulumi.aws.dynamodb.TableItem;\nimport com.pulumi.aws.dynamodb.TableItemArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleTable = new Table(\"exampleTable\", TableArgs.builder()\n .name(\"example-name\")\n .readCapacity(10)\n .writeCapacity(10)\n .hashKey(\"exampleHashKey\")\n .attributes(TableAttributeArgs.builder()\n .name(\"exampleHashKey\")\n .type(\"S\")\n .build())\n .build());\n\n var example = new TableItem(\"example\", TableItemArgs.builder()\n .tableName(exampleTable.name())\n .hashKey(exampleTable.hashKey())\n .item(\"\"\"\n{\n \\\"exampleHashKey\\\": {\\\"S\\\": \\\"something\\\"},\n \\\"one\\\": {\\\"N\\\": \\\"11111\\\"},\n \\\"two\\\": {\\\"N\\\": \\\"22222\\\"},\n \\\"three\\\": {\\\"N\\\": \\\"33333\\\"},\n \\\"four\\\": {\\\"N\\\": \\\"44444\\\"}\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:dynamodb:TableItem\n properties:\n tableName: ${exampleTable.name}\n hashKey: ${exampleTable.hashKey}\n item: |\n {\n \\\"exampleHashKey\\\": {\\\"S\\\": \\\"something\\\"},\n \\\"one\\\": {\\\"N\\\": \\\"11111\\\"},\n \\\"two\\\": {\\\"N\\\": \\\"22222\\\"},\n \\\"three\\\": {\\\"N\\\": \\\"33333\\\"},\n \\\"four\\\": {\\\"N\\\": \\\"44444\\\"}\n }\n exampleTable:\n type: aws:dynamodb:Table\n name: example\n properties:\n name: example-name\n readCapacity: 10\n writeCapacity: 10\n hashKey: exampleHashKey\n attributes:\n - name: exampleHashKey\n type: S\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nYou cannot import DynamoDB table items.\n\n", "properties": { "hashKey": { "type": "string", @@ -273040,7 +273040,7 @@ } }, "aws:ec2/securityGroup:SecurityGroup": { - "description": "Provides a security group resource.\n\n\u003e **NOTE:** Avoid using the \u003cspan pulumi-lang-nodejs=\"`ingress`\" pulumi-lang-dotnet=\"`Ingress`\" pulumi-lang-go=\"`ingress`\" pulumi-lang-python=\"`ingress`\" pulumi-lang-yaml=\"`ingress`\" pulumi-lang-java=\"`ingress`\"\u003e`ingress`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`egress`\" pulumi-lang-dotnet=\"`Egress`\" pulumi-lang-go=\"`egress`\" pulumi-lang-python=\"`egress`\" pulumi-lang-yaml=\"`egress`\" pulumi-lang-java=\"`egress`\"\u003e`egress`\u003c/span\u003e arguments of the \u003cspan pulumi-lang-nodejs=\"`aws.ec2.SecurityGroup`\" pulumi-lang-dotnet=\"`aws.ec2.SecurityGroup`\" pulumi-lang-go=\"`ec2.SecurityGroup`\" pulumi-lang-python=\"`ec2.SecurityGroup`\" pulumi-lang-yaml=\"`aws.ec2.SecurityGroup`\" pulumi-lang-java=\"`aws.ec2.SecurityGroup`\"\u003e`aws.ec2.SecurityGroup`\u003c/span\u003e resource to configure in-line rules, as they struggle with managing multiple CIDR blocks, and, due to the historical lack of unique IDs, tags and descriptions. To avoid these problems, use the current best practice of the \u003cspan pulumi-lang-nodejs=\"`aws.vpc.SecurityGroupEgressRule`\" pulumi-lang-dotnet=\"`aws.vpc.SecurityGroupEgressRule`\" pulumi-lang-go=\"`vpc.SecurityGroupEgressRule`\" pulumi-lang-python=\"`vpc.SecurityGroupEgressRule`\" pulumi-lang-yaml=\"`aws.vpc.SecurityGroupEgressRule`\" pulumi-lang-java=\"`aws.vpc.SecurityGroupEgressRule`\"\u003e`aws.vpc.SecurityGroupEgressRule`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`aws.vpc.SecurityGroupIngressRule`\" pulumi-lang-dotnet=\"`aws.vpc.SecurityGroupIngressRule`\" pulumi-lang-go=\"`vpc.SecurityGroupIngressRule`\" pulumi-lang-python=\"`vpc.SecurityGroupIngressRule`\" pulumi-lang-yaml=\"`aws.vpc.SecurityGroupIngressRule`\" pulumi-lang-java=\"`aws.vpc.SecurityGroupIngressRule`\"\u003e`aws.vpc.SecurityGroupIngressRule`\u003c/span\u003e resources with one CIDR block per rule.\n\n!\u003e **WARNING:** You should not use the \u003cspan pulumi-lang-nodejs=\"`aws.ec2.SecurityGroup`\" pulumi-lang-dotnet=\"`aws.ec2.SecurityGroup`\" pulumi-lang-go=\"`ec2.SecurityGroup`\" pulumi-lang-python=\"`ec2.SecurityGroup`\" pulumi-lang-yaml=\"`aws.ec2.SecurityGroup`\" pulumi-lang-java=\"`aws.ec2.SecurityGroup`\"\u003e`aws.ec2.SecurityGroup`\u003c/span\u003e resource with _in-line rules_ (using the \u003cspan pulumi-lang-nodejs=\"`ingress`\" pulumi-lang-dotnet=\"`Ingress`\" pulumi-lang-go=\"`ingress`\" pulumi-lang-python=\"`ingress`\" pulumi-lang-yaml=\"`ingress`\" pulumi-lang-java=\"`ingress`\"\u003e`ingress`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`egress`\" pulumi-lang-dotnet=\"`Egress`\" pulumi-lang-go=\"`egress`\" pulumi-lang-python=\"`egress`\" pulumi-lang-yaml=\"`egress`\" pulumi-lang-java=\"`egress`\"\u003e`egress`\u003c/span\u003e arguments of \u003cspan pulumi-lang-nodejs=\"`aws.ec2.SecurityGroup`\" pulumi-lang-dotnet=\"`aws.ec2.SecurityGroup`\" pulumi-lang-go=\"`ec2.SecurityGroup`\" pulumi-lang-python=\"`ec2.SecurityGroup`\" pulumi-lang-yaml=\"`aws.ec2.SecurityGroup`\" pulumi-lang-java=\"`aws.ec2.SecurityGroup`\"\u003e`aws.ec2.SecurityGroup`\u003c/span\u003e) in conjunction with the \u003cspan pulumi-lang-nodejs=\"`aws.vpc.SecurityGroupEgressRule`\" pulumi-lang-dotnet=\"`aws.vpc.SecurityGroupEgressRule`\" pulumi-lang-go=\"`vpc.SecurityGroupEgressRule`\" pulumi-lang-python=\"`vpc.SecurityGroupEgressRule`\" pulumi-lang-yaml=\"`aws.vpc.SecurityGroupEgressRule`\" pulumi-lang-java=\"`aws.vpc.SecurityGroupEgressRule`\"\u003e`aws.vpc.SecurityGroupEgressRule`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`aws.vpc.SecurityGroupIngressRule`\" pulumi-lang-dotnet=\"`aws.vpc.SecurityGroupIngressRule`\" pulumi-lang-go=\"`vpc.SecurityGroupIngressRule`\" pulumi-lang-python=\"`vpc.SecurityGroupIngressRule`\" pulumi-lang-yaml=\"`aws.vpc.SecurityGroupIngressRule`\" pulumi-lang-java=\"`aws.vpc.SecurityGroupIngressRule`\"\u003e`aws.vpc.SecurityGroupIngressRule`\u003c/span\u003e resources or the \u003cspan pulumi-lang-nodejs=\"`aws.ec2.SecurityGroupRule`\" pulumi-lang-dotnet=\"`aws.ec2.SecurityGroupRule`\" pulumi-lang-go=\"`ec2.SecurityGroupRule`\" pulumi-lang-python=\"`ec2.SecurityGroupRule`\" pulumi-lang-yaml=\"`aws.ec2.SecurityGroupRule`\" pulumi-lang-java=\"`aws.ec2.SecurityGroupRule`\"\u003e`aws.ec2.SecurityGroupRule`\u003c/span\u003e resource. Doing so may cause rule conflicts, perpetual differences, and result in rules being overwritten.\n\n\u003e **NOTE:** Referencing Security Groups across VPC peering has certain restrictions. More information is available in the [VPC Peering User Guide](https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-security-groups.html).\n\n\u003e **NOTE:** Due to [AWS Lambda improved VPC networking changes that began deploying in September 2019](https://aws.amazon.com/blogs/compute/announcing-improved-vpc-networking-for-aws-lambda-functions/), security groups associated with Lambda Functions can take up to 45 minutes to successfully delete. To allow for successful deletion, the provider will wait for at least 45 minutes even if a shorter delete timeout is specified.\n\n\u003e **NOTE:** The \u003cspan pulumi-lang-nodejs=\"`cidrBlocks`\" pulumi-lang-dotnet=\"`CidrBlocks`\" pulumi-lang-go=\"`cidrBlocks`\" pulumi-lang-python=\"`cidr_blocks`\" pulumi-lang-yaml=\"`cidrBlocks`\" pulumi-lang-java=\"`cidrBlocks`\"\u003e`cidr_blocks`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipv6CidrBlocks`\" pulumi-lang-dotnet=\"`Ipv6CidrBlocks`\" pulumi-lang-go=\"`ipv6CidrBlocks`\" pulumi-lang-python=\"`ipv6_cidr_blocks`\" pulumi-lang-yaml=\"`ipv6CidrBlocks`\" pulumi-lang-java=\"`ipv6CidrBlocks`\"\u003e`ipv6_cidr_blocks`\u003c/span\u003e parameters are optional in the \u003cspan pulumi-lang-nodejs=\"`ingress`\" pulumi-lang-dotnet=\"`Ingress`\" pulumi-lang-go=\"`ingress`\" pulumi-lang-python=\"`ingress`\" pulumi-lang-yaml=\"`ingress`\" pulumi-lang-java=\"`ingress`\"\u003e`ingress`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`egress`\" pulumi-lang-dotnet=\"`Egress`\" pulumi-lang-go=\"`egress`\" pulumi-lang-python=\"`egress`\" pulumi-lang-yaml=\"`egress`\" pulumi-lang-java=\"`egress`\"\u003e`egress`\u003c/span\u003e blocks. If nothing is specified, traffic will be blocked as described in _NOTE on Egress rules_ later.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst allowTls = new aws.ec2.SecurityGroup(\"allow_tls\", {\n name: \"allow_tls\",\n description: \"Allow TLS inbound traffic and all outbound traffic\",\n vpcId: main.id,\n tags: {\n Name: \"allow_tls\",\n },\n});\nconst allowTlsIpv4 = new aws.vpc.SecurityGroupIngressRule(\"allow_tls_ipv4\", {\n securityGroupId: allowTls.id,\n cidrIpv4: main.cidrBlock,\n fromPort: 443,\n ipProtocol: \"tcp\",\n toPort: 443,\n});\nconst allowTlsIpv6 = new aws.vpc.SecurityGroupIngressRule(\"allow_tls_ipv6\", {\n securityGroupId: allowTls.id,\n cidrIpv6: main.ipv6CidrBlock,\n fromPort: 443,\n ipProtocol: \"tcp\",\n toPort: 443,\n});\nconst allowAllTrafficIpv4 = new aws.vpc.SecurityGroupEgressRule(\"allow_all_traffic_ipv4\", {\n securityGroupId: allowTls.id,\n cidrIpv4: \"0.0.0.0/0\",\n ipProtocol: \"-1\",\n});\nconst allowAllTrafficIpv6 = new aws.vpc.SecurityGroupEgressRule(\"allow_all_traffic_ipv6\", {\n securityGroupId: allowTls.id,\n cidrIpv6: \"::/0\",\n ipProtocol: \"-1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nallow_tls = aws.ec2.SecurityGroup(\"allow_tls\",\n name=\"allow_tls\",\n description=\"Allow TLS inbound traffic and all outbound traffic\",\n vpc_id=main[\"id\"],\n tags={\n \"Name\": \"allow_tls\",\n })\nallow_tls_ipv4 = aws.vpc.SecurityGroupIngressRule(\"allow_tls_ipv4\",\n security_group_id=allow_tls.id,\n cidr_ipv4=main[\"cidrBlock\"],\n from_port=443,\n ip_protocol=\"tcp\",\n to_port=443)\nallow_tls_ipv6 = aws.vpc.SecurityGroupIngressRule(\"allow_tls_ipv6\",\n security_group_id=allow_tls.id,\n cidr_ipv6=main[\"ipv6CidrBlock\"],\n from_port=443,\n ip_protocol=\"tcp\",\n to_port=443)\nallow_all_traffic_ipv4 = aws.vpc.SecurityGroupEgressRule(\"allow_all_traffic_ipv4\",\n security_group_id=allow_tls.id,\n cidr_ipv4=\"0.0.0.0/0\",\n ip_protocol=\"-1\")\nallow_all_traffic_ipv6 = aws.vpc.SecurityGroupEgressRule(\"allow_all_traffic_ipv6\",\n security_group_id=allow_tls.id,\n cidr_ipv6=\"::/0\",\n ip_protocol=\"-1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var allowTls = new Aws.Ec2.SecurityGroup(\"allow_tls\", new()\n {\n Name = \"allow_tls\",\n Description = \"Allow TLS inbound traffic and all outbound traffic\",\n VpcId = main.Id,\n Tags = \n {\n { \"Name\", \"allow_tls\" },\n },\n });\n\n var allowTlsIpv4 = new Aws.Vpc.SecurityGroupIngressRule(\"allow_tls_ipv4\", new()\n {\n SecurityGroupId = allowTls.Id,\n CidrIpv4 = main.CidrBlock,\n FromPort = 443,\n IpProtocol = \"tcp\",\n ToPort = 443,\n });\n\n var allowTlsIpv6 = new Aws.Vpc.SecurityGroupIngressRule(\"allow_tls_ipv6\", new()\n {\n SecurityGroupId = allowTls.Id,\n CidrIpv6 = main.Ipv6CidrBlock,\n FromPort = 443,\n IpProtocol = \"tcp\",\n ToPort = 443,\n });\n\n var allowAllTrafficIpv4 = new Aws.Vpc.SecurityGroupEgressRule(\"allow_all_traffic_ipv4\", new()\n {\n SecurityGroupId = allowTls.Id,\n CidrIpv4 = \"0.0.0.0/0\",\n IpProtocol = \"-1\",\n });\n\n var allowAllTrafficIpv6 = new Aws.Vpc.SecurityGroupEgressRule(\"allow_all_traffic_ipv6\", new()\n {\n SecurityGroupId = allowTls.Id,\n CidrIpv6 = \"::/0\",\n IpProtocol = \"-1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/vpc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tallowTls, err := ec2.NewSecurityGroup(ctx, \"allow_tls\", \u0026ec2.SecurityGroupArgs{\n\t\t\tName: pulumi.String(\"allow_tls\"),\n\t\t\tDescription: pulumi.String(\"Allow TLS inbound traffic and all outbound traffic\"),\n\t\t\tVpcId: pulumi.Any(main.Id),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"allow_tls\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vpc.NewSecurityGroupIngressRule(ctx, \"allow_tls_ipv4\", \u0026vpc.SecurityGroupIngressRuleArgs{\n\t\t\tSecurityGroupId: allowTls.ID(),\n\t\t\tCidrIpv4: pulumi.Any(main.CidrBlock),\n\t\t\tFromPort: pulumi.Int(443),\n\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\tToPort: pulumi.Int(443),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vpc.NewSecurityGroupIngressRule(ctx, \"allow_tls_ipv6\", \u0026vpc.SecurityGroupIngressRuleArgs{\n\t\t\tSecurityGroupId: allowTls.ID(),\n\t\t\tCidrIpv6: pulumi.Any(main.Ipv6CidrBlock),\n\t\t\tFromPort: pulumi.Int(443),\n\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\tToPort: pulumi.Int(443),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vpc.NewSecurityGroupEgressRule(ctx, \"allow_all_traffic_ipv4\", \u0026vpc.SecurityGroupEgressRuleArgs{\n\t\t\tSecurityGroupId: allowTls.ID(),\n\t\t\tCidrIpv4: pulumi.String(\"0.0.0.0/0\"),\n\t\t\tIpProtocol: pulumi.String(\"-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vpc.NewSecurityGroupEgressRule(ctx, \"allow_all_traffic_ipv6\", \u0026vpc.SecurityGroupEgressRuleArgs{\n\t\t\tSecurityGroupId: allowTls.ID(),\n\t\t\tCidrIpv6: pulumi.String(\"::/0\"),\n\t\t\tIpProtocol: pulumi.String(\"-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport com.pulumi.aws.vpc.SecurityGroupIngressRule;\nimport com.pulumi.aws.vpc.SecurityGroupIngressRuleArgs;\nimport com.pulumi.aws.vpc.SecurityGroupEgressRule;\nimport com.pulumi.aws.vpc.SecurityGroupEgressRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var allowTls = new SecurityGroup(\"allowTls\", SecurityGroupArgs.builder()\n .name(\"allow_tls\")\n .description(\"Allow TLS inbound traffic and all outbound traffic\")\n .vpcId(main.id())\n .tags(Map.of(\"Name\", \"allow_tls\"))\n .build());\n\n var allowTlsIpv4 = new SecurityGroupIngressRule(\"allowTlsIpv4\", SecurityGroupIngressRuleArgs.builder()\n .securityGroupId(allowTls.id())\n .cidrIpv4(main.cidrBlock())\n .fromPort(443)\n .ipProtocol(\"tcp\")\n .toPort(443)\n .build());\n\n var allowTlsIpv6 = new SecurityGroupIngressRule(\"allowTlsIpv6\", SecurityGroupIngressRuleArgs.builder()\n .securityGroupId(allowTls.id())\n .cidrIpv6(main.ipv6CidrBlock())\n .fromPort(443)\n .ipProtocol(\"tcp\")\n .toPort(443)\n .build());\n\n var allowAllTrafficIpv4 = new SecurityGroupEgressRule(\"allowAllTrafficIpv4\", SecurityGroupEgressRuleArgs.builder()\n .securityGroupId(allowTls.id())\n .cidrIpv4(\"0.0.0.0/0\")\n .ipProtocol(\"-1\")\n .build());\n\n var allowAllTrafficIpv6 = new SecurityGroupEgressRule(\"allowAllTrafficIpv6\", SecurityGroupEgressRuleArgs.builder()\n .securityGroupId(allowTls.id())\n .cidrIpv6(\"::/0\")\n .ipProtocol(\"-1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n allowTls:\n type: aws:ec2:SecurityGroup\n name: allow_tls\n properties:\n name: allow_tls\n description: Allow TLS inbound traffic and all outbound traffic\n vpcId: ${main.id}\n tags:\n Name: allow_tls\n allowTlsIpv4:\n type: aws:vpc:SecurityGroupIngressRule\n name: allow_tls_ipv4\n properties:\n securityGroupId: ${allowTls.id}\n cidrIpv4: ${main.cidrBlock}\n fromPort: 443\n ipProtocol: tcp\n toPort: 443\n allowTlsIpv6:\n type: aws:vpc:SecurityGroupIngressRule\n name: allow_tls_ipv6\n properties:\n securityGroupId: ${allowTls.id}\n cidrIpv6: ${main.ipv6CidrBlock}\n fromPort: 443\n ipProtocol: tcp\n toPort: 443\n allowAllTrafficIpv4:\n type: aws:vpc:SecurityGroupEgressRule\n name: allow_all_traffic_ipv4\n properties:\n securityGroupId: ${allowTls.id}\n cidrIpv4: 0.0.0.0/0\n ipProtocol: '-1'\n allowAllTrafficIpv6:\n type: aws:vpc:SecurityGroupEgressRule\n name: allow_all_traffic_ipv6\n properties:\n securityGroupId: ${allowTls.id}\n cidrIpv6: ::/0\n ipProtocol: '-1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e **NOTE on Egress rules:** By default, AWS creates an `ALLOW ALL` egress rule when creating a new Security Group inside of a VPC. When creating a new Security Group inside a VPC, **this provider will remove this default rule**, and require you specifically re-create it if you desire that rule. We feel this leads to fewer surprises in terms of controlling your egress rules. If you desire this rule to be in place, you can use this \u003cspan pulumi-lang-nodejs=\"`egress`\" pulumi-lang-dotnet=\"`Egress`\" pulumi-lang-go=\"`egress`\" pulumi-lang-python=\"`egress`\" pulumi-lang-yaml=\"`egress`\" pulumi-lang-java=\"`egress`\"\u003e`egress`\u003c/span\u003e block:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ec2.SecurityGroup(\"example\", {egress: [{\n fromPort: 0,\n toPort: 0,\n protocol: \"-1\",\n cidrBlocks: [\"0.0.0.0/0\"],\n ipv6CidrBlocks: [\"::/0\"],\n}]});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ec2.SecurityGroup(\"example\", egress=[{\n \"from_port\": 0,\n \"to_port\": 0,\n \"protocol\": \"-1\",\n \"cidr_blocks\": [\"0.0.0.0/0\"],\n \"ipv6_cidr_blocks\": [\"::/0\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ec2.SecurityGroup(\"example\", new()\n {\n Egress = new[]\n {\n new Aws.Ec2.Inputs.SecurityGroupEgressArgs\n {\n FromPort = 0,\n ToPort = 0,\n Protocol = \"-1\",\n CidrBlocks = new[]\n {\n \"0.0.0.0/0\",\n },\n Ipv6CidrBlocks = new[]\n {\n \"::/0\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ec2.NewSecurityGroup(ctx, \"example\", \u0026ec2.SecurityGroupArgs{\n\t\t\tEgress: ec2.SecurityGroupEgressArray{\n\t\t\t\t\u0026ec2.SecurityGroupEgressArgs{\n\t\t\t\t\tFromPort: pulumi.Int(0),\n\t\t\t\t\tToPort: pulumi.Int(0),\n\t\t\t\t\tProtocol: pulumi.String(\"-1\"),\n\t\t\t\t\tCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t\t},\n\t\t\t\t\tIpv6CidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"::/0\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport com.pulumi.aws.ec2.inputs.SecurityGroupEgressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new SecurityGroup(\"example\", SecurityGroupArgs.builder()\n .egress(SecurityGroupEgressArgs.builder()\n .fromPort(0)\n .toPort(0)\n .protocol(\"-1\")\n .cidrBlocks(\"0.0.0.0/0\")\n .ipv6CidrBlocks(\"::/0\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ec2:SecurityGroup\n properties:\n egress:\n - fromPort: 0\n toPort: 0\n protocol: '-1'\n cidrBlocks:\n - 0.0.0.0/0\n ipv6CidrBlocks:\n - ::/0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Usage With Prefix List IDs\n\nPrefix Lists are either managed by AWS internally, or created by the customer using a\nPrefix List resource. Prefix Lists provided by\nAWS are associated with a prefix list name, or service name, that is linked to a specific region.\nPrefix list IDs are exported on VPC Endpoints, so you can use this format:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst myEndpoint = new aws.ec2.VpcEndpoint(\"my_endpoint\", {});\nconst example = new aws.ec2.SecurityGroup(\"example\", {egress: [{\n fromPort: 0,\n toPort: 0,\n protocol: \"-1\",\n prefixListIds: [myEndpoint.prefixListId],\n}]});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nmy_endpoint = aws.ec2.VpcEndpoint(\"my_endpoint\")\nexample = aws.ec2.SecurityGroup(\"example\", egress=[{\n \"from_port\": 0,\n \"to_port\": 0,\n \"protocol\": \"-1\",\n \"prefix_list_ids\": [my_endpoint.prefix_list_id],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myEndpoint = new Aws.Ec2.VpcEndpoint(\"my_endpoint\");\n\n var example = new Aws.Ec2.SecurityGroup(\"example\", new()\n {\n Egress = new[]\n {\n new Aws.Ec2.Inputs.SecurityGroupEgressArgs\n {\n FromPort = 0,\n ToPort = 0,\n Protocol = \"-1\",\n PrefixListIds = new[]\n {\n myEndpoint.PrefixListId,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyEndpoint, err := ec2.NewVpcEndpoint(ctx, \"my_endpoint\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ec2.NewSecurityGroup(ctx, \"example\", \u0026ec2.SecurityGroupArgs{\n\t\t\tEgress: ec2.SecurityGroupEgressArray{\n\t\t\t\t\u0026ec2.SecurityGroupEgressArgs{\n\t\t\t\t\tFromPort: pulumi.Int(0),\n\t\t\t\t\tToPort: pulumi.Int(0),\n\t\t\t\t\tProtocol: pulumi.String(\"-1\"),\n\t\t\t\t\tPrefixListIds: pulumi.StringArray{\n\t\t\t\t\t\tmyEndpoint.PrefixListId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.VpcEndpoint;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport com.pulumi.aws.ec2.inputs.SecurityGroupEgressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var myEndpoint = new VpcEndpoint(\"myEndpoint\");\n\n var example = new SecurityGroup(\"example\", SecurityGroupArgs.builder()\n .egress(SecurityGroupEgressArgs.builder()\n .fromPort(0)\n .toPort(0)\n .protocol(\"-1\")\n .prefixListIds(myEndpoint.prefixListId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ec2:SecurityGroup\n properties:\n egress:\n - fromPort: 0\n toPort: 0\n protocol: '-1'\n prefixListIds:\n - ${myEndpoint.prefixListId}\n myEndpoint:\n type: aws:ec2:VpcEndpoint\n name: my_endpoint\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can also find a specific Prefix List using the \u003cspan pulumi-lang-nodejs=\"`aws.ec2.getPrefixList`\" pulumi-lang-dotnet=\"`aws.ec2.getPrefixList`\" pulumi-lang-go=\"`ec2.getPrefixList`\" pulumi-lang-python=\"`ec2_get_prefix_list`\" pulumi-lang-yaml=\"`aws.ec2.getPrefixList`\" pulumi-lang-java=\"`aws.ec2.getPrefixList`\"\u003e`aws.ec2.getPrefixList`\u003c/span\u003e data source.\n\n### Removing All Ingress and Egress Rules\n\nThe \u003cspan pulumi-lang-nodejs=\"`ingress`\" pulumi-lang-dotnet=\"`Ingress`\" pulumi-lang-go=\"`ingress`\" pulumi-lang-python=\"`ingress`\" pulumi-lang-yaml=\"`ingress`\" pulumi-lang-java=\"`ingress`\"\u003e`ingress`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`egress`\" pulumi-lang-dotnet=\"`Egress`\" pulumi-lang-go=\"`egress`\" pulumi-lang-python=\"`egress`\" pulumi-lang-yaml=\"`egress`\" pulumi-lang-java=\"`egress`\"\u003e`egress`\u003c/span\u003e arguments are processed in attributes-as-blocks mode. Due to this, removing these arguments from the configuration will **not** cause the provider to destroy the managed rules. To subsequently remove all managed ingress and egress rules:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ec2.SecurityGroup(\"example\", {\n name: \"sg\",\n vpcId: exampleAwsVpc.id,\n ingress: [],\n egress: [],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ec2.SecurityGroup(\"example\",\n name=\"sg\",\n vpc_id=example_aws_vpc[\"id\"],\n ingress=[],\n egress=[])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ec2.SecurityGroup(\"example\", new()\n {\n Name = \"sg\",\n VpcId = exampleAwsVpc.Id,\n Ingress = new[] {},\n Egress = new[] {},\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ec2.NewSecurityGroup(ctx, \"example\", \u0026ec2.SecurityGroupArgs{\n\t\t\tName: pulumi.String(\"sg\"),\n\t\t\tVpcId: pulumi.Any(exampleAwsVpc.Id),\n\t\t\tIngress: ec2.SecurityGroupIngressArray{},\n\t\t\tEgress: ec2.SecurityGroupEgressArray{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new SecurityGroup(\"example\", SecurityGroupArgs.builder()\n .name(\"sg\")\n .vpcId(exampleAwsVpc.id())\n .ingress()\n .egress()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ec2:SecurityGroup\n properties:\n name: sg\n vpcId: ${exampleAwsVpc.id}\n ingress: []\n egress: []\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Recreating a Security Group\n\nA simple security group \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e change \"forces new\" the security group--the provider destroys the security group and creates a new one. (Likewise, \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`namePrefix`\" pulumi-lang-dotnet=\"`NamePrefix`\" pulumi-lang-go=\"`namePrefix`\" pulumi-lang-python=\"`name_prefix`\" pulumi-lang-yaml=\"`namePrefix`\" pulumi-lang-java=\"`namePrefix`\"\u003e`name_prefix`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`vpcId`\" pulumi-lang-dotnet=\"`VpcId`\" pulumi-lang-go=\"`vpcId`\" pulumi-lang-python=\"`vpc_id`\" pulumi-lang-yaml=\"`vpcId`\" pulumi-lang-java=\"`vpcId`\"\u003e`vpc_id`\u003c/span\u003e [cannot be changed](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#creating-security-group).) Attempting to recreate the security group leads to a variety of complications depending on how it is used.\n\nSecurity groups are generally associated with other resources--**more than 100** AWS Provider resources reference security groups. Referencing a resource from another resource creates a one-way dependency. For example, if you create an EC2 \u003cspan pulumi-lang-nodejs=\"`aws.ec2.Instance`\" pulumi-lang-dotnet=\"`aws.ec2.Instance`\" pulumi-lang-go=\"`ec2.Instance`\" pulumi-lang-python=\"`ec2.Instance`\" pulumi-lang-yaml=\"`aws.ec2.Instance`\" pulumi-lang-java=\"`aws.ec2.Instance`\"\u003e`aws.ec2.Instance`\u003c/span\u003e that has a \u003cspan pulumi-lang-nodejs=\"`vpcSecurityGroupIds`\" pulumi-lang-dotnet=\"`VpcSecurityGroupIds`\" pulumi-lang-go=\"`vpcSecurityGroupIds`\" pulumi-lang-python=\"`vpc_security_group_ids`\" pulumi-lang-yaml=\"`vpcSecurityGroupIds`\" pulumi-lang-java=\"`vpcSecurityGroupIds`\"\u003e`vpc_security_group_ids`\u003c/span\u003e argument that refers to an \u003cspan pulumi-lang-nodejs=\"`aws.ec2.SecurityGroup`\" pulumi-lang-dotnet=\"`aws.ec2.SecurityGroup`\" pulumi-lang-go=\"`ec2.SecurityGroup`\" pulumi-lang-python=\"`ec2.SecurityGroup`\" pulumi-lang-yaml=\"`aws.ec2.SecurityGroup`\" pulumi-lang-java=\"`aws.ec2.SecurityGroup`\"\u003e`aws.ec2.SecurityGroup`\u003c/span\u003e resource, the \u003cspan pulumi-lang-nodejs=\"`aws.ec2.SecurityGroup`\" pulumi-lang-dotnet=\"`aws.ec2.SecurityGroup`\" pulumi-lang-go=\"`ec2.SecurityGroup`\" pulumi-lang-python=\"`ec2.SecurityGroup`\" pulumi-lang-yaml=\"`aws.ec2.SecurityGroup`\" pulumi-lang-java=\"`aws.ec2.SecurityGroup`\"\u003e`aws.ec2.SecurityGroup`\u003c/span\u003e is a dependent of the \u003cspan pulumi-lang-nodejs=\"`aws.ec2.Instance`\" pulumi-lang-dotnet=\"`aws.ec2.Instance`\" pulumi-lang-go=\"`ec2.Instance`\" pulumi-lang-python=\"`ec2.Instance`\" pulumi-lang-yaml=\"`aws.ec2.Instance`\" pulumi-lang-java=\"`aws.ec2.Instance`\"\u003e`aws.ec2.Instance`\u003c/span\u003e. Because of this, the provider will create the security group first so that it can then be associated with the EC2 instance.\n\nHowever, the dependency relationship actually goes both directions causing the _Security Group Deletion Problem_. AWS does not allow you to delete the security group associated with another resource (_e.g._, the \u003cspan pulumi-lang-nodejs=\"`aws.ec2.Instance`\" pulumi-lang-dotnet=\"`aws.ec2.Instance`\" pulumi-lang-go=\"`ec2.Instance`\" pulumi-lang-python=\"`ec2.Instance`\" pulumi-lang-yaml=\"`aws.ec2.Instance`\" pulumi-lang-java=\"`aws.ec2.Instance`\"\u003e`aws.ec2.Instance`\u003c/span\u003e).\n\nThe provider does not model bi-directional dependencies like this, but, even if it did, simply knowing the dependency situation would not be enough to solve it. For example, some resources must always have an associated security group while others don't need to. In addition, when the \u003cspan pulumi-lang-nodejs=\"`aws.ec2.SecurityGroup`\" pulumi-lang-dotnet=\"`aws.ec2.SecurityGroup`\" pulumi-lang-go=\"`ec2.SecurityGroup`\" pulumi-lang-python=\"`ec2.SecurityGroup`\" pulumi-lang-yaml=\"`aws.ec2.SecurityGroup`\" pulumi-lang-java=\"`aws.ec2.SecurityGroup`\"\u003e`aws.ec2.SecurityGroup`\u003c/span\u003e resource attempts to recreate, it receives a dependent object error, which does not provide information on whether the dependent object is a security group rule or, for example, an associated EC2 instance. Within the provider, the associated resource (_e.g._, \u003cspan pulumi-lang-nodejs=\"`aws.ec2.Instance`\" pulumi-lang-dotnet=\"`aws.ec2.Instance`\" pulumi-lang-go=\"`ec2.Instance`\" pulumi-lang-python=\"`ec2.Instance`\" pulumi-lang-yaml=\"`aws.ec2.Instance`\" pulumi-lang-java=\"`aws.ec2.Instance`\"\u003e`aws.ec2.Instance`\u003c/span\u003e) does not receive an error when the \u003cspan pulumi-lang-nodejs=\"`aws.ec2.SecurityGroup`\" pulumi-lang-dotnet=\"`aws.ec2.SecurityGroup`\" pulumi-lang-go=\"`ec2.SecurityGroup`\" pulumi-lang-python=\"`ec2.SecurityGroup`\" pulumi-lang-yaml=\"`aws.ec2.SecurityGroup`\" pulumi-lang-java=\"`aws.ec2.SecurityGroup`\"\u003e`aws.ec2.SecurityGroup`\u003c/span\u003e is trying to recreate even though that is where changes to the associated resource would need to take place (_e.g._, removing the security group association).\n\nDespite these sticky problems, below are some ways to improve your experience when you find it necessary to recreate a security group.\n\n### Shorter timeout\n\n(This example is one approach to recreating security groups. For more information on the challenges and the _Security Group Deletion Problem_, see the section above.)\n\nIf destroying a security group takes a long time, it may be because the provider cannot distinguish between a dependent object (_e.g._, a security group rule or EC2 instance) that is _in the process of being deleted_ and one that is not. In other words, it may be waiting for a train that isn't scheduled to arrive. To fail faster, shorten the \u003cspan pulumi-lang-nodejs=\"`delete`\" pulumi-lang-dotnet=\"`Delete`\" pulumi-lang-go=\"`delete`\" pulumi-lang-python=\"`delete`\" pulumi-lang-yaml=\"`delete`\" pulumi-lang-java=\"`delete`\"\u003e`delete`\u003c/span\u003e timeout from the default timeout:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ec2.SecurityGroup(\"example\", {name: \"izizavle\"});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ec2.SecurityGroup(\"example\", name=\"izizavle\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ec2.SecurityGroup(\"example\", new()\n {\n Name = \"izizavle\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ec2.NewSecurityGroup(ctx, \"example\", \u0026ec2.SecurityGroupArgs{\n\t\t\tName: pulumi.String(\"izizavle\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new SecurityGroup(\"example\", SecurityGroupArgs.builder()\n .name(\"izizavle\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ec2:SecurityGroup\n properties:\n name: izizavle\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Provisioners\n\n(This example is one approach to recreating security groups. For more information on the challenges and the _Security Group Deletion Problem_, see the section above.)\n\n**DISCLAIMER:** We **_HIGHLY_** recommend using one of the above approaches and _NOT_ using local provisioners. Provisioners, like the one shown below, should be considered a **last resort** since they are _not readable_, _require skills outside standard configuration_, are _error prone_ and _difficult to maintain_, are not compatible with cloud environments and upgrade tools, require AWS CLI installation, and are subject to changes outside the AWS Provider.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as _null from \"@pulumi/null\";\nimport * as aws from \"@pulumi/aws\";\nimport * as command from \"@pulumi/command\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = aws.ec2.getSecurityGroup({\n name: \"default\",\n});\nconst example = new aws.ec2.SecurityGroup(\"example\", {\n name: \"sg\",\n tags: {\n workaround1: \"tagged-name\",\n workaround2: _default.then(_default =\u003e _default.id),\n },\n});\nconst exampleProvisioner0 = new command.local.Command(\"exampleProvisioner0\", {\n create: \"true\",\n update: \"true\",\n \"delete\": ` ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters \"Name=tag:Name,Values=${tags.workaround1}\" --query \"VpcEndpoints[0].VpcEndpointId\" --output text` \u0026\u0026\n aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${ENDPOINT_ID} --add-security-group-ids ${tags.workaround2} --remove-security-group-ids ${id}\n`,\n}, {\n dependsOn: [example],\n});\nconst exampleResource = new _null.Resource(\"example\", {triggers: {\n rerun_upon_change_of: std.join({\n separator: \",\",\n input: exampleAwsVpcEndpoint.securityGroupIds,\n }).then(invoke =\u003e invoke.result),\n}});\nconst exampleResourceProvisioner0 = new command.local.Command(\"exampleResourceProvisioner0\", {create: ` aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${exampleAwsVpcEndpoint.id} --remove-security-group-ids ${_default.id}\n`}, {\n dependsOn: [exampleResource],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_command as command\nimport pulumi_null as null\nimport pulumi_std as std\n\ndefault = aws.ec2.get_security_group(name=\"default\")\nexample = aws.ec2.SecurityGroup(\"example\",\n name=\"sg\",\n tags={\n \"workaround1\": \"tagged-name\",\n \"workaround2\": default.id,\n })\nexample_provisioner0 = command.local.Command(\"exampleProvisioner0\",\n create=true,\n update=true,\n delete=f ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters \"Name=tag:Name,Values={tags.workaround1}\" --query \"VpcEndpoints[0].VpcEndpointId\" --output text` \u0026\u0026\n aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${{ENDPOINT_ID}} --add-security-group-ids {tags.workaround2} --remove-security-group-ids {id}\n,\n opts = pulumi.ResourceOptions(depends_on=[example]))\nexample_resource = null.Resource(\"example\", triggers={\n \"rerun_upon_change_of\": std.join(separator=\",\",\n input=example_aws_vpc_endpoint[\"securityGroupIds\"]).result,\n})\nexample_resource_provisioner0 = command.local.Command(\"exampleResourceProvisioner0\", create=f aws ec2 modify-vpc-endpoint --vpc-endpoint-id {example_aws_vpc_endpoint.id} --remove-security-group-ids {default.id}\n,\nopts = pulumi.ResourceOptions(depends_on=[example_resource]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Command = Pulumi.Command;\nusing Null = Pulumi.Null;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Aws.Ec2.GetSecurityGroup.Invoke(new()\n {\n Name = \"default\",\n });\n\n var example = new Aws.Ec2.SecurityGroup(\"example\", new()\n {\n Name = \"sg\",\n Tags = \n {\n { \"workaround1\", \"tagged-name\" },\n { \"workaround2\", @default.Apply(@default =\u003e @default.Apply(getSecurityGroupResult =\u003e getSecurityGroupResult.Id)) },\n },\n });\n\n var exampleProvisioner0 = new Command.Local.Command(\"exampleProvisioner0\", new()\n {\n Create = \"true\",\n Update = \"true\",\n Delete = @$\" ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters \"\"Name=tag:Name,Values={tags.Workaround1}\"\" --query \"\"VpcEndpoints[0].VpcEndpointId\"\" --output text` \u0026\u0026\n aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${{ENDPOINT_ID}} --add-security-group-ids {tags.Workaround2} --remove-security-group-ids {id}\n\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example,\n },\n });\n\n var exampleResource = new Null.Resource(\"example\", new()\n {\n Triggers = \n {\n { \"rerun_upon_change_of\", Std.Join.Invoke(new()\n {\n Separator = \",\",\n Input = exampleAwsVpcEndpoint.SecurityGroupIds,\n }).Apply(invoke =\u003e invoke.Result) },\n },\n });\n\n var exampleResourceProvisioner0 = new Command.Local.Command(\"exampleResourceProvisioner0\", new()\n {\n Create = @$\" aws ec2 modify-vpc-endpoint --vpc-endpoint-id {exampleAwsVpcEndpoint.Id} --remove-security-group-ids {@default.Apply(getSecurityGroupResult =\u003e getSecurityGroupResult.Id)}\n\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n exampleResource,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-command/sdk/go/command/local\"\n\t\"github.com/pulumi/pulumi-null/sdk/go/null\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := ec2.LookupSecurityGroup(ctx, \u0026ec2.LookupSecurityGroupArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := ec2.NewSecurityGroup(ctx, \"example\", \u0026ec2.SecurityGroupArgs{\n\t\t\tName: pulumi.String(\"sg\"),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"workaround1\": pulumi.String(\"tagged-name\"),\n\t\t\t\t\"workaround2\": pulumi.String(_default.Id),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = local.NewCommand(ctx, \"exampleProvisioner0\", \u0026local.CommandArgs{\n\t\t\tCreate: \"true\",\n\t\t\tUpdate: \"true\",\n\t\t\tDelete: fmt.Sprintf(\" ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters \\\"Name=tag:Name,Values=%v\\\" --query \\\"VpcEndpoints[0].VpcEndpointId\\\" --output text` \u0026\u0026\\n aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${ENDPOINT_ID} --add-security-group-ids %v --remove-security-group-ids %v\\n\", tags.Workaround1, tags.Workaround2, id),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeJoin, err := std.Join(ctx, \u0026std.JoinArgs{\n\t\t\tSeparator: \",\",\n\t\t\tInput: exampleAwsVpcEndpoint.SecurityGroupIds,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleResource, err := null.NewResource(ctx, \"example\", \u0026null.ResourceArgs{\n\t\t\tTriggers: pulumi.StringMap{\n\t\t\t\t\"rerun_upon_change_of\": pulumi.String(invokeJoin.Result),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = local.NewCommand(ctx, \"exampleResourceProvisioner0\", \u0026local.CommandArgs{\n\t\t\tCreate: fmt.Sprintf(\" aws ec2 modify-vpc-endpoint --vpc-endpoint-id %v --remove-security-group-ids %v\\n\", exampleAwsVpcEndpoint.Id, _default.Id),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleResource,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.Ec2Functions;\nimport com.pulumi.aws.ec2.inputs.GetSecurityGroupArgs;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport com.pulumi.command.local.Command;\nimport com.pulumi.command.local.CommandArgs;\nimport com.pulumi.null.Resource;\nimport com.pulumi.null.ResourceArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.JoinArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = Ec2Functions.getSecurityGroup(GetSecurityGroupArgs.builder()\n .name(\"default\")\n .build());\n\n var example = new SecurityGroup(\"example\", SecurityGroupArgs.builder()\n .name(\"sg\")\n .tags(Map.ofEntries(\n Map.entry(\"workaround1\", \"tagged-name\"),\n Map.entry(\"workaround2\", default_.id())\n ))\n .build());\n\n var exampleProvisioner0 = new Command(\"exampleProvisioner0\", CommandArgs.builder()\n .create(\"true\")\n .update(\"true\")\n .delete(\"\"\"\n ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters \"Name=tag:Name,Values=%s\" --query \"VpcEndpoints[0].VpcEndpointId\" --output text` \u0026\u0026\n aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${ENDPOINT_ID} --add-security-group-ids %s --remove-security-group-ids %s\n\", tags.workaround1(),tags.workaround2(),id))\n .build(), CustomResourceOptions.builder()\n .dependsOn(List.of(example))\n .build());\n\n var exampleResource = new Resource(\"exampleResource\", ResourceArgs.builder()\n .triggers(Map.of(\"rerun_upon_change_of\", StdFunctions.join(JoinArgs.builder()\n .separator(\",\")\n .input(exampleAwsVpcEndpoint.securityGroupIds())\n .build()).result()))\n .build());\n\n var exampleResourceProvisioner0 = new Command(\"exampleResourceProvisioner0\", CommandArgs.builder()\n .create(\"\"\"\n aws ec2 modify-vpc-endpoint --vpc-endpoint-id %s --remove-security-group-ids %s\n\", exampleAwsVpcEndpoint.id(),default_.id()))\n .build(), CustomResourceOptions.builder()\n .dependsOn(List.of(exampleResource))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ec2:SecurityGroup\n properties:\n name: sg\n tags:\n workaround1: tagged-name\n workaround2: ${default.id}\n exampleProvisioner0:\n type: command:local:Command\n properties:\n create: 'true'\n update: 'true'\n delete: |2\n ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters \"Name=tag:Name,Values=${tags.workaround1}\" --query \"VpcEndpoints[0].VpcEndpointId\" --output text` \u0026\u0026\n aws ec2 modify-vpc-endpoint --vpc-endpoint-id $${ENDPOINT_ID} --add-security-group-ids ${tags.workaround2} --remove-security-group-ids ${id}\n options:\n dependsOn:\n - ${example}\n exampleResource:\n type: null:Resource\n name: example\n properties:\n triggers:\n rerun_upon_change_of:\n fn::invoke:\n function: std:join\n arguments:\n separator: ','\n input: ${exampleAwsVpcEndpoint.securityGroupIds}\n return: result\n exampleResourceProvisioner0:\n type: command:local:Command\n properties:\n create: |2\n aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${exampleAwsVpcEndpoint.id} --remove-security-group-ids ${default.id}\n options:\n dependsOn:\n - ${exampleResource}\nvariables:\n default:\n fn::invoke:\n function: aws:ec2:getSecurityGroup\n arguments:\n name: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n* `id` (String) ID of the security group.\n\n#### Optional\n\n* `account_id` (String) AWS Account where this resource is managed.\n\n* `region` (String) Region where this resource is managed.\n\nUsing `pulumi import`, import Security Groups using the security group `id`. For example:\n\nconsole\n\n% pulumi import aws_security_group.example sg-903004f8\n\n", + "description": "Provides a security group resource.\n\n\u003e **NOTE:** Avoid using the \u003cspan pulumi-lang-nodejs=\"`ingress`\" pulumi-lang-dotnet=\"`Ingress`\" pulumi-lang-go=\"`ingress`\" pulumi-lang-python=\"`ingress`\" pulumi-lang-yaml=\"`ingress`\" pulumi-lang-java=\"`ingress`\"\u003e`ingress`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`egress`\" pulumi-lang-dotnet=\"`Egress`\" pulumi-lang-go=\"`egress`\" pulumi-lang-python=\"`egress`\" pulumi-lang-yaml=\"`egress`\" pulumi-lang-java=\"`egress`\"\u003e`egress`\u003c/span\u003e arguments of the \u003cspan pulumi-lang-nodejs=\"`aws.ec2.SecurityGroup`\" pulumi-lang-dotnet=\"`aws.ec2.SecurityGroup`\" pulumi-lang-go=\"`ec2.SecurityGroup`\" pulumi-lang-python=\"`ec2.SecurityGroup`\" pulumi-lang-yaml=\"`aws.ec2.SecurityGroup`\" pulumi-lang-java=\"`aws.ec2.SecurityGroup`\"\u003e`aws.ec2.SecurityGroup`\u003c/span\u003e resource to configure in-line rules, as they struggle with managing multiple CIDR blocks, and, due to the historical lack of unique IDs, tags and descriptions. To avoid these problems, use the current best practice of the \u003cspan pulumi-lang-nodejs=\"`aws.vpc.SecurityGroupEgressRule`\" pulumi-lang-dotnet=\"`aws.vpc.SecurityGroupEgressRule`\" pulumi-lang-go=\"`vpc.SecurityGroupEgressRule`\" pulumi-lang-python=\"`vpc.SecurityGroupEgressRule`\" pulumi-lang-yaml=\"`aws.vpc.SecurityGroupEgressRule`\" pulumi-lang-java=\"`aws.vpc.SecurityGroupEgressRule`\"\u003e`aws.vpc.SecurityGroupEgressRule`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`aws.vpc.SecurityGroupIngressRule`\" pulumi-lang-dotnet=\"`aws.vpc.SecurityGroupIngressRule`\" pulumi-lang-go=\"`vpc.SecurityGroupIngressRule`\" pulumi-lang-python=\"`vpc.SecurityGroupIngressRule`\" pulumi-lang-yaml=\"`aws.vpc.SecurityGroupIngressRule`\" pulumi-lang-java=\"`aws.vpc.SecurityGroupIngressRule`\"\u003e`aws.vpc.SecurityGroupIngressRule`\u003c/span\u003e resources with one CIDR block per rule.\n\n!\u003e **WARNING:** You should not use the \u003cspan pulumi-lang-nodejs=\"`aws.ec2.SecurityGroup`\" pulumi-lang-dotnet=\"`aws.ec2.SecurityGroup`\" pulumi-lang-go=\"`ec2.SecurityGroup`\" pulumi-lang-python=\"`ec2.SecurityGroup`\" pulumi-lang-yaml=\"`aws.ec2.SecurityGroup`\" pulumi-lang-java=\"`aws.ec2.SecurityGroup`\"\u003e`aws.ec2.SecurityGroup`\u003c/span\u003e resource with _in-line rules_ (using the \u003cspan pulumi-lang-nodejs=\"`ingress`\" pulumi-lang-dotnet=\"`Ingress`\" pulumi-lang-go=\"`ingress`\" pulumi-lang-python=\"`ingress`\" pulumi-lang-yaml=\"`ingress`\" pulumi-lang-java=\"`ingress`\"\u003e`ingress`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`egress`\" pulumi-lang-dotnet=\"`Egress`\" pulumi-lang-go=\"`egress`\" pulumi-lang-python=\"`egress`\" pulumi-lang-yaml=\"`egress`\" pulumi-lang-java=\"`egress`\"\u003e`egress`\u003c/span\u003e arguments of \u003cspan pulumi-lang-nodejs=\"`aws.ec2.SecurityGroup`\" pulumi-lang-dotnet=\"`aws.ec2.SecurityGroup`\" pulumi-lang-go=\"`ec2.SecurityGroup`\" pulumi-lang-python=\"`ec2.SecurityGroup`\" pulumi-lang-yaml=\"`aws.ec2.SecurityGroup`\" pulumi-lang-java=\"`aws.ec2.SecurityGroup`\"\u003e`aws.ec2.SecurityGroup`\u003c/span\u003e) in conjunction with the \u003cspan pulumi-lang-nodejs=\"`aws.vpc.SecurityGroupEgressRule`\" pulumi-lang-dotnet=\"`aws.vpc.SecurityGroupEgressRule`\" pulumi-lang-go=\"`vpc.SecurityGroupEgressRule`\" pulumi-lang-python=\"`vpc.SecurityGroupEgressRule`\" pulumi-lang-yaml=\"`aws.vpc.SecurityGroupEgressRule`\" pulumi-lang-java=\"`aws.vpc.SecurityGroupEgressRule`\"\u003e`aws.vpc.SecurityGroupEgressRule`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`aws.vpc.SecurityGroupIngressRule`\" pulumi-lang-dotnet=\"`aws.vpc.SecurityGroupIngressRule`\" pulumi-lang-go=\"`vpc.SecurityGroupIngressRule`\" pulumi-lang-python=\"`vpc.SecurityGroupIngressRule`\" pulumi-lang-yaml=\"`aws.vpc.SecurityGroupIngressRule`\" pulumi-lang-java=\"`aws.vpc.SecurityGroupIngressRule`\"\u003e`aws.vpc.SecurityGroupIngressRule`\u003c/span\u003e resources or the \u003cspan pulumi-lang-nodejs=\"`aws.ec2.SecurityGroupRule`\" pulumi-lang-dotnet=\"`aws.ec2.SecurityGroupRule`\" pulumi-lang-go=\"`ec2.SecurityGroupRule`\" pulumi-lang-python=\"`ec2.SecurityGroupRule`\" pulumi-lang-yaml=\"`aws.ec2.SecurityGroupRule`\" pulumi-lang-java=\"`aws.ec2.SecurityGroupRule`\"\u003e`aws.ec2.SecurityGroupRule`\u003c/span\u003e resource. Doing so may cause rule conflicts, perpetual differences, and result in rules being overwritten.\n\n\u003e **NOTE:** Referencing Security Groups across VPC peering has certain restrictions. More information is available in the [VPC Peering User Guide](https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-security-groups.html).\n\n\u003e **NOTE:** Due to [AWS Lambda improved VPC networking changes that began deploying in September 2019](https://aws.amazon.com/blogs/compute/announcing-improved-vpc-networking-for-aws-lambda-functions/), security groups associated with Lambda Functions can take up to 45 minutes to successfully delete. To allow for successful deletion, the provider will wait for at least 45 minutes even if a shorter delete timeout is specified.\n\n\u003e **NOTE:** The \u003cspan pulumi-lang-nodejs=\"`cidrBlocks`\" pulumi-lang-dotnet=\"`CidrBlocks`\" pulumi-lang-go=\"`cidrBlocks`\" pulumi-lang-python=\"`cidr_blocks`\" pulumi-lang-yaml=\"`cidrBlocks`\" pulumi-lang-java=\"`cidrBlocks`\"\u003e`cidr_blocks`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipv6CidrBlocks`\" pulumi-lang-dotnet=\"`Ipv6CidrBlocks`\" pulumi-lang-go=\"`ipv6CidrBlocks`\" pulumi-lang-python=\"`ipv6_cidr_blocks`\" pulumi-lang-yaml=\"`ipv6CidrBlocks`\" pulumi-lang-java=\"`ipv6CidrBlocks`\"\u003e`ipv6_cidr_blocks`\u003c/span\u003e parameters are optional in the \u003cspan pulumi-lang-nodejs=\"`ingress`\" pulumi-lang-dotnet=\"`Ingress`\" pulumi-lang-go=\"`ingress`\" pulumi-lang-python=\"`ingress`\" pulumi-lang-yaml=\"`ingress`\" pulumi-lang-java=\"`ingress`\"\u003e`ingress`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`egress`\" pulumi-lang-dotnet=\"`Egress`\" pulumi-lang-go=\"`egress`\" pulumi-lang-python=\"`egress`\" pulumi-lang-yaml=\"`egress`\" pulumi-lang-java=\"`egress`\"\u003e`egress`\u003c/span\u003e blocks. If nothing is specified, traffic will be blocked as described in _NOTE on Egress rules_ later.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst allowTls = new aws.ec2.SecurityGroup(\"allow_tls\", {\n name: \"allow_tls\",\n description: \"Allow TLS inbound traffic and all outbound traffic\",\n vpcId: main.id,\n tags: {\n Name: \"allow_tls\",\n },\n});\nconst allowTlsIpv4 = new aws.vpc.SecurityGroupIngressRule(\"allow_tls_ipv4\", {\n securityGroupId: allowTls.id,\n cidrIpv4: main.cidrBlock,\n fromPort: 443,\n ipProtocol: \"tcp\",\n toPort: 443,\n});\nconst allowTlsIpv6 = new aws.vpc.SecurityGroupIngressRule(\"allow_tls_ipv6\", {\n securityGroupId: allowTls.id,\n cidrIpv6: main.ipv6CidrBlock,\n fromPort: 443,\n ipProtocol: \"tcp\",\n toPort: 443,\n});\nconst allowAllTrafficIpv4 = new aws.vpc.SecurityGroupEgressRule(\"allow_all_traffic_ipv4\", {\n securityGroupId: allowTls.id,\n cidrIpv4: \"0.0.0.0/0\",\n ipProtocol: \"-1\",\n});\nconst allowAllTrafficIpv6 = new aws.vpc.SecurityGroupEgressRule(\"allow_all_traffic_ipv6\", {\n securityGroupId: allowTls.id,\n cidrIpv6: \"::/0\",\n ipProtocol: \"-1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nallow_tls = aws.ec2.SecurityGroup(\"allow_tls\",\n name=\"allow_tls\",\n description=\"Allow TLS inbound traffic and all outbound traffic\",\n vpc_id=main[\"id\"],\n tags={\n \"Name\": \"allow_tls\",\n })\nallow_tls_ipv4 = aws.vpc.SecurityGroupIngressRule(\"allow_tls_ipv4\",\n security_group_id=allow_tls.id,\n cidr_ipv4=main[\"cidrBlock\"],\n from_port=443,\n ip_protocol=\"tcp\",\n to_port=443)\nallow_tls_ipv6 = aws.vpc.SecurityGroupIngressRule(\"allow_tls_ipv6\",\n security_group_id=allow_tls.id,\n cidr_ipv6=main[\"ipv6CidrBlock\"],\n from_port=443,\n ip_protocol=\"tcp\",\n to_port=443)\nallow_all_traffic_ipv4 = aws.vpc.SecurityGroupEgressRule(\"allow_all_traffic_ipv4\",\n security_group_id=allow_tls.id,\n cidr_ipv4=\"0.0.0.0/0\",\n ip_protocol=\"-1\")\nallow_all_traffic_ipv6 = aws.vpc.SecurityGroupEgressRule(\"allow_all_traffic_ipv6\",\n security_group_id=allow_tls.id,\n cidr_ipv6=\"::/0\",\n ip_protocol=\"-1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var allowTls = new Aws.Ec2.SecurityGroup(\"allow_tls\", new()\n {\n Name = \"allow_tls\",\n Description = \"Allow TLS inbound traffic and all outbound traffic\",\n VpcId = main.Id,\n Tags = \n {\n { \"Name\", \"allow_tls\" },\n },\n });\n\n var allowTlsIpv4 = new Aws.Vpc.SecurityGroupIngressRule(\"allow_tls_ipv4\", new()\n {\n SecurityGroupId = allowTls.Id,\n CidrIpv4 = main.CidrBlock,\n FromPort = 443,\n IpProtocol = \"tcp\",\n ToPort = 443,\n });\n\n var allowTlsIpv6 = new Aws.Vpc.SecurityGroupIngressRule(\"allow_tls_ipv6\", new()\n {\n SecurityGroupId = allowTls.Id,\n CidrIpv6 = main.Ipv6CidrBlock,\n FromPort = 443,\n IpProtocol = \"tcp\",\n ToPort = 443,\n });\n\n var allowAllTrafficIpv4 = new Aws.Vpc.SecurityGroupEgressRule(\"allow_all_traffic_ipv4\", new()\n {\n SecurityGroupId = allowTls.Id,\n CidrIpv4 = \"0.0.0.0/0\",\n IpProtocol = \"-1\",\n });\n\n var allowAllTrafficIpv6 = new Aws.Vpc.SecurityGroupEgressRule(\"allow_all_traffic_ipv6\", new()\n {\n SecurityGroupId = allowTls.Id,\n CidrIpv6 = \"::/0\",\n IpProtocol = \"-1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/vpc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tallowTls, err := ec2.NewSecurityGroup(ctx, \"allow_tls\", \u0026ec2.SecurityGroupArgs{\n\t\t\tName: pulumi.String(\"allow_tls\"),\n\t\t\tDescription: pulumi.String(\"Allow TLS inbound traffic and all outbound traffic\"),\n\t\t\tVpcId: pulumi.Any(main.Id),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"allow_tls\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vpc.NewSecurityGroupIngressRule(ctx, \"allow_tls_ipv4\", \u0026vpc.SecurityGroupIngressRuleArgs{\n\t\t\tSecurityGroupId: allowTls.ID(),\n\t\t\tCidrIpv4: pulumi.Any(main.CidrBlock),\n\t\t\tFromPort: pulumi.Int(443),\n\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\tToPort: pulumi.Int(443),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vpc.NewSecurityGroupIngressRule(ctx, \"allow_tls_ipv6\", \u0026vpc.SecurityGroupIngressRuleArgs{\n\t\t\tSecurityGroupId: allowTls.ID(),\n\t\t\tCidrIpv6: pulumi.Any(main.Ipv6CidrBlock),\n\t\t\tFromPort: pulumi.Int(443),\n\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\tToPort: pulumi.Int(443),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vpc.NewSecurityGroupEgressRule(ctx, \"allow_all_traffic_ipv4\", \u0026vpc.SecurityGroupEgressRuleArgs{\n\t\t\tSecurityGroupId: allowTls.ID(),\n\t\t\tCidrIpv4: pulumi.String(\"0.0.0.0/0\"),\n\t\t\tIpProtocol: pulumi.String(\"-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vpc.NewSecurityGroupEgressRule(ctx, \"allow_all_traffic_ipv6\", \u0026vpc.SecurityGroupEgressRuleArgs{\n\t\t\tSecurityGroupId: allowTls.ID(),\n\t\t\tCidrIpv6: pulumi.String(\"::/0\"),\n\t\t\tIpProtocol: pulumi.String(\"-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport com.pulumi.aws.vpc.SecurityGroupIngressRule;\nimport com.pulumi.aws.vpc.SecurityGroupIngressRuleArgs;\nimport com.pulumi.aws.vpc.SecurityGroupEgressRule;\nimport com.pulumi.aws.vpc.SecurityGroupEgressRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var allowTls = new SecurityGroup(\"allowTls\", SecurityGroupArgs.builder()\n .name(\"allow_tls\")\n .description(\"Allow TLS inbound traffic and all outbound traffic\")\n .vpcId(main.id())\n .tags(Map.of(\"Name\", \"allow_tls\"))\n .build());\n\n var allowTlsIpv4 = new SecurityGroupIngressRule(\"allowTlsIpv4\", SecurityGroupIngressRuleArgs.builder()\n .securityGroupId(allowTls.id())\n .cidrIpv4(main.cidrBlock())\n .fromPort(443)\n .ipProtocol(\"tcp\")\n .toPort(443)\n .build());\n\n var allowTlsIpv6 = new SecurityGroupIngressRule(\"allowTlsIpv6\", SecurityGroupIngressRuleArgs.builder()\n .securityGroupId(allowTls.id())\n .cidrIpv6(main.ipv6CidrBlock())\n .fromPort(443)\n .ipProtocol(\"tcp\")\n .toPort(443)\n .build());\n\n var allowAllTrafficIpv4 = new SecurityGroupEgressRule(\"allowAllTrafficIpv4\", SecurityGroupEgressRuleArgs.builder()\n .securityGroupId(allowTls.id())\n .cidrIpv4(\"0.0.0.0/0\")\n .ipProtocol(\"-1\")\n .build());\n\n var allowAllTrafficIpv6 = new SecurityGroupEgressRule(\"allowAllTrafficIpv6\", SecurityGroupEgressRuleArgs.builder()\n .securityGroupId(allowTls.id())\n .cidrIpv6(\"::/0\")\n .ipProtocol(\"-1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n allowTls:\n type: aws:ec2:SecurityGroup\n name: allow_tls\n properties:\n name: allow_tls\n description: Allow TLS inbound traffic and all outbound traffic\n vpcId: ${main.id}\n tags:\n Name: allow_tls\n allowTlsIpv4:\n type: aws:vpc:SecurityGroupIngressRule\n name: allow_tls_ipv4\n properties:\n securityGroupId: ${allowTls.id}\n cidrIpv4: ${main.cidrBlock}\n fromPort: 443\n ipProtocol: tcp\n toPort: 443\n allowTlsIpv6:\n type: aws:vpc:SecurityGroupIngressRule\n name: allow_tls_ipv6\n properties:\n securityGroupId: ${allowTls.id}\n cidrIpv6: ${main.ipv6CidrBlock}\n fromPort: 443\n ipProtocol: tcp\n toPort: 443\n allowAllTrafficIpv4:\n type: aws:vpc:SecurityGroupEgressRule\n name: allow_all_traffic_ipv4\n properties:\n securityGroupId: ${allowTls.id}\n cidrIpv4: 0.0.0.0/0\n ipProtocol: '-1'\n allowAllTrafficIpv6:\n type: aws:vpc:SecurityGroupEgressRule\n name: allow_all_traffic_ipv6\n properties:\n securityGroupId: ${allowTls.id}\n cidrIpv6: ::/0\n ipProtocol: '-1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e **NOTE on Egress rules:** By default, AWS creates an `ALLOW ALL` egress rule when creating a new Security Group inside of a VPC. When creating a new Security Group inside a VPC, **this provider will remove this default rule**, and require you specifically re-create it if you desire that rule. We feel this leads to fewer surprises in terms of controlling your egress rules. If you desire this rule to be in place, you can use this \u003cspan pulumi-lang-nodejs=\"`egress`\" pulumi-lang-dotnet=\"`Egress`\" pulumi-lang-go=\"`egress`\" pulumi-lang-python=\"`egress`\" pulumi-lang-yaml=\"`egress`\" pulumi-lang-java=\"`egress`\"\u003e`egress`\u003c/span\u003e block:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ec2.SecurityGroup(\"example\", {egress: [{\n fromPort: 0,\n toPort: 0,\n protocol: \"-1\",\n cidrBlocks: [\"0.0.0.0/0\"],\n ipv6CidrBlocks: [\"::/0\"],\n}]});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ec2.SecurityGroup(\"example\", egress=[{\n \"from_port\": 0,\n \"to_port\": 0,\n \"protocol\": \"-1\",\n \"cidr_blocks\": [\"0.0.0.0/0\"],\n \"ipv6_cidr_blocks\": [\"::/0\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ec2.SecurityGroup(\"example\", new()\n {\n Egress = new[]\n {\n new Aws.Ec2.Inputs.SecurityGroupEgressArgs\n {\n FromPort = 0,\n ToPort = 0,\n Protocol = \"-1\",\n CidrBlocks = new[]\n {\n \"0.0.0.0/0\",\n },\n Ipv6CidrBlocks = new[]\n {\n \"::/0\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ec2.NewSecurityGroup(ctx, \"example\", \u0026ec2.SecurityGroupArgs{\n\t\t\tEgress: ec2.SecurityGroupEgressArray{\n\t\t\t\t\u0026ec2.SecurityGroupEgressArgs{\n\t\t\t\t\tFromPort: pulumi.Int(0),\n\t\t\t\t\tToPort: pulumi.Int(0),\n\t\t\t\t\tProtocol: pulumi.String(\"-1\"),\n\t\t\t\t\tCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t\t},\n\t\t\t\t\tIpv6CidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"::/0\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport com.pulumi.aws.ec2.inputs.SecurityGroupEgressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new SecurityGroup(\"example\", SecurityGroupArgs.builder()\n .egress(SecurityGroupEgressArgs.builder()\n .fromPort(0)\n .toPort(0)\n .protocol(\"-1\")\n .cidrBlocks(\"0.0.0.0/0\")\n .ipv6CidrBlocks(\"::/0\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ec2:SecurityGroup\n properties:\n egress:\n - fromPort: 0\n toPort: 0\n protocol: '-1'\n cidrBlocks:\n - 0.0.0.0/0\n ipv6CidrBlocks:\n - ::/0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Usage With Prefix List IDs\n\nPrefix Lists are either managed by AWS internally, or created by the customer using a\nPrefix List resource. Prefix Lists provided by\nAWS are associated with a prefix list name, or service name, that is linked to a specific region.\nPrefix list IDs are exported on VPC Endpoints, so you can use this format:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst myEndpoint = new aws.ec2.VpcEndpoint(\"my_endpoint\", {});\nconst example = new aws.ec2.SecurityGroup(\"example\", {egress: [{\n fromPort: 0,\n toPort: 0,\n protocol: \"-1\",\n prefixListIds: [myEndpoint.prefixListId],\n}]});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nmy_endpoint = aws.ec2.VpcEndpoint(\"my_endpoint\")\nexample = aws.ec2.SecurityGroup(\"example\", egress=[{\n \"from_port\": 0,\n \"to_port\": 0,\n \"protocol\": \"-1\",\n \"prefix_list_ids\": [my_endpoint.prefix_list_id],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myEndpoint = new Aws.Ec2.VpcEndpoint(\"my_endpoint\");\n\n var example = new Aws.Ec2.SecurityGroup(\"example\", new()\n {\n Egress = new[]\n {\n new Aws.Ec2.Inputs.SecurityGroupEgressArgs\n {\n FromPort = 0,\n ToPort = 0,\n Protocol = \"-1\",\n PrefixListIds = new[]\n {\n myEndpoint.PrefixListId,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyEndpoint, err := ec2.NewVpcEndpoint(ctx, \"my_endpoint\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ec2.NewSecurityGroup(ctx, \"example\", \u0026ec2.SecurityGroupArgs{\n\t\t\tEgress: ec2.SecurityGroupEgressArray{\n\t\t\t\t\u0026ec2.SecurityGroupEgressArgs{\n\t\t\t\t\tFromPort: pulumi.Int(0),\n\t\t\t\t\tToPort: pulumi.Int(0),\n\t\t\t\t\tProtocol: pulumi.String(\"-1\"),\n\t\t\t\t\tPrefixListIds: pulumi.StringArray{\n\t\t\t\t\t\tmyEndpoint.PrefixListId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.VpcEndpoint;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport com.pulumi.aws.ec2.inputs.SecurityGroupEgressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var myEndpoint = new VpcEndpoint(\"myEndpoint\");\n\n var example = new SecurityGroup(\"example\", SecurityGroupArgs.builder()\n .egress(SecurityGroupEgressArgs.builder()\n .fromPort(0)\n .toPort(0)\n .protocol(\"-1\")\n .prefixListIds(myEndpoint.prefixListId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ec2:SecurityGroup\n properties:\n egress:\n - fromPort: 0\n toPort: 0\n protocol: '-1'\n prefixListIds:\n - ${myEndpoint.prefixListId}\n myEndpoint:\n type: aws:ec2:VpcEndpoint\n name: my_endpoint\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can also find a specific Prefix List using the \u003cspan pulumi-lang-nodejs=\"`aws.ec2.getPrefixList`\" pulumi-lang-dotnet=\"`aws.ec2.getPrefixList`\" pulumi-lang-go=\"`ec2.getPrefixList`\" pulumi-lang-python=\"`ec2_get_prefix_list`\" pulumi-lang-yaml=\"`aws.ec2.getPrefixList`\" pulumi-lang-java=\"`aws.ec2.getPrefixList`\"\u003e`aws.ec2.getPrefixList`\u003c/span\u003e data source.\n\n### Removing All Ingress and Egress Rules\n\nThe \u003cspan pulumi-lang-nodejs=\"`ingress`\" pulumi-lang-dotnet=\"`Ingress`\" pulumi-lang-go=\"`ingress`\" pulumi-lang-python=\"`ingress`\" pulumi-lang-yaml=\"`ingress`\" pulumi-lang-java=\"`ingress`\"\u003e`ingress`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`egress`\" pulumi-lang-dotnet=\"`Egress`\" pulumi-lang-go=\"`egress`\" pulumi-lang-python=\"`egress`\" pulumi-lang-yaml=\"`egress`\" pulumi-lang-java=\"`egress`\"\u003e`egress`\u003c/span\u003e arguments are processed in attributes-as-blocks mode. Due to this, removing these arguments from the configuration will **not** cause the provider to destroy the managed rules. To subsequently remove all managed ingress and egress rules:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ec2.SecurityGroup(\"example\", {\n name: \"sg\",\n vpcId: exampleAwsVpc.id,\n ingress: [],\n egress: [],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ec2.SecurityGroup(\"example\",\n name=\"sg\",\n vpc_id=example_aws_vpc[\"id\"],\n ingress=[],\n egress=[])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ec2.SecurityGroup(\"example\", new()\n {\n Name = \"sg\",\n VpcId = exampleAwsVpc.Id,\n Ingress = new[] {},\n Egress = new[] {},\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ec2.NewSecurityGroup(ctx, \"example\", \u0026ec2.SecurityGroupArgs{\n\t\t\tName: pulumi.String(\"sg\"),\n\t\t\tVpcId: pulumi.Any(exampleAwsVpc.Id),\n\t\t\tIngress: ec2.SecurityGroupIngressArray{},\n\t\t\tEgress: ec2.SecurityGroupEgressArray{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new SecurityGroup(\"example\", SecurityGroupArgs.builder()\n .name(\"sg\")\n .vpcId(exampleAwsVpc.id())\n .ingress()\n .egress()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ec2:SecurityGroup\n properties:\n name: sg\n vpcId: ${exampleAwsVpc.id}\n ingress: []\n egress: []\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Recreating a Security Group\n\nA simple security group \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e change \"forces new\" the security group--the provider destroys the security group and creates a new one. (Likewise, \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`namePrefix`\" pulumi-lang-dotnet=\"`NamePrefix`\" pulumi-lang-go=\"`namePrefix`\" pulumi-lang-python=\"`name_prefix`\" pulumi-lang-yaml=\"`namePrefix`\" pulumi-lang-java=\"`namePrefix`\"\u003e`name_prefix`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`vpcId`\" pulumi-lang-dotnet=\"`VpcId`\" pulumi-lang-go=\"`vpcId`\" pulumi-lang-python=\"`vpc_id`\" pulumi-lang-yaml=\"`vpcId`\" pulumi-lang-java=\"`vpcId`\"\u003e`vpc_id`\u003c/span\u003e [cannot be changed](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#creating-security-group).) Attempting to recreate the security group leads to a variety of complications depending on how it is used.\n\nSecurity groups are generally associated with other resources--**more than 100** AWS Provider resources reference security groups. Referencing a resource from another resource creates a one-way dependency. For example, if you create an EC2 \u003cspan pulumi-lang-nodejs=\"`aws.ec2.Instance`\" pulumi-lang-dotnet=\"`aws.ec2.Instance`\" pulumi-lang-go=\"`ec2.Instance`\" pulumi-lang-python=\"`ec2.Instance`\" pulumi-lang-yaml=\"`aws.ec2.Instance`\" pulumi-lang-java=\"`aws.ec2.Instance`\"\u003e`aws.ec2.Instance`\u003c/span\u003e that has a \u003cspan pulumi-lang-nodejs=\"`vpcSecurityGroupIds`\" pulumi-lang-dotnet=\"`VpcSecurityGroupIds`\" pulumi-lang-go=\"`vpcSecurityGroupIds`\" pulumi-lang-python=\"`vpc_security_group_ids`\" pulumi-lang-yaml=\"`vpcSecurityGroupIds`\" pulumi-lang-java=\"`vpcSecurityGroupIds`\"\u003e`vpc_security_group_ids`\u003c/span\u003e argument that refers to an \u003cspan pulumi-lang-nodejs=\"`aws.ec2.SecurityGroup`\" pulumi-lang-dotnet=\"`aws.ec2.SecurityGroup`\" pulumi-lang-go=\"`ec2.SecurityGroup`\" pulumi-lang-python=\"`ec2.SecurityGroup`\" pulumi-lang-yaml=\"`aws.ec2.SecurityGroup`\" pulumi-lang-java=\"`aws.ec2.SecurityGroup`\"\u003e`aws.ec2.SecurityGroup`\u003c/span\u003e resource, the \u003cspan pulumi-lang-nodejs=\"`aws.ec2.SecurityGroup`\" pulumi-lang-dotnet=\"`aws.ec2.SecurityGroup`\" pulumi-lang-go=\"`ec2.SecurityGroup`\" pulumi-lang-python=\"`ec2.SecurityGroup`\" pulumi-lang-yaml=\"`aws.ec2.SecurityGroup`\" pulumi-lang-java=\"`aws.ec2.SecurityGroup`\"\u003e`aws.ec2.SecurityGroup`\u003c/span\u003e is a dependent of the \u003cspan pulumi-lang-nodejs=\"`aws.ec2.Instance`\" pulumi-lang-dotnet=\"`aws.ec2.Instance`\" pulumi-lang-go=\"`ec2.Instance`\" pulumi-lang-python=\"`ec2.Instance`\" pulumi-lang-yaml=\"`aws.ec2.Instance`\" pulumi-lang-java=\"`aws.ec2.Instance`\"\u003e`aws.ec2.Instance`\u003c/span\u003e. Because of this, the provider will create the security group first so that it can then be associated with the EC2 instance.\n\nHowever, the dependency relationship actually goes both directions causing the _Security Group Deletion Problem_. AWS does not allow you to delete the security group associated with another resource (_e.g._, the \u003cspan pulumi-lang-nodejs=\"`aws.ec2.Instance`\" pulumi-lang-dotnet=\"`aws.ec2.Instance`\" pulumi-lang-go=\"`ec2.Instance`\" pulumi-lang-python=\"`ec2.Instance`\" pulumi-lang-yaml=\"`aws.ec2.Instance`\" pulumi-lang-java=\"`aws.ec2.Instance`\"\u003e`aws.ec2.Instance`\u003c/span\u003e).\n\nThe provider does not model bi-directional dependencies like this, but, even if it did, simply knowing the dependency situation would not be enough to solve it. For example, some resources must always have an associated security group while others don't need to. In addition, when the \u003cspan pulumi-lang-nodejs=\"`aws.ec2.SecurityGroup`\" pulumi-lang-dotnet=\"`aws.ec2.SecurityGroup`\" pulumi-lang-go=\"`ec2.SecurityGroup`\" pulumi-lang-python=\"`ec2.SecurityGroup`\" pulumi-lang-yaml=\"`aws.ec2.SecurityGroup`\" pulumi-lang-java=\"`aws.ec2.SecurityGroup`\"\u003e`aws.ec2.SecurityGroup`\u003c/span\u003e resource attempts to recreate, it receives a dependent object error, which does not provide information on whether the dependent object is a security group rule or, for example, an associated EC2 instance. Within the provider, the associated resource (_e.g._, \u003cspan pulumi-lang-nodejs=\"`aws.ec2.Instance`\" pulumi-lang-dotnet=\"`aws.ec2.Instance`\" pulumi-lang-go=\"`ec2.Instance`\" pulumi-lang-python=\"`ec2.Instance`\" pulumi-lang-yaml=\"`aws.ec2.Instance`\" pulumi-lang-java=\"`aws.ec2.Instance`\"\u003e`aws.ec2.Instance`\u003c/span\u003e) does not receive an error when the \u003cspan pulumi-lang-nodejs=\"`aws.ec2.SecurityGroup`\" pulumi-lang-dotnet=\"`aws.ec2.SecurityGroup`\" pulumi-lang-go=\"`ec2.SecurityGroup`\" pulumi-lang-python=\"`ec2.SecurityGroup`\" pulumi-lang-yaml=\"`aws.ec2.SecurityGroup`\" pulumi-lang-java=\"`aws.ec2.SecurityGroup`\"\u003e`aws.ec2.SecurityGroup`\u003c/span\u003e is trying to recreate even though that is where changes to the associated resource would need to take place (_e.g._, removing the security group association).\n\nDespite these sticky problems, below are some ways to improve your experience when you find it necessary to recreate a security group.\n\n### Shorter timeout\n\n(This example is one approach to recreating security groups. For more information on the challenges and the _Security Group Deletion Problem_, see the section above.)\n\nIf destroying a security group takes a long time, it may be because the provider cannot distinguish between a dependent object (_e.g._, a security group rule or EC2 instance) that is _in the process of being deleted_ and one that is not. In other words, it may be waiting for a train that isn't scheduled to arrive. To fail faster, shorten the \u003cspan pulumi-lang-nodejs=\"`delete`\" pulumi-lang-dotnet=\"`Delete`\" pulumi-lang-go=\"`delete`\" pulumi-lang-python=\"`delete`\" pulumi-lang-yaml=\"`delete`\" pulumi-lang-java=\"`delete`\"\u003e`delete`\u003c/span\u003e timeout from the default timeout:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ec2.SecurityGroup(\"example\", {name: \"izizavle\"});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ec2.SecurityGroup(\"example\", name=\"izizavle\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ec2.SecurityGroup(\"example\", new()\n {\n Name = \"izizavle\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ec2.NewSecurityGroup(ctx, \"example\", \u0026ec2.SecurityGroupArgs{\n\t\t\tName: pulumi.String(\"izizavle\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new SecurityGroup(\"example\", SecurityGroupArgs.builder()\n .name(\"izizavle\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ec2:SecurityGroup\n properties:\n name: izizavle\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Provisioners\n\n(This example is one approach to recreating security groups. For more information on the challenges and the _Security Group Deletion Problem_, see the section above.)\n\n**DISCLAIMER:** We **_HIGHLY_** recommend using one of the above approaches and _NOT_ using local provisioners. Provisioners, like the one shown below, should be considered a **last resort** since they are _not readable_, _require skills outside standard configuration_, are _error prone_ and _difficult to maintain_, are not compatible with cloud environments and upgrade tools, require AWS CLI installation, and are subject to changes outside the AWS Provider.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as _null from \"@pulumi/null\";\nimport * as aws from \"@pulumi/aws\";\nimport * as command from \"@pulumi/command\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = aws.ec2.getSecurityGroup({\n name: \"default\",\n});\nconst example = new aws.ec2.SecurityGroup(\"example\", {\n name: \"sg\",\n tags: {\n workaround1: \"tagged-name\",\n workaround2: _default.then(_default =\u003e _default.id),\n },\n});\nconst exampleProvisioner0 = new command.local.Command(\"exampleProvisioner0\", {\n create: \"true\",\n update: \"true\",\n \"delete\": ` ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters \\\"Name=tag:Name,Values=${tags.workaround1}\\\" --query \\\"VpcEndpoints[0].VpcEndpointId\\\" --output text` \u0026\u0026\n aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${ENDPOINT_ID} --add-security-group-ids ${tags.workaround2} --remove-security-group-ids ${id}\n`,\n}, {\n dependsOn: [example],\n});\nconst exampleResource = new _null.Resource(\"example\", {triggers: {\n rerunUponChangeOf: std.join({\n separator: \",\",\n input: exampleAwsVpcEndpoint.securityGroupIds,\n }).then(invoke =\u003e invoke.result),\n}});\nconst exampleResourceProvisioner0 = new command.local.Command(\"exampleResourceProvisioner0\", {create: ` aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${exampleAwsVpcEndpoint.id} --remove-security-group-ids ${_default.id}\n`}, {\n dependsOn: [exampleResource],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_command as command\nimport pulumi_null as null\nimport pulumi_std as std\n\ndefault = aws.ec2.get_security_group(name=\"default\")\nexample = aws.ec2.SecurityGroup(\"example\",\n name=\"sg\",\n tags={\n \"workaround1\": \"tagged-name\",\n \"workaround2\": default.id,\n })\nexample_provisioner0 = command.local.Command(\"exampleProvisioner0\",\n create=true,\n update=true,\n delete=f ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters \\\"Name=tag:Name,Values={tags.workaround1}\\\" --query \\\"VpcEndpoints[0].VpcEndpointId\\\" --output text` \u0026\u0026\n aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${{ENDPOINT_ID}} --add-security-group-ids {tags.workaround2} --remove-security-group-ids {id}\n,\n opts = pulumi.ResourceOptions(depends_on=[example]))\nexample_resource = null.Resource(\"example\", triggers={\n \"rerunUponChangeOf\": std.join(separator=\",\",\n input=example_aws_vpc_endpoint[\"securityGroupIds\"]).result,\n})\nexample_resource_provisioner0 = command.local.Command(\"exampleResourceProvisioner0\", create=f aws ec2 modify-vpc-endpoint --vpc-endpoint-id {example_aws_vpc_endpoint.id} --remove-security-group-ids {default.id}\n,\nopts = pulumi.ResourceOptions(depends_on=[example_resource]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Command = Pulumi.Command;\nusing Null = Pulumi.Null;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Aws.Ec2.GetSecurityGroup.Invoke(new()\n {\n Name = \"default\",\n });\n\n var example = new Aws.Ec2.SecurityGroup(\"example\", new()\n {\n Name = \"sg\",\n Tags = \n {\n { \"workaround1\", \"tagged-name\" },\n { \"workaround2\", @default.Apply(@default =\u003e @default.Apply(getSecurityGroupResult =\u003e getSecurityGroupResult.Id)) },\n },\n });\n\n var exampleProvisioner0 = new Command.Local.Command(\"exampleProvisioner0\", new()\n {\n Create = \"true\",\n Update = \"true\",\n Delete = @$\" ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters \\\"\"Name=tag:Name,Values={tags.Workaround1}\\\"\" --query \\\"\"VpcEndpoints[0].VpcEndpointId\\\"\" --output text` \u0026\u0026\n aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${{ENDPOINT_ID}} --add-security-group-ids {tags.Workaround2} --remove-security-group-ids {id}\n\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example,\n },\n });\n\n var exampleResource = new Null.Resource(\"example\", new()\n {\n Triggers = \n {\n { \"rerunUponChangeOf\", Std.Join.Invoke(new()\n {\n Separator = \",\",\n Input = exampleAwsVpcEndpoint.SecurityGroupIds,\n }).Apply(invoke =\u003e invoke.Result) },\n },\n });\n\n var exampleResourceProvisioner0 = new Command.Local.Command(\"exampleResourceProvisioner0\", new()\n {\n Create = @$\" aws ec2 modify-vpc-endpoint --vpc-endpoint-id {exampleAwsVpcEndpoint.Id} --remove-security-group-ids {@default.Apply(getSecurityGroupResult =\u003e getSecurityGroupResult.Id)}\n\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n exampleResource,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-command/sdk/go/command/local\"\n\t\"github.com/pulumi/pulumi-null/sdk/go/null\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := ec2.LookupSecurityGroup(ctx, \u0026ec2.LookupSecurityGroupArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := ec2.NewSecurityGroup(ctx, \"example\", \u0026ec2.SecurityGroupArgs{\n\t\t\tName: pulumi.String(\"sg\"),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"workaround1\": pulumi.String(\"tagged-name\"),\n\t\t\t\t\"workaround2\": pulumi.String(_default.Id),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = local.NewCommand(ctx, \"exampleProvisioner0\", \u0026local.CommandArgs{\n\t\t\tCreate: \"true\",\n\t\t\tUpdate: \"true\",\n\t\t\tDelete: fmt.Sprintf(\" ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters \\\\\\\"Name=tag:Name,Values=%v\\\\\\\" --query \\\\\\\"VpcEndpoints[0].VpcEndpointId\\\\\\\" --output text` \u0026\u0026\\n aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${ENDPOINT_ID} --add-security-group-ids %v --remove-security-group-ids %v\\n\", tags.Workaround1, tags.Workaround2, id),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeJoin, err := std.Join(ctx, \u0026std.JoinArgs{\n\t\t\tSeparator: \",\",\n\t\t\tInput: exampleAwsVpcEndpoint.SecurityGroupIds,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleResource, err := null.NewResource(ctx, \"example\", \u0026null.ResourceArgs{\n\t\t\tTriggers: pulumi.StringMap{\n\t\t\t\t\"rerunUponChangeOf\": pulumi.String(invokeJoin.Result),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = local.NewCommand(ctx, \"exampleResourceProvisioner0\", \u0026local.CommandArgs{\n\t\t\tCreate: fmt.Sprintf(\" aws ec2 modify-vpc-endpoint --vpc-endpoint-id %v --remove-security-group-ids %v\\n\", exampleAwsVpcEndpoint.Id, _default.Id),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleResource,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.Ec2Functions;\nimport com.pulumi.aws.ec2.inputs.GetSecurityGroupArgs;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport com.pulumi.command.local.Command;\nimport com.pulumi.command.local.CommandArgs;\nimport com.pulumi.null.Resource;\nimport com.pulumi.null.ResourceArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.JoinArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = Ec2Functions.getSecurityGroup(GetSecurityGroupArgs.builder()\n .name(\"default\")\n .build());\n\n var example = new SecurityGroup(\"example\", SecurityGroupArgs.builder()\n .name(\"sg\")\n .tags(Map.ofEntries(\n Map.entry(\"workaround1\", \"tagged-name\"),\n Map.entry(\"workaround2\", default_.id())\n ))\n .build());\n\n var exampleProvisioner0 = new Command(\"exampleProvisioner0\", CommandArgs.builder()\n .create(\"true\")\n .update(\"true\")\n .delete(\"\"\"\n ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters \\\"Name=tag:Name,Values=%s\\\" --query \\\"VpcEndpoints[0].VpcEndpointId\\\" --output text` \u0026\u0026\n aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${ENDPOINT_ID} --add-security-group-ids %s --remove-security-group-ids %s\n\", tags.workaround1(),tags.workaround2(),id))\n .build(), CustomResourceOptions.builder()\n .dependsOn(List.of(example))\n .build());\n\n var exampleResource = new Resource(\"exampleResource\", ResourceArgs.builder()\n .triggers(Map.of(\"rerunUponChangeOf\", StdFunctions.join(JoinArgs.builder()\n .separator(\",\")\n .input(exampleAwsVpcEndpoint.securityGroupIds())\n .build()).result()))\n .build());\n\n var exampleResourceProvisioner0 = new Command(\"exampleResourceProvisioner0\", CommandArgs.builder()\n .create(\"\"\"\n aws ec2 modify-vpc-endpoint --vpc-endpoint-id %s --remove-security-group-ids %s\n\", exampleAwsVpcEndpoint.id(),default_.id()))\n .build(), CustomResourceOptions.builder()\n .dependsOn(List.of(exampleResource))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ec2:SecurityGroup\n properties:\n name: sg\n tags:\n workaround1: tagged-name\n workaround2: ${default.id}\n exampleProvisioner0:\n type: command:local:Command\n properties:\n create: 'true'\n update: 'true'\n delete: |2\n ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters \\\"Name=tag:Name,Values=${tags.workaround1}\\\" --query \\\"VpcEndpoints[0].VpcEndpointId\\\" --output text` \u0026\u0026\n aws ec2 modify-vpc-endpoint --vpc-endpoint-id $${ENDPOINT_ID} --add-security-group-ids ${tags.workaround2} --remove-security-group-ids ${id}\n options:\n dependsOn:\n - ${example}\n exampleResource:\n type: null:Resource\n name: example\n properties:\n triggers:\n rerunUponChangeOf:\n fn::invoke:\n function: std:join\n arguments:\n separator: ','\n input: ${exampleAwsVpcEndpoint.securityGroupIds}\n return: result\n exampleResourceProvisioner0:\n type: command:local:Command\n properties:\n create: |2\n aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${exampleAwsVpcEndpoint.id} --remove-security-group-ids ${default.id}\n options:\n dependsOn:\n - ${exampleResource}\nvariables:\n default:\n fn::invoke:\n function: aws:ec2:getSecurityGroup\n arguments:\n name: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n* `id` (String) ID of the security group.\n\n#### Optional\n\n* `account_id` (String) AWS Account where this resource is managed.\n\n* `region` (String) Region where this resource is managed.\n\nUsing `pulumi import`, import Security Groups using the security group `id`. For example:\n\nconsole\n\n% pulumi import aws_security_group.example sg-903004f8\n\n", "properties": { "arn": { "type": "string", @@ -278207,7 +278207,7 @@ } }, "aws:ec2/vpcIpam:VpcIpam": { - "description": "Provides an IPAM resource.\n\n## Example Usage\n\nBasic usage:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst current = aws.getRegion({});\nconst main = new aws.ec2.VpcIpam(\"main\", {\n description: \"My IPAM\",\n operatingRegions: [{\n regionName: current.then(current =\u003e current.region),\n }],\n tags: {\n Test: \"Main\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncurrent = aws.get_region()\nmain = aws.ec2.VpcIpam(\"main\",\n description=\"My IPAM\",\n operating_regions=[{\n \"region_name\": current.region,\n }],\n tags={\n \"Test\": \"Main\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Aws.GetRegion.Invoke();\n\n var main = new Aws.Ec2.VpcIpam(\"main\", new()\n {\n Description = \"My IPAM\",\n OperatingRegions = new[]\n {\n new Aws.Ec2.Inputs.VpcIpamOperatingRegionArgs\n {\n RegionName = current.Apply(getRegionResult =\u003e getRegionResult.Region),\n },\n },\n Tags = \n {\n { \"Test\", \"Main\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := aws.GetRegion(ctx, \u0026aws.GetRegionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ec2.NewVpcIpam(ctx, \"main\", \u0026ec2.VpcIpamArgs{\n\t\t\tDescription: pulumi.String(\"My IPAM\"),\n\t\t\tOperatingRegions: ec2.VpcIpamOperatingRegionArray{\n\t\t\t\t\u0026ec2.VpcIpamOperatingRegionArgs{\n\t\t\t\t\tRegionName: pulumi.String(current.Region),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Test\": pulumi.String(\"Main\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.AwsFunctions;\nimport com.pulumi.aws.inputs.GetRegionArgs;\nimport com.pulumi.aws.ec2.VpcIpam;\nimport com.pulumi.aws.ec2.VpcIpamArgs;\nimport com.pulumi.aws.ec2.inputs.VpcIpamOperatingRegionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AwsFunctions.getRegion(GetRegionArgs.builder()\n .build());\n\n var main = new VpcIpam(\"main\", VpcIpamArgs.builder()\n .description(\"My IPAM\")\n .operatingRegions(VpcIpamOperatingRegionArgs.builder()\n .regionName(current.region())\n .build())\n .tags(Map.of(\"Test\", \"Main\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: aws:ec2:VpcIpam\n properties:\n description: My IPAM\n operatingRegions:\n - regionName: ${current.region}\n tags:\n Test: Main\nvariables:\n current:\n fn::invoke:\n function: aws:getRegion\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nShared with multiple operating_regions:\n\n## Import\n\nUsing `pulumi import`, import IPAMs using the IPAM `id`. For example:\n\n```sh\n$ pulumi import aws:ec2/vpcIpam:VpcIpam example ipam-0178368ad2146a492\n```\n", + "description": "Provides an IPAM resource.\n\n## Example Usage\n\nBasic usage:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst current = aws.getRegion({});\nconst main = new aws.ec2.VpcIpam(\"main\", {\n description: \"My IPAM\",\n operatingRegions: [{\n regionName: current.then(current =\u003e current.region),\n }],\n tags: {\n Test: \"Main\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncurrent = aws.get_region()\nmain = aws.ec2.VpcIpam(\"main\",\n description=\"My IPAM\",\n operating_regions=[{\n \"region_name\": current.region,\n }],\n tags={\n \"Test\": \"Main\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Aws.GetRegion.Invoke();\n\n var main = new Aws.Ec2.VpcIpam(\"main\", new()\n {\n Description = \"My IPAM\",\n OperatingRegions = new[]\n {\n new Aws.Ec2.Inputs.VpcIpamOperatingRegionArgs\n {\n RegionName = current.Apply(getRegionResult =\u003e getRegionResult.Region),\n },\n },\n Tags = \n {\n { \"Test\", \"Main\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := aws.GetRegion(ctx, \u0026aws.GetRegionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ec2.NewVpcIpam(ctx, \"main\", \u0026ec2.VpcIpamArgs{\n\t\t\tDescription: pulumi.String(\"My IPAM\"),\n\t\t\tOperatingRegions: ec2.VpcIpamOperatingRegionArray{\n\t\t\t\t\u0026ec2.VpcIpamOperatingRegionArgs{\n\t\t\t\t\tRegionName: pulumi.String(current.Region),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Test\": pulumi.String(\"Main\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.AwsFunctions;\nimport com.pulumi.aws.inputs.GetRegionArgs;\nimport com.pulumi.aws.ec2.VpcIpam;\nimport com.pulumi.aws.ec2.VpcIpamArgs;\nimport com.pulumi.aws.ec2.inputs.VpcIpamOperatingRegionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AwsFunctions.getRegion(GetRegionArgs.builder()\n .build());\n\n var main = new VpcIpam(\"main\", VpcIpamArgs.builder()\n .description(\"My IPAM\")\n .operatingRegions(VpcIpamOperatingRegionArgs.builder()\n .regionName(current.region())\n .build())\n .tags(Map.of(\"Test\", \"Main\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: aws:ec2:VpcIpam\n properties:\n description: My IPAM\n operatingRegions:\n - regionName: ${current.region}\n tags:\n Test: Main\nvariables:\n current:\n fn::invoke:\n function: aws:getRegion\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nShared with multiple operating_regions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst current = aws.getRegion({});\nconst config = new pulumi.Config();\nconst ipamRegions = config.getObject\u003cArray\u003cany\u003e\u003e(\"ipamRegions\") || [\n \"us-east-1\",\n \"us-west-2\",\n];\n// ensure current provider region is an operating_regions entry\nconst allIpamRegions = std.concat({\n input: [\n [current.then(current =\u003e current.region)],\n ipamRegions,\n ],\n}).then(invoke =\u003e std.distinct({\n input: invoke.result,\n})).then(invoke =\u003e invoke.result);\nconst main = new aws.ec2.VpcIpam(\"main\", {\n operatingRegions: allIpamRegions.map((v, k) =\u003e ({key: k, value: v})).apply(entries =\u003e entries.map(entry =\u003e ({\n regionName: entry.value,\n }))),\n description: \"multi region ipam\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\ncurrent = aws.get_region()\nconfig = pulumi.Config()\nipam_regions = config.get_object(\"ipamRegions\")\nif ipam_regions is None:\n ipam_regions = [\n \"us-east-1\",\n \"us-west-2\",\n ]\n# ensure current provider region is an operating_regions entry\nall_ipam_regions = std.distinct(input=std.concat(input=[\n [current.region],\n ipam_regions,\n]).result).result\nmain = aws.ec2.VpcIpam(\"main\",\n operating_regions=[{\"key\": k, \"value\": v} for k, v in all_ipam_regions].apply(lambda entries: [{\n \"regionName\": entry[\"value\"],\n } for entry in entries]),\n description=\"multi region ipam\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Aws.GetRegion.Invoke();\n\n var config = new Config();\n var ipamRegions = config.GetObject\u003cdynamic[]\u003e(\"ipamRegions\") ?? new[]\n {\n \"us-east-1\",\n \"us-west-2\",\n };\n // ensure current provider region is an operating_regions entry\n var allIpamRegions = Std.Concat.Invoke(new()\n {\n Input = new[]\n {\n new[]\n {\n current.Apply(getRegionResult =\u003e getRegionResult.Region),\n },\n ipamRegions,\n },\n }).Apply(invoke =\u003e Std.Distinct.Invoke(new()\n {\n Input = invoke.Result,\n })).Apply(invoke =\u003e invoke.Result);\n\n var main = new Aws.Ec2.VpcIpam(\"main\", new()\n {\n OperatingRegions = .Apply(entries =\u003e entries.Select(entry =\u003e \n {\n return \n {\n { \"regionName\", entry.Value },\n };\n }).ToList()),\n Description = \"multi region ipam\",\n });\n\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import IPAMs using the IPAM `id`. For example:\n\n```sh\n$ pulumi import aws:ec2/vpcIpam:VpcIpam example ipam-0178368ad2146a492\n```\n", "properties": { "arn": { "type": "string", @@ -284938,7 +284938,7 @@ } }, "aws:ecr/lifecyclePolicy:LifecyclePolicy": { - "description": "Manages an ECR repository lifecycle policy.\n\n\u003e **NOTE:** Only one \u003cspan pulumi-lang-nodejs=\"`aws.ecr.LifecyclePolicy`\" pulumi-lang-dotnet=\"`aws.ecr.LifecyclePolicy`\" pulumi-lang-go=\"`ecr.LifecyclePolicy`\" pulumi-lang-python=\"`ecr.LifecyclePolicy`\" pulumi-lang-yaml=\"`aws.ecr.LifecyclePolicy`\" pulumi-lang-java=\"`aws.ecr.LifecyclePolicy`\"\u003e`aws.ecr.LifecyclePolicy`\u003c/span\u003e resource can be used with the same ECR repository. To apply multiple rules, they must be combined in the \u003cspan pulumi-lang-nodejs=\"`policy`\" pulumi-lang-dotnet=\"`Policy`\" pulumi-lang-go=\"`policy`\" pulumi-lang-python=\"`policy`\" pulumi-lang-yaml=\"`policy`\" pulumi-lang-java=\"`policy`\"\u003e`policy`\u003c/span\u003e JSON.\n\n\u003e **NOTE:** The AWS ECR API seems to reorder rules based on `rulePriority`. If you define multiple rules that are not sorted in ascending `rulePriority` order in the this provider code, the resource will be flagged for recreation every deployment.\n\n## Example Usage\n\n### Policy on untagged image\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ecr.Repository(\"example\", {name: \"example-repo\"});\nconst exampleLifecyclePolicy = new aws.ecr.LifecyclePolicy(\"example\", {\n repository: example.name,\n policy: `{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Expire images older than 14 days\",\n \"selection\": {\n \"tagStatus\": \"untagged\",\n \"countType\": \"sinceImagePushed\",\n \"countUnit\": \"days\",\n \"countNumber\": 14\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ecr.Repository(\"example\", name=\"example-repo\")\nexample_lifecycle_policy = aws.ecr.LifecyclePolicy(\"example\",\n repository=example.name,\n policy=\"\"\"{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Expire images older than 14 days\",\n \"selection\": {\n \"tagStatus\": \"untagged\",\n \"countType\": \"sinceImagePushed\",\n \"countUnit\": \"days\",\n \"countNumber\": 14\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ecr.Repository(\"example\", new()\n {\n Name = \"example-repo\",\n });\n\n var exampleLifecyclePolicy = new Aws.Ecr.LifecyclePolicy(\"example\", new()\n {\n Repository = example.Name,\n Policy = @\"{\n \"\"rules\"\": [\n {\n \"\"rulePriority\"\": 1,\n \"\"description\"\": \"\"Expire images older than 14 days\"\",\n \"\"selection\"\": {\n \"\"tagStatus\"\": \"\"untagged\"\",\n \"\"countType\"\": \"\"sinceImagePushed\"\",\n \"\"countUnit\"\": \"\"days\"\",\n \"\"countNumber\"\": 14\n },\n \"\"action\"\": {\n \"\"type\"\": \"\"expire\"\"\n }\n }\n ]\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ecr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := ecr.NewRepository(ctx, \"example\", \u0026ecr.RepositoryArgs{\n\t\t\tName: pulumi.String(\"example-repo\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ecr.NewLifecyclePolicy(ctx, \"example\", \u0026ecr.LifecyclePolicyArgs{\n\t\t\tRepository: example.Name,\n\t\t\tPolicy: pulumi.Any(`{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Expire images older than 14 days\",\n \"selection\": {\n \"tagStatus\": \"untagged\",\n \"countType\": \"sinceImagePushed\",\n \"countUnit\": \"days\",\n \"countNumber\": 14\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ecr.Repository;\nimport com.pulumi.aws.ecr.RepositoryArgs;\nimport com.pulumi.aws.ecr.LifecyclePolicy;\nimport com.pulumi.aws.ecr.LifecyclePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Repository(\"example\", RepositoryArgs.builder()\n .name(\"example-repo\")\n .build());\n\n var exampleLifecyclePolicy = new LifecyclePolicy(\"exampleLifecyclePolicy\", LifecyclePolicyArgs.builder()\n .repository(example.name())\n .policy(\"\"\"\n{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Expire images older than 14 days\",\n \"selection\": {\n \"tagStatus\": \"untagged\",\n \"countType\": \"sinceImagePushed\",\n \"countUnit\": \"days\",\n \"countNumber\": 14\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ecr:Repository\n properties:\n name: example-repo\n exampleLifecyclePolicy:\n type: aws:ecr:LifecyclePolicy\n name: example\n properties:\n repository: ${example.name}\n policy: |\n {\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Expire images older than 14 days\",\n \"selection\": {\n \"tagStatus\": \"untagged\",\n \"countType\": \"sinceImagePushed\",\n \"countUnit\": \"days\",\n \"countNumber\": 14\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Policy on tagged image\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ecr.Repository(\"example\", {name: \"example-repo\"});\nconst exampleLifecyclePolicy = new aws.ecr.LifecyclePolicy(\"example\", {\n repository: example.name,\n policy: `{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Keep last 30 images\",\n \"selection\": {\n \"tagStatus\": \"tagged\",\n \"tagPrefixList\": [\"v\"],\n \"countType\": \"imageCountMoreThan\",\n \"countNumber\": 30\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ecr.Repository(\"example\", name=\"example-repo\")\nexample_lifecycle_policy = aws.ecr.LifecyclePolicy(\"example\",\n repository=example.name,\n policy=\"\"\"{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Keep last 30 images\",\n \"selection\": {\n \"tagStatus\": \"tagged\",\n \"tagPrefixList\": [\"v\"],\n \"countType\": \"imageCountMoreThan\",\n \"countNumber\": 30\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ecr.Repository(\"example\", new()\n {\n Name = \"example-repo\",\n });\n\n var exampleLifecyclePolicy = new Aws.Ecr.LifecyclePolicy(\"example\", new()\n {\n Repository = example.Name,\n Policy = @\"{\n \"\"rules\"\": [\n {\n \"\"rulePriority\"\": 1,\n \"\"description\"\": \"\"Keep last 30 images\"\",\n \"\"selection\"\": {\n \"\"tagStatus\"\": \"\"tagged\"\",\n \"\"tagPrefixList\"\": [\"\"v\"\"],\n \"\"countType\"\": \"\"imageCountMoreThan\"\",\n \"\"countNumber\"\": 30\n },\n \"\"action\"\": {\n \"\"type\"\": \"\"expire\"\"\n }\n }\n ]\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ecr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := ecr.NewRepository(ctx, \"example\", \u0026ecr.RepositoryArgs{\n\t\t\tName: pulumi.String(\"example-repo\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ecr.NewLifecyclePolicy(ctx, \"example\", \u0026ecr.LifecyclePolicyArgs{\n\t\t\tRepository: example.Name,\n\t\t\tPolicy: pulumi.Any(`{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Keep last 30 images\",\n \"selection\": {\n \"tagStatus\": \"tagged\",\n \"tagPrefixList\": [\"v\"],\n \"countType\": \"imageCountMoreThan\",\n \"countNumber\": 30\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ecr.Repository;\nimport com.pulumi.aws.ecr.RepositoryArgs;\nimport com.pulumi.aws.ecr.LifecyclePolicy;\nimport com.pulumi.aws.ecr.LifecyclePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Repository(\"example\", RepositoryArgs.builder()\n .name(\"example-repo\")\n .build());\n\n var exampleLifecyclePolicy = new LifecyclePolicy(\"exampleLifecyclePolicy\", LifecyclePolicyArgs.builder()\n .repository(example.name())\n .policy(\"\"\"\n{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Keep last 30 images\",\n \"selection\": {\n \"tagStatus\": \"tagged\",\n \"tagPrefixList\": [\"v\"],\n \"countType\": \"imageCountMoreThan\",\n \"countNumber\": 30\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ecr:Repository\n properties:\n name: example-repo\n exampleLifecyclePolicy:\n type: aws:ecr:LifecyclePolicy\n name: example\n properties:\n repository: ${example.name}\n policy: |\n {\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Keep last 30 images\",\n \"selection\": {\n \"tagStatus\": \"tagged\",\n \"tagPrefixList\": [\"v\"],\n \"countType\": \"imageCountMoreThan\",\n \"countNumber\": 30\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n* `repository` - (String) Name of the ECR repository.\n\n#### Optional\n\n* `account_id` (String) AWS Account where this resource is managed.\n\n* `region` (String) Region where this resource is managed.\n\nUsing `pulumi import`, import ECR Lifecycle Policy using the name of the repository. For example:\n\nconsole\n\n% pulumi import aws_ecr_lifecycle_policy.example tf-example\n\n", + "description": "Manages an ECR repository lifecycle policy.\n\n\u003e **NOTE:** Only one \u003cspan pulumi-lang-nodejs=\"`aws.ecr.LifecyclePolicy`\" pulumi-lang-dotnet=\"`aws.ecr.LifecyclePolicy`\" pulumi-lang-go=\"`ecr.LifecyclePolicy`\" pulumi-lang-python=\"`ecr.LifecyclePolicy`\" pulumi-lang-yaml=\"`aws.ecr.LifecyclePolicy`\" pulumi-lang-java=\"`aws.ecr.LifecyclePolicy`\"\u003e`aws.ecr.LifecyclePolicy`\u003c/span\u003e resource can be used with the same ECR repository. To apply multiple rules, they must be combined in the \u003cspan pulumi-lang-nodejs=\"`policy`\" pulumi-lang-dotnet=\"`Policy`\" pulumi-lang-go=\"`policy`\" pulumi-lang-python=\"`policy`\" pulumi-lang-yaml=\"`policy`\" pulumi-lang-java=\"`policy`\"\u003e`policy`\u003c/span\u003e JSON.\n\n\u003e **NOTE:** The AWS ECR API seems to reorder rules based on `rulePriority`. If you define multiple rules that are not sorted in ascending `rulePriority` order in the this provider code, the resource will be flagged for recreation every deployment.\n\n## Example Usage\n\n### Policy on untagged image\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ecr.Repository(\"example\", {name: \"example-repo\"});\nconst exampleLifecyclePolicy = new aws.ecr.LifecyclePolicy(\"example\", {\n repository: example.name,\n policy: `{\n \\\\\"rules\\\\\": [\n {\n \\\\\"rulePriority\\\\\": 1,\n \\\\\"description\\\\\": \\\\\"Expire images older than 14 days\\\\\",\n \\\\\"selection\\\\\": {\n \\\\\"tagStatus\\\\\": \\\\\"untagged\\\\\",\n \\\\\"countType\\\\\": \\\\\"sinceImagePushed\\\\\",\n \\\\\"countUnit\\\\\": \\\\\"days\\\\\",\n \\\\\"countNumber\\\\\": 14\n },\n \\\\\"action\\\\\": {\n \\\\\"type\\\\\": \\\\\"expire\\\\\"\n }\n }\n ]\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ecr.Repository(\"example\", name=\"example-repo\")\nexample_lifecycle_policy = aws.ecr.LifecyclePolicy(\"example\",\n repository=example.name,\n policy=\"\"\"{\n \\\"rules\\\": [\n {\n \\\"rulePriority\\\": 1,\n \\\"description\\\": \\\"Expire images older than 14 days\\\",\n \\\"selection\\\": {\n \\\"tagStatus\\\": \\\"untagged\\\",\n \\\"countType\\\": \\\"sinceImagePushed\\\",\n \\\"countUnit\\\": \\\"days\\\",\n \\\"countNumber\\\": 14\n },\n \\\"action\\\": {\n \\\"type\\\": \\\"expire\\\"\n }\n }\n ]\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ecr.Repository(\"example\", new()\n {\n Name = \"example-repo\",\n });\n\n var exampleLifecyclePolicy = new Aws.Ecr.LifecyclePolicy(\"example\", new()\n {\n Repository = example.Name,\n Policy = @\"{\n \\\"\"rules\\\"\": [\n {\n \\\"\"rulePriority\\\"\": 1,\n \\\"\"description\\\"\": \\\"\"Expire images older than 14 days\\\"\",\n \\\"\"selection\\\"\": {\n \\\"\"tagStatus\\\"\": \\\"\"untagged\\\"\",\n \\\"\"countType\\\"\": \\\"\"sinceImagePushed\\\"\",\n \\\"\"countUnit\\\"\": \\\"\"days\\\"\",\n \\\"\"countNumber\\\"\": 14\n },\n \\\"\"action\\\"\": {\n \\\"\"type\\\"\": \\\"\"expire\\\"\"\n }\n }\n ]\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ecr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := ecr.NewRepository(ctx, \"example\", \u0026ecr.RepositoryArgs{\n\t\t\tName: pulumi.String(\"example-repo\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ecr.NewLifecyclePolicy(ctx, \"example\", \u0026ecr.LifecyclePolicyArgs{\n\t\t\tRepository: example.Name,\n\t\t\tPolicy: pulumi.Any(`{\n \\\"rules\\\": [\n {\n \\\"rulePriority\\\": 1,\n \\\"description\\\": \\\"Expire images older than 14 days\\\",\n \\\"selection\\\": {\n \\\"tagStatus\\\": \\\"untagged\\\",\n \\\"countType\\\": \\\"sinceImagePushed\\\",\n \\\"countUnit\\\": \\\"days\\\",\n \\\"countNumber\\\": 14\n },\n \\\"action\\\": {\n \\\"type\\\": \\\"expire\\\"\n }\n }\n ]\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ecr.Repository;\nimport com.pulumi.aws.ecr.RepositoryArgs;\nimport com.pulumi.aws.ecr.LifecyclePolicy;\nimport com.pulumi.aws.ecr.LifecyclePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Repository(\"example\", RepositoryArgs.builder()\n .name(\"example-repo\")\n .build());\n\n var exampleLifecyclePolicy = new LifecyclePolicy(\"exampleLifecyclePolicy\", LifecyclePolicyArgs.builder()\n .repository(example.name())\n .policy(\"\"\"\n{\n \\\"rules\\\": [\n {\n \\\"rulePriority\\\": 1,\n \\\"description\\\": \\\"Expire images older than 14 days\\\",\n \\\"selection\\\": {\n \\\"tagStatus\\\": \\\"untagged\\\",\n \\\"countType\\\": \\\"sinceImagePushed\\\",\n \\\"countUnit\\\": \\\"days\\\",\n \\\"countNumber\\\": 14\n },\n \\\"action\\\": {\n \\\"type\\\": \\\"expire\\\"\n }\n }\n ]\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ecr:Repository\n properties:\n name: example-repo\n exampleLifecyclePolicy:\n type: aws:ecr:LifecyclePolicy\n name: example\n properties:\n repository: ${example.name}\n policy: |\n {\n \\\"rules\\\": [\n {\n \\\"rulePriority\\\": 1,\n \\\"description\\\": \\\"Expire images older than 14 days\\\",\n \\\"selection\\\": {\n \\\"tagStatus\\\": \\\"untagged\\\",\n \\\"countType\\\": \\\"sinceImagePushed\\\",\n \\\"countUnit\\\": \\\"days\\\",\n \\\"countNumber\\\": 14\n },\n \\\"action\\\": {\n \\\"type\\\": \\\"expire\\\"\n }\n }\n ]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Policy on tagged image\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ecr.Repository(\"example\", {name: \"example-repo\"});\nconst exampleLifecyclePolicy = new aws.ecr.LifecyclePolicy(\"example\", {\n repository: example.name,\n policy: `{\n \\\\\"rules\\\\\": [\n {\n \\\\\"rulePriority\\\\\": 1,\n \\\\\"description\\\\\": \\\\\"Keep last 30 images\\\\\",\n \\\\\"selection\\\\\": {\n \\\\\"tagStatus\\\\\": \\\\\"tagged\\\\\",\n \\\\\"tagPrefixList\\\\\": [\\\\\"v\\\\\"],\n \\\\\"countType\\\\\": \\\\\"imageCountMoreThan\\\\\",\n \\\\\"countNumber\\\\\": 30\n },\n \\\\\"action\\\\\": {\n \\\\\"type\\\\\": \\\\\"expire\\\\\"\n }\n }\n ]\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ecr.Repository(\"example\", name=\"example-repo\")\nexample_lifecycle_policy = aws.ecr.LifecyclePolicy(\"example\",\n repository=example.name,\n policy=\"\"\"{\n \\\"rules\\\": [\n {\n \\\"rulePriority\\\": 1,\n \\\"description\\\": \\\"Keep last 30 images\\\",\n \\\"selection\\\": {\n \\\"tagStatus\\\": \\\"tagged\\\",\n \\\"tagPrefixList\\\": [\\\"v\\\"],\n \\\"countType\\\": \\\"imageCountMoreThan\\\",\n \\\"countNumber\\\": 30\n },\n \\\"action\\\": {\n \\\"type\\\": \\\"expire\\\"\n }\n }\n ]\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ecr.Repository(\"example\", new()\n {\n Name = \"example-repo\",\n });\n\n var exampleLifecyclePolicy = new Aws.Ecr.LifecyclePolicy(\"example\", new()\n {\n Repository = example.Name,\n Policy = @\"{\n \\\"\"rules\\\"\": [\n {\n \\\"\"rulePriority\\\"\": 1,\n \\\"\"description\\\"\": \\\"\"Keep last 30 images\\\"\",\n \\\"\"selection\\\"\": {\n \\\"\"tagStatus\\\"\": \\\"\"tagged\\\"\",\n \\\"\"tagPrefixList\\\"\": [\\\"\"v\\\"\"],\n \\\"\"countType\\\"\": \\\"\"imageCountMoreThan\\\"\",\n \\\"\"countNumber\\\"\": 30\n },\n \\\"\"action\\\"\": {\n \\\"\"type\\\"\": \\\"\"expire\\\"\"\n }\n }\n ]\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ecr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := ecr.NewRepository(ctx, \"example\", \u0026ecr.RepositoryArgs{\n\t\t\tName: pulumi.String(\"example-repo\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ecr.NewLifecyclePolicy(ctx, \"example\", \u0026ecr.LifecyclePolicyArgs{\n\t\t\tRepository: example.Name,\n\t\t\tPolicy: pulumi.Any(`{\n \\\"rules\\\": [\n {\n \\\"rulePriority\\\": 1,\n \\\"description\\\": \\\"Keep last 30 images\\\",\n \\\"selection\\\": {\n \\\"tagStatus\\\": \\\"tagged\\\",\n \\\"tagPrefixList\\\": [\\\"v\\\"],\n \\\"countType\\\": \\\"imageCountMoreThan\\\",\n \\\"countNumber\\\": 30\n },\n \\\"action\\\": {\n \\\"type\\\": \\\"expire\\\"\n }\n }\n ]\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ecr.Repository;\nimport com.pulumi.aws.ecr.RepositoryArgs;\nimport com.pulumi.aws.ecr.LifecyclePolicy;\nimport com.pulumi.aws.ecr.LifecyclePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Repository(\"example\", RepositoryArgs.builder()\n .name(\"example-repo\")\n .build());\n\n var exampleLifecyclePolicy = new LifecyclePolicy(\"exampleLifecyclePolicy\", LifecyclePolicyArgs.builder()\n .repository(example.name())\n .policy(\"\"\"\n{\n \\\"rules\\\": [\n {\n \\\"rulePriority\\\": 1,\n \\\"description\\\": \\\"Keep last 30 images\\\",\n \\\"selection\\\": {\n \\\"tagStatus\\\": \\\"tagged\\\",\n \\\"tagPrefixList\\\": [\\\"v\\\"],\n \\\"countType\\\": \\\"imageCountMoreThan\\\",\n \\\"countNumber\\\": 30\n },\n \\\"action\\\": {\n \\\"type\\\": \\\"expire\\\"\n }\n }\n ]\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ecr:Repository\n properties:\n name: example-repo\n exampleLifecyclePolicy:\n type: aws:ecr:LifecyclePolicy\n name: example\n properties:\n repository: ${example.name}\n policy: |\n {\n \\\"rules\\\": [\n {\n \\\"rulePriority\\\": 1,\n \\\"description\\\": \\\"Keep last 30 images\\\",\n \\\"selection\\\": {\n \\\"tagStatus\\\": \\\"tagged\\\",\n \\\"tagPrefixList\\\": [\\\"v\\\"],\n \\\"countType\\\": \\\"imageCountMoreThan\\\",\n \\\"countNumber\\\": 30\n },\n \\\"action\\\": {\n \\\"type\\\": \\\"expire\\\"\n }\n }\n ]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n* `repository` - (String) Name of the ECR repository.\n\n#### Optional\n\n* `account_id` (String) AWS Account where this resource is managed.\n\n* `region` (String) Region where this resource is managed.\n\nUsing `pulumi import`, import ECR Lifecycle Policy using the name of the repository. For example:\n\nconsole\n\n% pulumi import aws_ecr_lifecycle_policy.example tf-example\n\n", "properties": { "policy": { "type": "string", @@ -285531,7 +285531,7 @@ } }, "aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate": { - "description": "Provides an Elastic Container Registry Repository Creation Template.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = aws.iam.getPolicyDocument({\n statements: [{\n sid: \"new policy\",\n effect: \"Allow\",\n principals: [{\n type: \"AWS\",\n identifiers: [\"123456789012\"],\n }],\n actions: [\n \"ecr:GetDownloadUrlForLayer\",\n \"ecr:BatchGetImage\",\n \"ecr:BatchCheckLayerAvailability\",\n \"ecr:PutImage\",\n \"ecr:InitiateLayerUpload\",\n \"ecr:UploadLayerPart\",\n \"ecr:CompleteLayerUpload\",\n \"ecr:DescribeRepositories\",\n \"ecr:GetRepositoryPolicy\",\n \"ecr:ListImages\",\n \"ecr:DeleteRepository\",\n \"ecr:BatchDeleteImage\",\n \"ecr:SetRepositoryPolicy\",\n \"ecr:DeleteRepositoryPolicy\",\n ],\n }],\n});\nconst exampleRepositoryCreationTemplate = new aws.ecr.RepositoryCreationTemplate(\"example\", {\n prefix: \"example\",\n description: \"An example template\",\n imageTagMutability: \"IMMUTABLE\",\n customRoleArn: \"arn:aws:iam::123456789012:role/example\",\n appliedFors: [\"PULL_THROUGH_CACHE\"],\n encryptionConfigurations: [{\n encryptionType: \"AES256\",\n }],\n repositoryPolicy: example.then(example =\u003e example.json),\n lifecyclePolicy: `{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Expire images older than 14 days\",\n \"selection\": {\n \"tagStatus\": \"untagged\",\n \"countType\": \"sinceImagePushed\",\n \"countUnit\": \"days\",\n \"countNumber\": 14\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n`,\n resourceTags: {\n Foo: \"Bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.iam.get_policy_document(statements=[{\n \"sid\": \"new policy\",\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"AWS\",\n \"identifiers\": [\"123456789012\"],\n }],\n \"actions\": [\n \"ecr:GetDownloadUrlForLayer\",\n \"ecr:BatchGetImage\",\n \"ecr:BatchCheckLayerAvailability\",\n \"ecr:PutImage\",\n \"ecr:InitiateLayerUpload\",\n \"ecr:UploadLayerPart\",\n \"ecr:CompleteLayerUpload\",\n \"ecr:DescribeRepositories\",\n \"ecr:GetRepositoryPolicy\",\n \"ecr:ListImages\",\n \"ecr:DeleteRepository\",\n \"ecr:BatchDeleteImage\",\n \"ecr:SetRepositoryPolicy\",\n \"ecr:DeleteRepositoryPolicy\",\n ],\n}])\nexample_repository_creation_template = aws.ecr.RepositoryCreationTemplate(\"example\",\n prefix=\"example\",\n description=\"An example template\",\n image_tag_mutability=\"IMMUTABLE\",\n custom_role_arn=\"arn:aws:iam::123456789012:role/example\",\n applied_fors=[\"PULL_THROUGH_CACHE\"],\n encryption_configurations=[{\n \"encryption_type\": \"AES256\",\n }],\n repository_policy=example.json,\n lifecycle_policy=\"\"\"{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Expire images older than 14 days\",\n \"selection\": {\n \"tagStatus\": \"untagged\",\n \"countType\": \"sinceImagePushed\",\n \"countUnit\": \"days\",\n \"countNumber\": 14\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n\"\"\",\n resource_tags={\n \"Foo\": \"Bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Sid = \"new policy\",\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"AWS\",\n Identifiers = new[]\n {\n \"123456789012\",\n },\n },\n },\n Actions = new[]\n {\n \"ecr:GetDownloadUrlForLayer\",\n \"ecr:BatchGetImage\",\n \"ecr:BatchCheckLayerAvailability\",\n \"ecr:PutImage\",\n \"ecr:InitiateLayerUpload\",\n \"ecr:UploadLayerPart\",\n \"ecr:CompleteLayerUpload\",\n \"ecr:DescribeRepositories\",\n \"ecr:GetRepositoryPolicy\",\n \"ecr:ListImages\",\n \"ecr:DeleteRepository\",\n \"ecr:BatchDeleteImage\",\n \"ecr:SetRepositoryPolicy\",\n \"ecr:DeleteRepositoryPolicy\",\n },\n },\n },\n });\n\n var exampleRepositoryCreationTemplate = new Aws.Ecr.RepositoryCreationTemplate(\"example\", new()\n {\n Prefix = \"example\",\n Description = \"An example template\",\n ImageTagMutability = \"IMMUTABLE\",\n CustomRoleArn = \"arn:aws:iam::123456789012:role/example\",\n AppliedFors = new[]\n {\n \"PULL_THROUGH_CACHE\",\n },\n EncryptionConfigurations = new[]\n {\n new Aws.Ecr.Inputs.RepositoryCreationTemplateEncryptionConfigurationArgs\n {\n EncryptionType = \"AES256\",\n },\n },\n RepositoryPolicy = example.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n LifecyclePolicy = @\"{\n \"\"rules\"\": [\n {\n \"\"rulePriority\"\": 1,\n \"\"description\"\": \"\"Expire images older than 14 days\"\",\n \"\"selection\"\": {\n \"\"tagStatus\"\": \"\"untagged\"\",\n \"\"countType\"\": \"\"sinceImagePushed\"\",\n \"\"countUnit\"\": \"\"days\"\",\n \"\"countNumber\"\": 14\n },\n \"\"action\"\": {\n \"\"type\"\": \"\"expire\"\"\n }\n }\n ]\n}\n\",\n ResourceTags = \n {\n { \"Foo\", \"Bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ecr\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tSid: pulumi.StringRef(\"new policy\"),\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"AWS\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"123456789012\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"ecr:GetDownloadUrlForLayer\",\n\t\t\t\t\t\t\"ecr:BatchGetImage\",\n\t\t\t\t\t\t\"ecr:BatchCheckLayerAvailability\",\n\t\t\t\t\t\t\"ecr:PutImage\",\n\t\t\t\t\t\t\"ecr:InitiateLayerUpload\",\n\t\t\t\t\t\t\"ecr:UploadLayerPart\",\n\t\t\t\t\t\t\"ecr:CompleteLayerUpload\",\n\t\t\t\t\t\t\"ecr:DescribeRepositories\",\n\t\t\t\t\t\t\"ecr:GetRepositoryPolicy\",\n\t\t\t\t\t\t\"ecr:ListImages\",\n\t\t\t\t\t\t\"ecr:DeleteRepository\",\n\t\t\t\t\t\t\"ecr:BatchDeleteImage\",\n\t\t\t\t\t\t\"ecr:SetRepositoryPolicy\",\n\t\t\t\t\t\t\"ecr:DeleteRepositoryPolicy\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ecr.NewRepositoryCreationTemplate(ctx, \"example\", \u0026ecr.RepositoryCreationTemplateArgs{\n\t\t\tPrefix: pulumi.String(\"example\"),\n\t\t\tDescription: pulumi.String(\"An example template\"),\n\t\t\tImageTagMutability: pulumi.String(\"IMMUTABLE\"),\n\t\t\tCustomRoleArn: pulumi.String(\"arn:aws:iam::123456789012:role/example\"),\n\t\t\tAppliedFors: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"PULL_THROUGH_CACHE\"),\n\t\t\t},\n\t\t\tEncryptionConfigurations: ecr.RepositoryCreationTemplateEncryptionConfigurationArray{\n\t\t\t\t\u0026ecr.RepositoryCreationTemplateEncryptionConfigurationArgs{\n\t\t\t\t\tEncryptionType: pulumi.String(\"AES256\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRepositoryPolicy: pulumi.String(example.Json),\n\t\t\tLifecyclePolicy: pulumi.String(`{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Expire images older than 14 days\",\n \"selection\": {\n \"tagStatus\": \"untagged\",\n \"countType\": \"sinceImagePushed\",\n \"countUnit\": \"days\",\n \"countNumber\": 14\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n`),\n\t\t\tResourceTags: pulumi.StringMap{\n\t\t\t\t\"Foo\": pulumi.String(\"Bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.ecr.RepositoryCreationTemplate;\nimport com.pulumi.aws.ecr.RepositoryCreationTemplateArgs;\nimport com.pulumi.aws.ecr.inputs.RepositoryCreationTemplateEncryptionConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .sid(\"new policy\")\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"AWS\")\n .identifiers(\"123456789012\")\n .build())\n .actions( \n \"ecr:GetDownloadUrlForLayer\",\n \"ecr:BatchGetImage\",\n \"ecr:BatchCheckLayerAvailability\",\n \"ecr:PutImage\",\n \"ecr:InitiateLayerUpload\",\n \"ecr:UploadLayerPart\",\n \"ecr:CompleteLayerUpload\",\n \"ecr:DescribeRepositories\",\n \"ecr:GetRepositoryPolicy\",\n \"ecr:ListImages\",\n \"ecr:DeleteRepository\",\n \"ecr:BatchDeleteImage\",\n \"ecr:SetRepositoryPolicy\",\n \"ecr:DeleteRepositoryPolicy\")\n .build())\n .build());\n\n var exampleRepositoryCreationTemplate = new RepositoryCreationTemplate(\"exampleRepositoryCreationTemplate\", RepositoryCreationTemplateArgs.builder()\n .prefix(\"example\")\n .description(\"An example template\")\n .imageTagMutability(\"IMMUTABLE\")\n .customRoleArn(\"arn:aws:iam::123456789012:role/example\")\n .appliedFors(\"PULL_THROUGH_CACHE\")\n .encryptionConfigurations(RepositoryCreationTemplateEncryptionConfigurationArgs.builder()\n .encryptionType(\"AES256\")\n .build())\n .repositoryPolicy(example.json())\n .lifecyclePolicy(\"\"\"\n{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Expire images older than 14 days\",\n \"selection\": {\n \"tagStatus\": \"untagged\",\n \"countType\": \"sinceImagePushed\",\n \"countUnit\": \"days\",\n \"countNumber\": 14\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n \"\"\")\n .resourceTags(Map.of(\"Foo\", \"Bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleRepositoryCreationTemplate:\n type: aws:ecr:RepositoryCreationTemplate\n name: example\n properties:\n prefix: example\n description: An example template\n imageTagMutability: IMMUTABLE\n customRoleArn: arn:aws:iam::123456789012:role/example\n appliedFors:\n - PULL_THROUGH_CACHE\n encryptionConfigurations:\n - encryptionType: AES256\n repositoryPolicy: ${example.json}\n lifecyclePolicy: |\n {\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Expire images older than 14 days\",\n \"selection\": {\n \"tagStatus\": \"untagged\",\n \"countType\": \"sinceImagePushed\",\n \"countUnit\": \"days\",\n \"countNumber\": 14\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n }\n resourceTags:\n Foo: Bar\nvariables:\n example:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - sid: new policy\n effect: Allow\n principals:\n - type: AWS\n identifiers:\n - '123456789012'\n actions:\n - ecr:GetDownloadUrlForLayer\n - ecr:BatchGetImage\n - ecr:BatchCheckLayerAvailability\n - ecr:PutImage\n - ecr:InitiateLayerUpload\n - ecr:UploadLayerPart\n - ecr:CompleteLayerUpload\n - ecr:DescribeRepositories\n - ecr:GetRepositoryPolicy\n - ecr:ListImages\n - ecr:DeleteRepository\n - ecr:BatchDeleteImage\n - ecr:SetRepositoryPolicy\n - ecr:DeleteRepositoryPolicy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import the ECR Repository Creating Templates using the `prefix`. For example:\n\n```sh\n$ pulumi import aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate example example\n```\n", + "description": "Provides an Elastic Container Registry Repository Creation Template.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = aws.iam.getPolicyDocument({\n statements: [{\n sid: \"new policy\",\n effect: \"Allow\",\n principals: [{\n type: \"AWS\",\n identifiers: [\"123456789012\"],\n }],\n actions: [\n \"ecr:GetDownloadUrlForLayer\",\n \"ecr:BatchGetImage\",\n \"ecr:BatchCheckLayerAvailability\",\n \"ecr:PutImage\",\n \"ecr:InitiateLayerUpload\",\n \"ecr:UploadLayerPart\",\n \"ecr:CompleteLayerUpload\",\n \"ecr:DescribeRepositories\",\n \"ecr:GetRepositoryPolicy\",\n \"ecr:ListImages\",\n \"ecr:DeleteRepository\",\n \"ecr:BatchDeleteImage\",\n \"ecr:SetRepositoryPolicy\",\n \"ecr:DeleteRepositoryPolicy\",\n ],\n }],\n});\nconst exampleRepositoryCreationTemplate = new aws.ecr.RepositoryCreationTemplate(\"example\", {\n prefix: \"example\",\n description: \"An example template\",\n imageTagMutability: \"IMMUTABLE\",\n customRoleArn: \"arn:aws:iam::123456789012:role/example\",\n appliedFors: [\"PULL_THROUGH_CACHE\"],\n encryptionConfigurations: [{\n encryptionType: \"AES256\",\n }],\n repositoryPolicy: example.then(example =\u003e example.json),\n lifecyclePolicy: `{\n \\\\\"rules\\\\\": [\n {\n \\\\\"rulePriority\\\\\": 1,\n \\\\\"description\\\\\": \\\\\"Expire images older than 14 days\\\\\",\n \\\\\"selection\\\\\": {\n \\\\\"tagStatus\\\\\": \\\\\"untagged\\\\\",\n \\\\\"countType\\\\\": \\\\\"sinceImagePushed\\\\\",\n \\\\\"countUnit\\\\\": \\\\\"days\\\\\",\n \\\\\"countNumber\\\\\": 14\n },\n \\\\\"action\\\\\": {\n \\\\\"type\\\\\": \\\\\"expire\\\\\"\n }\n }\n ]\n}\n`,\n resourceTags: {\n Foo: \"Bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.iam.get_policy_document(statements=[{\n \"sid\": \"new policy\",\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"AWS\",\n \"identifiers\": [\"123456789012\"],\n }],\n \"actions\": [\n \"ecr:GetDownloadUrlForLayer\",\n \"ecr:BatchGetImage\",\n \"ecr:BatchCheckLayerAvailability\",\n \"ecr:PutImage\",\n \"ecr:InitiateLayerUpload\",\n \"ecr:UploadLayerPart\",\n \"ecr:CompleteLayerUpload\",\n \"ecr:DescribeRepositories\",\n \"ecr:GetRepositoryPolicy\",\n \"ecr:ListImages\",\n \"ecr:DeleteRepository\",\n \"ecr:BatchDeleteImage\",\n \"ecr:SetRepositoryPolicy\",\n \"ecr:DeleteRepositoryPolicy\",\n ],\n}])\nexample_repository_creation_template = aws.ecr.RepositoryCreationTemplate(\"example\",\n prefix=\"example\",\n description=\"An example template\",\n image_tag_mutability=\"IMMUTABLE\",\n custom_role_arn=\"arn:aws:iam::123456789012:role/example\",\n applied_fors=[\"PULL_THROUGH_CACHE\"],\n encryption_configurations=[{\n \"encryption_type\": \"AES256\",\n }],\n repository_policy=example.json,\n lifecycle_policy=\"\"\"{\n \\\"rules\\\": [\n {\n \\\"rulePriority\\\": 1,\n \\\"description\\\": \\\"Expire images older than 14 days\\\",\n \\\"selection\\\": {\n \\\"tagStatus\\\": \\\"untagged\\\",\n \\\"countType\\\": \\\"sinceImagePushed\\\",\n \\\"countUnit\\\": \\\"days\\\",\n \\\"countNumber\\\": 14\n },\n \\\"action\\\": {\n \\\"type\\\": \\\"expire\\\"\n }\n }\n ]\n}\n\"\"\",\n resource_tags={\n \"Foo\": \"Bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Sid = \"new policy\",\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"AWS\",\n Identifiers = new[]\n {\n \"123456789012\",\n },\n },\n },\n Actions = new[]\n {\n \"ecr:GetDownloadUrlForLayer\",\n \"ecr:BatchGetImage\",\n \"ecr:BatchCheckLayerAvailability\",\n \"ecr:PutImage\",\n \"ecr:InitiateLayerUpload\",\n \"ecr:UploadLayerPart\",\n \"ecr:CompleteLayerUpload\",\n \"ecr:DescribeRepositories\",\n \"ecr:GetRepositoryPolicy\",\n \"ecr:ListImages\",\n \"ecr:DeleteRepository\",\n \"ecr:BatchDeleteImage\",\n \"ecr:SetRepositoryPolicy\",\n \"ecr:DeleteRepositoryPolicy\",\n },\n },\n },\n });\n\n var exampleRepositoryCreationTemplate = new Aws.Ecr.RepositoryCreationTemplate(\"example\", new()\n {\n Prefix = \"example\",\n Description = \"An example template\",\n ImageTagMutability = \"IMMUTABLE\",\n CustomRoleArn = \"arn:aws:iam::123456789012:role/example\",\n AppliedFors = new[]\n {\n \"PULL_THROUGH_CACHE\",\n },\n EncryptionConfigurations = new[]\n {\n new Aws.Ecr.Inputs.RepositoryCreationTemplateEncryptionConfigurationArgs\n {\n EncryptionType = \"AES256\",\n },\n },\n RepositoryPolicy = example.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n LifecyclePolicy = @\"{\n \\\"\"rules\\\"\": [\n {\n \\\"\"rulePriority\\\"\": 1,\n \\\"\"description\\\"\": \\\"\"Expire images older than 14 days\\\"\",\n \\\"\"selection\\\"\": {\n \\\"\"tagStatus\\\"\": \\\"\"untagged\\\"\",\n \\\"\"countType\\\"\": \\\"\"sinceImagePushed\\\"\",\n \\\"\"countUnit\\\"\": \\\"\"days\\\"\",\n \\\"\"countNumber\\\"\": 14\n },\n \\\"\"action\\\"\": {\n \\\"\"type\\\"\": \\\"\"expire\\\"\"\n }\n }\n ]\n}\n\",\n ResourceTags = \n {\n { \"Foo\", \"Bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ecr\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tSid: pulumi.StringRef(\"new policy\"),\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"AWS\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"123456789012\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"ecr:GetDownloadUrlForLayer\",\n\t\t\t\t\t\t\"ecr:BatchGetImage\",\n\t\t\t\t\t\t\"ecr:BatchCheckLayerAvailability\",\n\t\t\t\t\t\t\"ecr:PutImage\",\n\t\t\t\t\t\t\"ecr:InitiateLayerUpload\",\n\t\t\t\t\t\t\"ecr:UploadLayerPart\",\n\t\t\t\t\t\t\"ecr:CompleteLayerUpload\",\n\t\t\t\t\t\t\"ecr:DescribeRepositories\",\n\t\t\t\t\t\t\"ecr:GetRepositoryPolicy\",\n\t\t\t\t\t\t\"ecr:ListImages\",\n\t\t\t\t\t\t\"ecr:DeleteRepository\",\n\t\t\t\t\t\t\"ecr:BatchDeleteImage\",\n\t\t\t\t\t\t\"ecr:SetRepositoryPolicy\",\n\t\t\t\t\t\t\"ecr:DeleteRepositoryPolicy\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ecr.NewRepositoryCreationTemplate(ctx, \"example\", \u0026ecr.RepositoryCreationTemplateArgs{\n\t\t\tPrefix: pulumi.String(\"example\"),\n\t\t\tDescription: pulumi.String(\"An example template\"),\n\t\t\tImageTagMutability: pulumi.String(\"IMMUTABLE\"),\n\t\t\tCustomRoleArn: pulumi.String(\"arn:aws:iam::123456789012:role/example\"),\n\t\t\tAppliedFors: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"PULL_THROUGH_CACHE\"),\n\t\t\t},\n\t\t\tEncryptionConfigurations: ecr.RepositoryCreationTemplateEncryptionConfigurationArray{\n\t\t\t\t\u0026ecr.RepositoryCreationTemplateEncryptionConfigurationArgs{\n\t\t\t\t\tEncryptionType: pulumi.String(\"AES256\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRepositoryPolicy: pulumi.String(example.Json),\n\t\t\tLifecyclePolicy: pulumi.String(`{\n \\\"rules\\\": [\n {\n \\\"rulePriority\\\": 1,\n \\\"description\\\": \\\"Expire images older than 14 days\\\",\n \\\"selection\\\": {\n \\\"tagStatus\\\": \\\"untagged\\\",\n \\\"countType\\\": \\\"sinceImagePushed\\\",\n \\\"countUnit\\\": \\\"days\\\",\n \\\"countNumber\\\": 14\n },\n \\\"action\\\": {\n \\\"type\\\": \\\"expire\\\"\n }\n }\n ]\n}\n`),\n\t\t\tResourceTags: pulumi.StringMap{\n\t\t\t\t\"Foo\": pulumi.String(\"Bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.ecr.RepositoryCreationTemplate;\nimport com.pulumi.aws.ecr.RepositoryCreationTemplateArgs;\nimport com.pulumi.aws.ecr.inputs.RepositoryCreationTemplateEncryptionConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .sid(\"new policy\")\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"AWS\")\n .identifiers(\"123456789012\")\n .build())\n .actions( \n \"ecr:GetDownloadUrlForLayer\",\n \"ecr:BatchGetImage\",\n \"ecr:BatchCheckLayerAvailability\",\n \"ecr:PutImage\",\n \"ecr:InitiateLayerUpload\",\n \"ecr:UploadLayerPart\",\n \"ecr:CompleteLayerUpload\",\n \"ecr:DescribeRepositories\",\n \"ecr:GetRepositoryPolicy\",\n \"ecr:ListImages\",\n \"ecr:DeleteRepository\",\n \"ecr:BatchDeleteImage\",\n \"ecr:SetRepositoryPolicy\",\n \"ecr:DeleteRepositoryPolicy\")\n .build())\n .build());\n\n var exampleRepositoryCreationTemplate = new RepositoryCreationTemplate(\"exampleRepositoryCreationTemplate\", RepositoryCreationTemplateArgs.builder()\n .prefix(\"example\")\n .description(\"An example template\")\n .imageTagMutability(\"IMMUTABLE\")\n .customRoleArn(\"arn:aws:iam::123456789012:role/example\")\n .appliedFors(\"PULL_THROUGH_CACHE\")\n .encryptionConfigurations(RepositoryCreationTemplateEncryptionConfigurationArgs.builder()\n .encryptionType(\"AES256\")\n .build())\n .repositoryPolicy(example.json())\n .lifecyclePolicy(\"\"\"\n{\n \\\"rules\\\": [\n {\n \\\"rulePriority\\\": 1,\n \\\"description\\\": \\\"Expire images older than 14 days\\\",\n \\\"selection\\\": {\n \\\"tagStatus\\\": \\\"untagged\\\",\n \\\"countType\\\": \\\"sinceImagePushed\\\",\n \\\"countUnit\\\": \\\"days\\\",\n \\\"countNumber\\\": 14\n },\n \\\"action\\\": {\n \\\"type\\\": \\\"expire\\\"\n }\n }\n ]\n}\n \"\"\")\n .resourceTags(Map.of(\"Foo\", \"Bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleRepositoryCreationTemplate:\n type: aws:ecr:RepositoryCreationTemplate\n name: example\n properties:\n prefix: example\n description: An example template\n imageTagMutability: IMMUTABLE\n customRoleArn: arn:aws:iam::123456789012:role/example\n appliedFors:\n - PULL_THROUGH_CACHE\n encryptionConfigurations:\n - encryptionType: AES256\n repositoryPolicy: ${example.json}\n lifecyclePolicy: |\n {\n \\\"rules\\\": [\n {\n \\\"rulePriority\\\": 1,\n \\\"description\\\": \\\"Expire images older than 14 days\\\",\n \\\"selection\\\": {\n \\\"tagStatus\\\": \\\"untagged\\\",\n \\\"countType\\\": \\\"sinceImagePushed\\\",\n \\\"countUnit\\\": \\\"days\\\",\n \\\"countNumber\\\": 14\n },\n \\\"action\\\": {\n \\\"type\\\": \\\"expire\\\"\n }\n }\n ]\n }\n resourceTags:\n Foo: Bar\nvariables:\n example:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - sid: new policy\n effect: Allow\n principals:\n - type: AWS\n identifiers:\n - '123456789012'\n actions:\n - ecr:GetDownloadUrlForLayer\n - ecr:BatchGetImage\n - ecr:BatchCheckLayerAvailability\n - ecr:PutImage\n - ecr:InitiateLayerUpload\n - ecr:UploadLayerPart\n - ecr:CompleteLayerUpload\n - ecr:DescribeRepositories\n - ecr:GetRepositoryPolicy\n - ecr:ListImages\n - ecr:DeleteRepository\n - ecr:BatchDeleteImage\n - ecr:SetRepositoryPolicy\n - ecr:DeleteRepositoryPolicy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import the ECR Repository Creating Templates using the `prefix`. For example:\n\n```sh\n$ pulumi import aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate example example\n```\n", "properties": { "appliedFors": { "type": "array", @@ -293806,7 +293806,7 @@ } }, "aws:elasticsearch/domain:Domain": { - "description": "Manages an AWS Elasticsearch Domain.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticsearch.Domain(\"example\", {\n domainName: \"example\",\n elasticsearchVersion: \"7.10\",\n clusterConfig: {\n instanceType: \"r4.large.elasticsearch\",\n },\n tags: {\n Domain: \"TestDomain\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticsearch.Domain(\"example\",\n domain_name=\"example\",\n elasticsearch_version=\"7.10\",\n cluster_config={\n \"instance_type\": \"r4.large.elasticsearch\",\n },\n tags={\n \"Domain\": \"TestDomain\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElasticSearch.Domain(\"example\", new()\n {\n DomainName = \"example\",\n ElasticsearchVersion = \"7.10\",\n ClusterConfig = new Aws.ElasticSearch.Inputs.DomainClusterConfigArgs\n {\n InstanceType = \"r4.large.elasticsearch\",\n },\n Tags = \n {\n { \"Domain\", \"TestDomain\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticsearch.NewDomain(ctx, \"example\", \u0026elasticsearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"example\"),\n\t\t\tElasticsearchVersion: pulumi.String(\"7.10\"),\n\t\t\tClusterConfig: \u0026elasticsearch.DomainClusterConfigArgs{\n\t\t\t\tInstanceType: pulumi.String(\"r4.large.elasticsearch\"),\n\t\t\t},\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Domain\": pulumi.String(\"TestDomain\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainClusterConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Domain(\"example\", DomainArgs.builder()\n .domainName(\"example\")\n .elasticsearchVersion(\"7.10\")\n .clusterConfig(DomainClusterConfigArgs.builder()\n .instanceType(\"r4.large.elasticsearch\")\n .build())\n .tags(Map.of(\"Domain\", \"TestDomain\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticsearch:Domain\n properties:\n domainName: example\n elasticsearchVersion: '7.10'\n clusterConfig:\n instanceType: r4.large.elasticsearch\n tags:\n Domain: TestDomain\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Access Policy\n\n\u003e See also: \u003cspan pulumi-lang-nodejs=\"`aws.elasticsearch.DomainPolicy`\" pulumi-lang-dotnet=\"`aws.elasticsearch.DomainPolicy`\" pulumi-lang-go=\"`elasticsearch.DomainPolicy`\" pulumi-lang-python=\"`elasticsearch.DomainPolicy`\" pulumi-lang-yaml=\"`aws.elasticsearch.DomainPolicy`\" pulumi-lang-java=\"`aws.elasticsearch.DomainPolicy`\"\u003e`aws.elasticsearch.DomainPolicy`\u003c/span\u003e resource\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst config = new pulumi.Config();\nconst domain = config.get(\"domain\") || \"tf-test\";\nconst current = aws.getRegion({});\nconst currentGetCallerIdentity = aws.getCallerIdentity({});\nconst example = new aws.elasticsearch.Domain(\"example\", {\n domainName: domain,\n accessPolicies: Promise.all([current, currentGetCallerIdentity]).then(([current, currentGetCallerIdentity]) =\u003e `{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Action\": \"es:*\",\n \"Principal\": \"*\",\n \"Effect\": \"Allow\",\n \"Resource\": \"arn:aws:es:${current.region}:${currentGetCallerIdentity.accountId}:domain/${domain}/*\",\n \"Condition\": {\n \"IpAddress\": {\"aws:SourceIp\": [\"66.193.100.22/32\"]}\n }\n }\n ]\n}\n`),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nconfig = pulumi.Config()\ndomain = config.get(\"domain\")\nif domain is None:\n domain = \"tf-test\"\ncurrent = aws.get_region()\ncurrent_get_caller_identity = aws.get_caller_identity()\nexample = aws.elasticsearch.Domain(\"example\",\n domain_name=domain,\n access_policies=f\"\"\"{{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {{\n \"Action\": \"es:*\",\n \"Principal\": \"*\",\n \"Effect\": \"Allow\",\n \"Resource\": \"arn:aws:es:{current.region}:{current_get_caller_identity.account_id}:domain/{domain}/*\",\n \"Condition\": {{\n \"IpAddress\": {{\"aws:SourceIp\": [\"66.193.100.22/32\"]}}\n }}\n }}\n ]\n}}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var domain = config.Get(\"domain\") ?? \"tf-test\";\n var current = Aws.GetRegion.Invoke();\n\n var currentGetCallerIdentity = Aws.GetCallerIdentity.Invoke();\n\n var example = new Aws.ElasticSearch.Domain(\"example\", new()\n {\n DomainName = domain,\n AccessPolicies = Output.Tuple(current, currentGetCallerIdentity).Apply(values =\u003e\n {\n var current = values.Item1;\n var currentGetCallerIdentity = values.Item2;\n return @$\"{{\n \"\"Version\"\": \"\"2012-10-17\"\",\n \"\"Statement\"\": [\n {{\n \"\"Action\"\": \"\"es:*\"\",\n \"\"Principal\"\": \"\"*\"\",\n \"\"Effect\"\": \"\"Allow\"\",\n \"\"Resource\"\": \"\"arn:aws:es:{current.Apply(getRegionResult =\u003e getRegionResult.Region)}:{currentGetCallerIdentity.Apply(getCallerIdentityResult =\u003e getCallerIdentityResult.AccountId)}:domain/{domain}/*\"\",\n \"\"Condition\"\": {{\n \"\"IpAddress\"\": {{\"\"aws:SourceIp\"\": [\"\"66.193.100.22/32\"\"]}}\n }}\n }}\n ]\n}}\n\";\n }),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tdomain := \"tf-test\"\n\t\tif param := cfg.Get(\"domain\"); param != \"\" {\n\t\t\tdomain = param\n\t\t}\n\t\tcurrent, err := aws.GetRegion(ctx, \u0026aws.GetRegionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcurrentGetCallerIdentity, err := aws.GetCallerIdentity(ctx, \u0026aws.GetCallerIdentityArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticsearch.NewDomain(ctx, \"example\", \u0026elasticsearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(domain),\n\t\t\tAccessPolicies: pulumi.Any(fmt.Sprintf(`{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Action\": \"es:*\",\n \"Principal\": \"*\",\n \"Effect\": \"Allow\",\n \"Resource\": \"arn:aws:es:%v:%v:domain/%v/*\",\n \"Condition\": {\n \"IpAddress\": {\"aws:SourceIp\": [\"66.193.100.22/32\"]}\n }\n }\n ]\n}\n`, current.Region, currentGetCallerIdentity.AccountId, domain)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.AwsFunctions;\nimport com.pulumi.aws.inputs.GetRegionArgs;\nimport com.pulumi.aws.inputs.GetCallerIdentityArgs;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var domain = config.get(\"domain\").orElse(\"tf-test\");\n final var current = AwsFunctions.getRegion(GetRegionArgs.builder()\n .build());\n\n final var currentGetCallerIdentity = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()\n .build());\n\n var example = new Domain(\"example\", DomainArgs.builder()\n .domainName(domain)\n .accessPolicies(\"\"\"\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Action\": \"es:*\",\n \"Principal\": \"*\",\n \"Effect\": \"Allow\",\n \"Resource\": \"arn:aws:es:%s:%s:domain/%s/*\",\n \"Condition\": {\n \"IpAddress\": {\"aws:SourceIp\": [\"66.193.100.22/32\"]}\n }\n }\n ]\n}\n\", current.region(),currentGetCallerIdentity.accountId(),domain))\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n domain:\n type: string\n default: tf-test\nresources:\n example:\n type: aws:elasticsearch:Domain\n properties:\n domainName: ${domain}\n accessPolicies: |\n {\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Action\": \"es:*\",\n \"Principal\": \"*\",\n \"Effect\": \"Allow\",\n \"Resource\": \"arn:aws:es:${current.region}:${currentGetCallerIdentity.accountId}:domain/${domain}/*\",\n \"Condition\": {\n \"IpAddress\": {\"aws:SourceIp\": [\"66.193.100.22/32\"]}\n }\n }\n ]\n }\nvariables:\n current:\n fn::invoke:\n function: aws:getRegion\n arguments: {}\n currentGetCallerIdentity:\n fn::invoke:\n function: aws:getCallerIdentity\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Log Publishing to CloudWatch Logs\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleLogGroup = new aws.cloudwatch.LogGroup(\"example\", {name: \"example\"});\nconst example = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"es.amazonaws.com\"],\n }],\n actions: [\n \"logs:PutLogEvents\",\n \"logs:PutLogEventsBatch\",\n \"logs:CreateLogStream\",\n ],\n resources: [\"arn:aws:logs:*\"],\n }],\n});\nconst exampleLogResourcePolicy = new aws.cloudwatch.LogResourcePolicy(\"example\", {\n policyName: \"example\",\n policyDocument: example.then(example =\u003e example.json),\n});\nconst exampleDomain = new aws.elasticsearch.Domain(\"example\", {logPublishingOptions: [{\n cloudwatchLogGroupArn: exampleLogGroup.arn,\n logType: \"INDEX_SLOW_LOGS\",\n}]});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_log_group = aws.cloudwatch.LogGroup(\"example\", name=\"example\")\nexample = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"es.amazonaws.com\"],\n }],\n \"actions\": [\n \"logs:PutLogEvents\",\n \"logs:PutLogEventsBatch\",\n \"logs:CreateLogStream\",\n ],\n \"resources\": [\"arn:aws:logs:*\"],\n}])\nexample_log_resource_policy = aws.cloudwatch.LogResourcePolicy(\"example\",\n policy_name=\"example\",\n policy_document=example.json)\nexample_domain = aws.elasticsearch.Domain(\"example\", log_publishing_options=[{\n \"cloudwatch_log_group_arn\": example_log_group.arn,\n \"log_type\": \"INDEX_SLOW_LOGS\",\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleLogGroup = new Aws.CloudWatch.LogGroup(\"example\", new()\n {\n Name = \"example\",\n });\n\n var example = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"es.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"logs:PutLogEvents\",\n \"logs:PutLogEventsBatch\",\n \"logs:CreateLogStream\",\n },\n Resources = new[]\n {\n \"arn:aws:logs:*\",\n },\n },\n },\n });\n\n var exampleLogResourcePolicy = new Aws.CloudWatch.LogResourcePolicy(\"example\", new()\n {\n PolicyName = \"example\",\n PolicyDocument = example.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var exampleDomain = new Aws.ElasticSearch.Domain(\"example\", new()\n {\n LogPublishingOptions = new[]\n {\n new Aws.ElasticSearch.Inputs.DomainLogPublishingOptionArgs\n {\n CloudwatchLogGroupArn = exampleLogGroup.Arn,\n LogType = \"INDEX_SLOW_LOGS\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleLogGroup, err := cloudwatch.NewLogGroup(ctx, \"example\", \u0026cloudwatch.LogGroupArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"es.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"logs:PutLogEvents\",\n\t\t\t\t\t\t\"logs:PutLogEventsBatch\",\n\t\t\t\t\t\t\"logs:CreateLogStream\",\n\t\t\t\t\t},\n\t\t\t\t\tResources: []string{\n\t\t\t\t\t\t\"arn:aws:logs:*\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewLogResourcePolicy(ctx, \"example\", \u0026cloudwatch.LogResourcePolicyArgs{\n\t\t\tPolicyName: pulumi.String(\"example\"),\n\t\t\tPolicyDocument: pulumi.String(example.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticsearch.NewDomain(ctx, \"example\", \u0026elasticsearch.DomainArgs{\n\t\t\tLogPublishingOptions: elasticsearch.DomainLogPublishingOptionArray{\n\t\t\t\t\u0026elasticsearch.DomainLogPublishingOptionArgs{\n\t\t\t\t\tCloudwatchLogGroupArn: exampleLogGroup.Arn,\n\t\t\t\t\tLogType: pulumi.String(\"INDEX_SLOW_LOGS\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.LogGroup;\nimport com.pulumi.aws.cloudwatch.LogGroupArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.cloudwatch.LogResourcePolicy;\nimport com.pulumi.aws.cloudwatch.LogResourcePolicyArgs;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainLogPublishingOptionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleLogGroup = new LogGroup(\"exampleLogGroup\", LogGroupArgs.builder()\n .name(\"example\")\n .build());\n\n final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"es.amazonaws.com\")\n .build())\n .actions( \n \"logs:PutLogEvents\",\n \"logs:PutLogEventsBatch\",\n \"logs:CreateLogStream\")\n .resources(\"arn:aws:logs:*\")\n .build())\n .build());\n\n var exampleLogResourcePolicy = new LogResourcePolicy(\"exampleLogResourcePolicy\", LogResourcePolicyArgs.builder()\n .policyName(\"example\")\n .policyDocument(example.json())\n .build());\n\n var exampleDomain = new Domain(\"exampleDomain\", DomainArgs.builder()\n .logPublishingOptions(DomainLogPublishingOptionArgs.builder()\n .cloudwatchLogGroupArn(exampleLogGroup.arn())\n .logType(\"INDEX_SLOW_LOGS\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleLogGroup:\n type: aws:cloudwatch:LogGroup\n name: example\n properties:\n name: example\n exampleLogResourcePolicy:\n type: aws:cloudwatch:LogResourcePolicy\n name: example\n properties:\n policyName: example\n policyDocument: ${example.json}\n exampleDomain:\n type: aws:elasticsearch:Domain\n name: example\n properties:\n logPublishingOptions:\n - cloudwatchLogGroupArn: ${exampleLogGroup.arn}\n logType: INDEX_SLOW_LOGS\nvariables:\n example:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - es.amazonaws.com\n actions:\n - logs:PutLogEvents\n - logs:PutLogEventsBatch\n - logs:CreateLogStream\n resources:\n - arn:aws:logs:*\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### VPC based ES\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst config = new pulumi.Config();\nconst vpc = config.requireObject\u003cany\u003e(\"vpc\");\nconst domain = config.get(\"domain\") || \"tf-test\";\nconst selected = aws.ec2.getVpc({\n tags: {\n Name: vpc,\n },\n});\nconst selectedGetSubnets = selected.then(selected =\u003e aws.ec2.getSubnets({\n filters: [{\n name: \"vpc-id\",\n values: [selected.id],\n }],\n tags: {\n Tier: \"private\",\n },\n}));\nconst current = aws.getRegion({});\nconst currentGetCallerIdentity = aws.getCallerIdentity({});\nconst es = new aws.ec2.SecurityGroup(\"es\", {\n name: `${vpc}-elasticsearch-${domain}`,\n description: \"Managed by Pulumi\",\n vpcId: selected.then(selected =\u003e selected.id),\n ingress: [{\n fromPort: 443,\n toPort: 443,\n protocol: \"tcp\",\n cidrBlocks: [selected.then(selected =\u003e selected.cidrBlock)],\n }],\n});\nconst esServiceLinkedRole = new aws.iam.ServiceLinkedRole(\"es\", {awsServiceName: \"opensearchservice.amazonaws.com\"});\nconst esDomain = new aws.elasticsearch.Domain(\"es\", {\n domainName: domain,\n elasticsearchVersion: \"6.3\",\n clusterConfig: {\n instanceType: \"m4.large.elasticsearch\",\n zoneAwarenessEnabled: true,\n },\n vpcOptions: {\n subnetIds: [\n selectedGetSubnets.then(selectedGetSubnets =\u003e selectedGetSubnets.ids?.[0]),\n selectedGetSubnets.then(selectedGetSubnets =\u003e selectedGetSubnets.ids?.[1]),\n ],\n securityGroupIds: [es.id],\n },\n advancedOptions: {\n \"rest.action.multi.allow_explicit_index\": \"true\",\n },\n accessPolicies: Promise.all([current, currentGetCallerIdentity]).then(([current, currentGetCallerIdentity]) =\u003e `{\n\t\"Version\": \"2012-10-17\",\n\t\"Statement\": [\n\t\t{\n\t\t\t\"Action\": \"es:*\",\n\t\t\t\"Principal\": \"*\",\n\t\t\t\"Effect\": \"Allow\",\n\t\t\t\"Resource\": \"arn:aws:es:${current.region}:${currentGetCallerIdentity.accountId}:domain/${domain}/*\"\n\t\t}\n\t]\n}\n`),\n tags: {\n Domain: \"TestDomain\",\n },\n}, {\n dependsOn: [esServiceLinkedRole],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nconfig = pulumi.Config()\nvpc = config.require_object(\"vpc\")\ndomain = config.get(\"domain\")\nif domain is None:\n domain = \"tf-test\"\nselected = aws.ec2.get_vpc(tags={\n \"Name\": vpc,\n})\nselected_get_subnets = aws.ec2.get_subnets(filters=[{\n \"name\": \"vpc-id\",\n \"values\": [selected.id],\n }],\n tags={\n \"Tier\": \"private\",\n })\ncurrent = aws.get_region()\ncurrent_get_caller_identity = aws.get_caller_identity()\nes = aws.ec2.SecurityGroup(\"es\",\n name=f\"{vpc}-elasticsearch-{domain}\",\n description=\"Managed by Pulumi\",\n vpc_id=selected.id,\n ingress=[{\n \"from_port\": 443,\n \"to_port\": 443,\n \"protocol\": \"tcp\",\n \"cidr_blocks\": [selected.cidr_block],\n }])\nes_service_linked_role = aws.iam.ServiceLinkedRole(\"es\", aws_service_name=\"opensearchservice.amazonaws.com\")\nes_domain = aws.elasticsearch.Domain(\"es\",\n domain_name=domain,\n elasticsearch_version=\"6.3\",\n cluster_config={\n \"instance_type\": \"m4.large.elasticsearch\",\n \"zone_awareness_enabled\": True,\n },\n vpc_options={\n \"subnet_ids\": [\n selected_get_subnets.ids[0],\n selected_get_subnets.ids[1],\n ],\n \"security_group_ids\": [es.id],\n },\n advanced_options={\n \"rest.action.multi.allow_explicit_index\": \"true\",\n },\n access_policies=f\"\"\"{{\n\\x09\"Version\": \"2012-10-17\",\n\\x09\"Statement\": [\n\\x09\\x09{{\n\\x09\\x09\\x09\"Action\": \"es:*\",\n\\x09\\x09\\x09\"Principal\": \"*\",\n\\x09\\x09\\x09\"Effect\": \"Allow\",\n\\x09\\x09\\x09\"Resource\": \"arn:aws:es:{current.region}:{current_get_caller_identity.account_id}:domain/{domain}/*\"\n\\x09\\x09}}\n\\x09]\n}}\n\"\"\",\n tags={\n \"Domain\": \"TestDomain\",\n },\n opts = pulumi.ResourceOptions(depends_on=[es_service_linked_role]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var vpc = config.RequireObject\u003cdynamic\u003e(\"vpc\");\n var domain = config.Get(\"domain\") ?? \"tf-test\";\n var selected = Aws.Ec2.GetVpc.Invoke(new()\n {\n Tags = \n {\n { \"Name\", vpc },\n },\n });\n\n var selectedGetSubnets = Aws.Ec2.GetSubnets.Invoke(new()\n {\n Filters = new[]\n {\n new Aws.Ec2.Inputs.GetSubnetsFilterInputArgs\n {\n Name = \"vpc-id\",\n Values = new[]\n {\n selected.Apply(getVpcResult =\u003e getVpcResult.Id),\n },\n },\n },\n Tags = \n {\n { \"Tier\", \"private\" },\n },\n });\n\n var current = Aws.GetRegion.Invoke();\n\n var currentGetCallerIdentity = Aws.GetCallerIdentity.Invoke();\n\n var es = new Aws.Ec2.SecurityGroup(\"es\", new()\n {\n Name = $\"{vpc}-elasticsearch-{domain}\",\n Description = \"Managed by Pulumi\",\n VpcId = selected.Apply(getVpcResult =\u003e getVpcResult.Id),\n Ingress = new[]\n {\n new Aws.Ec2.Inputs.SecurityGroupIngressArgs\n {\n FromPort = 443,\n ToPort = 443,\n Protocol = \"tcp\",\n CidrBlocks = new[]\n {\n selected.Apply(getVpcResult =\u003e getVpcResult.CidrBlock),\n },\n },\n },\n });\n\n var esServiceLinkedRole = new Aws.Iam.ServiceLinkedRole(\"es\", new()\n {\n AwsServiceName = \"opensearchservice.amazonaws.com\",\n });\n\n var esDomain = new Aws.ElasticSearch.Domain(\"es\", new()\n {\n DomainName = domain,\n ElasticsearchVersion = \"6.3\",\n ClusterConfig = new Aws.ElasticSearch.Inputs.DomainClusterConfigArgs\n {\n InstanceType = \"m4.large.elasticsearch\",\n ZoneAwarenessEnabled = true,\n },\n VpcOptions = new Aws.ElasticSearch.Inputs.DomainVpcOptionsArgs\n {\n SubnetIds = new[]\n {\n selectedGetSubnets.Apply(getSubnetsResult =\u003e getSubnetsResult.Ids[0]),\n selectedGetSubnets.Apply(getSubnetsResult =\u003e getSubnetsResult.Ids[1]),\n },\n SecurityGroupIds = new[]\n {\n es.Id,\n },\n },\n AdvancedOptions = \n {\n { \"rest.action.multi.allow_explicit_index\", \"true\" },\n },\n AccessPolicies = Output.Tuple(current, currentGetCallerIdentity).Apply(values =\u003e\n {\n var current = values.Item1;\n var currentGetCallerIdentity = values.Item2;\n return @$\"{{\n\t\"\"Version\"\": \"\"2012-10-17\"\",\n\t\"\"Statement\"\": [\n\t\t{{\n\t\t\t\"\"Action\"\": \"\"es:*\"\",\n\t\t\t\"\"Principal\"\": \"\"*\"\",\n\t\t\t\"\"Effect\"\": \"\"Allow\"\",\n\t\t\t\"\"Resource\"\": \"\"arn:aws:es:{current.Apply(getRegionResult =\u003e getRegionResult.Region)}:{currentGetCallerIdentity.Apply(getCallerIdentityResult =\u003e getCallerIdentityResult.AccountId)}:domain/{domain}/*\"\"\n\t\t}}\n\t]\n}}\n\";\n }),\n Tags = \n {\n { \"Domain\", \"TestDomain\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n esServiceLinkedRole,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\ncfg := config.New(ctx, \"\")\nvpc := cfg.RequireObject(\"vpc\")\ndomain := \"tf-test\";\nif param := cfg.Get(\"domain\"); param != \"\"{\ndomain = param\n}\nselected, err := ec2.LookupVpc(ctx, \u0026ec2.LookupVpcArgs{\nTags: pulumi.StringMap{\n\"Name\": vpc,\n},\n}, nil);\nif err != nil {\nreturn err\n}\nselectedGetSubnets, err := ec2.GetSubnets(ctx, \u0026ec2.GetSubnetsArgs{\nFilters: []ec2.GetSubnetsFilter{\n{\nName: \"vpc-id\",\nValues: interface{}{\nselected.Id,\n},\n},\n},\nTags: map[string]interface{}{\n\"Tier\": \"private\",\n},\n}, nil);\nif err != nil {\nreturn err\n}\ncurrent, err := aws.GetRegion(ctx, \u0026aws.GetRegionArgs{\n}, nil);\nif err != nil {\nreturn err\n}\ncurrentGetCallerIdentity, err := aws.GetCallerIdentity(ctx, \u0026aws.GetCallerIdentityArgs{\n}, nil);\nif err != nil {\nreturn err\n}\nes, err := ec2.NewSecurityGroup(ctx, \"es\", \u0026ec2.SecurityGroupArgs{\nName: pulumi.Sprintf(\"%v-elasticsearch-%v\", vpc, domain),\nDescription: pulumi.String(\"Managed by Pulumi\"),\nVpcId: pulumi.String(selected.Id),\nIngress: ec2.SecurityGroupIngressArray{\n\u0026ec2.SecurityGroupIngressArgs{\nFromPort: pulumi.Int(443),\nToPort: pulumi.Int(443),\nProtocol: pulumi.String(\"tcp\"),\nCidrBlocks: pulumi.StringArray{\npulumi.String(selected.CidrBlock),\n},\n},\n},\n})\nif err != nil {\nreturn err\n}\nesServiceLinkedRole, err := iam.NewServiceLinkedRole(ctx, \"es\", \u0026iam.ServiceLinkedRoleArgs{\nAwsServiceName: pulumi.String(\"opensearchservice.amazonaws.com\"),\n})\nif err != nil {\nreturn err\n}\n_, err = elasticsearch.NewDomain(ctx, \"es\", \u0026elasticsearch.DomainArgs{\nDomainName: pulumi.String(domain),\nElasticsearchVersion: pulumi.String(\"6.3\"),\nClusterConfig: \u0026elasticsearch.DomainClusterConfigArgs{\nInstanceType: pulumi.String(\"m4.large.elasticsearch\"),\nZoneAwarenessEnabled: pulumi.Bool(true),\n},\nVpcOptions: \u0026elasticsearch.DomainVpcOptionsArgs{\nSubnetIds: pulumi.StringArray{\npulumi.String(selectedGetSubnets.Ids[0]),\npulumi.String(selectedGetSubnets.Ids[1]),\n},\nSecurityGroupIds: pulumi.StringArray{\nes.ID(),\n},\n},\nAdvancedOptions: pulumi.StringMap{\n\"rest.action.multi.allow_explicit_index\": pulumi.String(\"true\"),\n},\nAccessPolicies: pulumi.Any(fmt.Sprintf(`{\n\t\"Version\": \"2012-10-17\",\n\t\"Statement\": [\n\t\t{\n\t\t\t\"Action\": \"es:*\",\n\t\t\t\"Principal\": \"*\",\n\t\t\t\"Effect\": \"Allow\",\n\t\t\t\"Resource\": \"arn:aws:es:%v:%v:domain/%v/*\"\n\t\t}\n\t]\n}\n`, current.Region, currentGetCallerIdentity.AccountId, domain)),\nTags: pulumi.StringMap{\n\"Domain\": pulumi.String(\"TestDomain\"),\n},\n}, pulumi.DependsOn([]pulumi.Resource{\nesServiceLinkedRole,\n}))\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.Ec2Functions;\nimport com.pulumi.aws.ec2.inputs.GetVpcArgs;\nimport com.pulumi.aws.ec2.inputs.GetSubnetsArgs;\nimport com.pulumi.aws.AwsFunctions;\nimport com.pulumi.aws.inputs.GetRegionArgs;\nimport com.pulumi.aws.inputs.GetCallerIdentityArgs;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport com.pulumi.aws.ec2.inputs.SecurityGroupIngressArgs;\nimport com.pulumi.aws.iam.ServiceLinkedRole;\nimport com.pulumi.aws.iam.ServiceLinkedRoleArgs;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainClusterConfigArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainVpcOptionsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var vpc = config.get(\"vpc\");\n final var domain = config.get(\"domain\").orElse(\"tf-test\");\n final var selected = Ec2Functions.getVpc(GetVpcArgs.builder()\n .tags(Map.of(\"Name\", vpc))\n .build());\n\n final var selectedGetSubnets = Ec2Functions.getSubnets(GetSubnetsArgs.builder()\n .filters(GetSubnetsFilterArgs.builder()\n .name(\"vpc-id\")\n .values(selected.id())\n .build())\n .tags(Map.of(\"Tier\", \"private\"))\n .build());\n\n final var current = AwsFunctions.getRegion(GetRegionArgs.builder()\n .build());\n\n final var currentGetCallerIdentity = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()\n .build());\n\n var es = new SecurityGroup(\"es\", SecurityGroupArgs.builder()\n .name(String.format(\"%s-elasticsearch-%s\", vpc,domain))\n .description(\"Managed by Pulumi\")\n .vpcId(selected.id())\n .ingress(SecurityGroupIngressArgs.builder()\n .fromPort(443)\n .toPort(443)\n .protocol(\"tcp\")\n .cidrBlocks(selected.cidrBlock())\n .build())\n .build());\n\n var esServiceLinkedRole = new ServiceLinkedRole(\"esServiceLinkedRole\", ServiceLinkedRoleArgs.builder()\n .awsServiceName(\"opensearchservice.amazonaws.com\")\n .build());\n\n var esDomain = new Domain(\"esDomain\", DomainArgs.builder()\n .domainName(domain)\n .elasticsearchVersion(\"6.3\")\n .clusterConfig(DomainClusterConfigArgs.builder()\n .instanceType(\"m4.large.elasticsearch\")\n .zoneAwarenessEnabled(true)\n .build())\n .vpcOptions(DomainVpcOptionsArgs.builder()\n .subnetIds( \n selectedGetSubnets.ids()[0],\n selectedGetSubnets.ids()[1])\n .securityGroupIds(es.id())\n .build())\n .advancedOptions(Map.of(\"rest.action.multi.allow_explicit_index\", \"true\"))\n .accessPolicies(\"\"\"\n{\n\t\"Version\": \"2012-10-17\",\n\t\"Statement\": [\n\t\t{\n\t\t\t\"Action\": \"es:*\",\n\t\t\t\"Principal\": \"*\",\n\t\t\t\"Effect\": \"Allow\",\n\t\t\t\"Resource\": \"arn:aws:es:%s:%s:domain/%s/*\"\n\t\t}\n\t]\n}\n\", current.region(),currentGetCallerIdentity.accountId(),domain))\n .tags(Map.of(\"Domain\", \"TestDomain\"))\n .build(), CustomResourceOptions.builder()\n .dependsOn(esServiceLinkedRole)\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n vpc:\n type: dynamic\n domain:\n type: string\n default: tf-test\nresources:\n es:\n type: aws:ec2:SecurityGroup\n properties:\n name: ${vpc}-elasticsearch-${domain}\n description: Managed by Pulumi\n vpcId: ${selected.id}\n ingress:\n - fromPort: 443\n toPort: 443\n protocol: tcp\n cidrBlocks:\n - ${selected.cidrBlock}\n esServiceLinkedRole:\n type: aws:iam:ServiceLinkedRole\n name: es\n properties:\n awsServiceName: opensearchservice.amazonaws.com\n esDomain:\n type: aws:elasticsearch:Domain\n name: es\n properties:\n domainName: ${domain}\n elasticsearchVersion: '6.3'\n clusterConfig:\n instanceType: m4.large.elasticsearch\n zoneAwarenessEnabled: true\n vpcOptions:\n subnetIds:\n - ${selectedGetSubnets.ids[0]}\n - ${selectedGetSubnets.ids[1]}\n securityGroupIds:\n - ${es.id}\n advancedOptions:\n rest.action.multi.allow_explicit_index: 'true'\n accessPolicies: |\n {\n \t\"Version\": \"2012-10-17\",\n \t\"Statement\": [\n \t\t{\n \t\t\t\"Action\": \"es:*\",\n \t\t\t\"Principal\": \"*\",\n \t\t\t\"Effect\": \"Allow\",\n \t\t\t\"Resource\": \"arn:aws:es:${current.region}:${currentGetCallerIdentity.accountId}:domain/${domain}/*\"\n \t\t}\n \t]\n }\n tags:\n Domain: TestDomain\n options:\n dependsOn:\n - ${esServiceLinkedRole}\nvariables:\n selected:\n fn::invoke:\n function: aws:ec2:getVpc\n arguments:\n tags:\n Name: ${vpc}\n selectedGetSubnets:\n fn::invoke:\n function: aws:ec2:getSubnets\n arguments:\n filters:\n - name: vpc-id\n values:\n - ${selected.id}\n tags:\n Tier: private\n current:\n fn::invoke:\n function: aws:getRegion\n arguments: {}\n currentGetCallerIdentity:\n fn::invoke:\n function: aws:getCallerIdentity\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Elasticsearch domains using the `domain_name`. For example:\n\n```sh\n$ pulumi import aws:elasticsearch/domain:Domain example domain_name\n```\n", + "description": "Manages an AWS Elasticsearch Domain.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticsearch.Domain(\"example\", {\n domainName: \"example\",\n elasticsearchVersion: \"7.10\",\n clusterConfig: {\n instanceType: \"r4.large.elasticsearch\",\n },\n tags: {\n Domain: \"TestDomain\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticsearch.Domain(\"example\",\n domain_name=\"example\",\n elasticsearch_version=\"7.10\",\n cluster_config={\n \"instance_type\": \"r4.large.elasticsearch\",\n },\n tags={\n \"Domain\": \"TestDomain\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElasticSearch.Domain(\"example\", new()\n {\n DomainName = \"example\",\n ElasticsearchVersion = \"7.10\",\n ClusterConfig = new Aws.ElasticSearch.Inputs.DomainClusterConfigArgs\n {\n InstanceType = \"r4.large.elasticsearch\",\n },\n Tags = \n {\n { \"Domain\", \"TestDomain\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticsearch.NewDomain(ctx, \"example\", \u0026elasticsearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"example\"),\n\t\t\tElasticsearchVersion: pulumi.String(\"7.10\"),\n\t\t\tClusterConfig: \u0026elasticsearch.DomainClusterConfigArgs{\n\t\t\t\tInstanceType: pulumi.String(\"r4.large.elasticsearch\"),\n\t\t\t},\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Domain\": pulumi.String(\"TestDomain\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainClusterConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Domain(\"example\", DomainArgs.builder()\n .domainName(\"example\")\n .elasticsearchVersion(\"7.10\")\n .clusterConfig(DomainClusterConfigArgs.builder()\n .instanceType(\"r4.large.elasticsearch\")\n .build())\n .tags(Map.of(\"Domain\", \"TestDomain\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticsearch:Domain\n properties:\n domainName: example\n elasticsearchVersion: '7.10'\n clusterConfig:\n instanceType: r4.large.elasticsearch\n tags:\n Domain: TestDomain\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Access Policy\n\n\u003e See also: \u003cspan pulumi-lang-nodejs=\"`aws.elasticsearch.DomainPolicy`\" pulumi-lang-dotnet=\"`aws.elasticsearch.DomainPolicy`\" pulumi-lang-go=\"`elasticsearch.DomainPolicy`\" pulumi-lang-python=\"`elasticsearch.DomainPolicy`\" pulumi-lang-yaml=\"`aws.elasticsearch.DomainPolicy`\" pulumi-lang-java=\"`aws.elasticsearch.DomainPolicy`\"\u003e`aws.elasticsearch.DomainPolicy`\u003c/span\u003e resource\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst config = new pulumi.Config();\nconst domain = config.get(\"domain\") || \"tf-test\";\nconst current = aws.getRegion({});\nconst currentGetCallerIdentity = aws.getCallerIdentity({});\nconst example = new aws.elasticsearch.Domain(\"example\", {\n domainName: domain,\n accessPolicies: Promise.all([current, currentGetCallerIdentity]).then(([current, currentGetCallerIdentity]) =\u003e `{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {\n \\\"Action\\\": \\\"es:*\\\",\n \\\"Principal\\\": \\\"*\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Resource\\\": \\\"arn:aws:es:${current.region}:${currentGetCallerIdentity.accountId}:domain/${domain}/*\\\",\n \\\"Condition\\\": {\n \\\"IpAddress\\\": {\\\"aws:SourceIp\\\": [\\\"66.193.100.22/32\\\"]}\n }\n }\n ]\n}\n`),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nconfig = pulumi.Config()\ndomain = config.get(\"domain\")\nif domain is None:\n domain = \"tf-test\"\ncurrent = aws.get_region()\ncurrent_get_caller_identity = aws.get_caller_identity()\nexample = aws.elasticsearch.Domain(\"example\",\n domain_name=domain,\n access_policies=f\"\"\"{{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {{\n \\\"Action\\\": \\\"es:*\\\",\n \\\"Principal\\\": \\\"*\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Resource\\\": \\\"arn:aws:es:{current.region}:{current_get_caller_identity.account_id}:domain/{domain}/*\\\",\n \\\"Condition\\\": {{\n \\\"IpAddress\\\": {{\\\"aws:SourceIp\\\": [\\\"66.193.100.22/32\\\"]}}\n }}\n }}\n ]\n}}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var domain = config.Get(\"domain\") ?? \"tf-test\";\n var current = Aws.GetRegion.Invoke();\n\n var currentGetCallerIdentity = Aws.GetCallerIdentity.Invoke();\n\n var example = new Aws.ElasticSearch.Domain(\"example\", new()\n {\n DomainName = domain,\n AccessPolicies = Output.Tuple(current, currentGetCallerIdentity).Apply(values =\u003e\n {\n var current = values.Item1;\n var currentGetCallerIdentity = values.Item2;\n return @$\"{{\n \\\"\"Version\\\"\": \\\"\"2012-10-17\\\"\",\n \\\"\"Statement\\\"\": [\n {{\n \\\"\"Action\\\"\": \\\"\"es:*\\\"\",\n \\\"\"Principal\\\"\": \\\"\"*\\\"\",\n \\\"\"Effect\\\"\": \\\"\"Allow\\\"\",\n \\\"\"Resource\\\"\": \\\"\"arn:aws:es:{current.Apply(getRegionResult =\u003e getRegionResult.Region)}:{currentGetCallerIdentity.Apply(getCallerIdentityResult =\u003e getCallerIdentityResult.AccountId)}:domain/{domain}/*\\\"\",\n \\\"\"Condition\\\"\": {{\n \\\"\"IpAddress\\\"\": {{\\\"\"aws:SourceIp\\\"\": [\\\"\"66.193.100.22/32\\\"\"]}}\n }}\n }}\n ]\n}}\n\";\n }),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tdomain := \"tf-test\"\n\t\tif param := cfg.Get(\"domain\"); param != \"\" {\n\t\t\tdomain = param\n\t\t}\n\t\tcurrent, err := aws.GetRegion(ctx, \u0026aws.GetRegionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcurrentGetCallerIdentity, err := aws.GetCallerIdentity(ctx, \u0026aws.GetCallerIdentityArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticsearch.NewDomain(ctx, \"example\", \u0026elasticsearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(domain),\n\t\t\tAccessPolicies: pulumi.Any(fmt.Sprintf(`{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {\n \\\"Action\\\": \\\"es:*\\\",\n \\\"Principal\\\": \\\"*\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Resource\\\": \\\"arn:aws:es:%v:%v:domain/%v/*\\\",\n \\\"Condition\\\": {\n \\\"IpAddress\\\": {\\\"aws:SourceIp\\\": [\\\"66.193.100.22/32\\\"]}\n }\n }\n ]\n}\n`, current.Region, currentGetCallerIdentity.AccountId, domain)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.AwsFunctions;\nimport com.pulumi.aws.inputs.GetRegionArgs;\nimport com.pulumi.aws.inputs.GetCallerIdentityArgs;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var domain = config.get(\"domain\").orElse(\"tf-test\");\n final var current = AwsFunctions.getRegion(GetRegionArgs.builder()\n .build());\n\n final var currentGetCallerIdentity = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()\n .build());\n\n var example = new Domain(\"example\", DomainArgs.builder()\n .domainName(domain)\n .accessPolicies(\"\"\"\n{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {\n \\\"Action\\\": \\\"es:*\\\",\n \\\"Principal\\\": \\\"*\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Resource\\\": \\\"arn:aws:es:%s:%s:domain/%s/*\\\",\n \\\"Condition\\\": {\n \\\"IpAddress\\\": {\\\"aws:SourceIp\\\": [\\\"66.193.100.22/32\\\"]}\n }\n }\n ]\n}\n\", current.region(),currentGetCallerIdentity.accountId(),domain))\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n domain:\n type: string\n default: tf-test\nresources:\n example:\n type: aws:elasticsearch:Domain\n properties:\n domainName: ${domain}\n accessPolicies: |\n {\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {\n \\\"Action\\\": \\\"es:*\\\",\n \\\"Principal\\\": \\\"*\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Resource\\\": \\\"arn:aws:es:${current.region}:${currentGetCallerIdentity.accountId}:domain/${domain}/*\\\",\n \\\"Condition\\\": {\n \\\"IpAddress\\\": {\\\"aws:SourceIp\\\": [\\\"66.193.100.22/32\\\"]}\n }\n }\n ]\n }\nvariables:\n current:\n fn::invoke:\n function: aws:getRegion\n arguments: {}\n currentGetCallerIdentity:\n fn::invoke:\n function: aws:getCallerIdentity\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Log Publishing to CloudWatch Logs\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleLogGroup = new aws.cloudwatch.LogGroup(\"example\", {name: \"example\"});\nconst example = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"es.amazonaws.com\"],\n }],\n actions: [\n \"logs:PutLogEvents\",\n \"logs:PutLogEventsBatch\",\n \"logs:CreateLogStream\",\n ],\n resources: [\"arn:aws:logs:*\"],\n }],\n});\nconst exampleLogResourcePolicy = new aws.cloudwatch.LogResourcePolicy(\"example\", {\n policyName: \"example\",\n policyDocument: example.then(example =\u003e example.json),\n});\nconst exampleDomain = new aws.elasticsearch.Domain(\"example\", {logPublishingOptions: [{\n cloudwatchLogGroupArn: exampleLogGroup.arn,\n logType: \"INDEX_SLOW_LOGS\",\n}]});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_log_group = aws.cloudwatch.LogGroup(\"example\", name=\"example\")\nexample = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"es.amazonaws.com\"],\n }],\n \"actions\": [\n \"logs:PutLogEvents\",\n \"logs:PutLogEventsBatch\",\n \"logs:CreateLogStream\",\n ],\n \"resources\": [\"arn:aws:logs:*\"],\n}])\nexample_log_resource_policy = aws.cloudwatch.LogResourcePolicy(\"example\",\n policy_name=\"example\",\n policy_document=example.json)\nexample_domain = aws.elasticsearch.Domain(\"example\", log_publishing_options=[{\n \"cloudwatch_log_group_arn\": example_log_group.arn,\n \"log_type\": \"INDEX_SLOW_LOGS\",\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleLogGroup = new Aws.CloudWatch.LogGroup(\"example\", new()\n {\n Name = \"example\",\n });\n\n var example = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"es.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"logs:PutLogEvents\",\n \"logs:PutLogEventsBatch\",\n \"logs:CreateLogStream\",\n },\n Resources = new[]\n {\n \"arn:aws:logs:*\",\n },\n },\n },\n });\n\n var exampleLogResourcePolicy = new Aws.CloudWatch.LogResourcePolicy(\"example\", new()\n {\n PolicyName = \"example\",\n PolicyDocument = example.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var exampleDomain = new Aws.ElasticSearch.Domain(\"example\", new()\n {\n LogPublishingOptions = new[]\n {\n new Aws.ElasticSearch.Inputs.DomainLogPublishingOptionArgs\n {\n CloudwatchLogGroupArn = exampleLogGroup.Arn,\n LogType = \"INDEX_SLOW_LOGS\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleLogGroup, err := cloudwatch.NewLogGroup(ctx, \"example\", \u0026cloudwatch.LogGroupArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"es.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"logs:PutLogEvents\",\n\t\t\t\t\t\t\"logs:PutLogEventsBatch\",\n\t\t\t\t\t\t\"logs:CreateLogStream\",\n\t\t\t\t\t},\n\t\t\t\t\tResources: []string{\n\t\t\t\t\t\t\"arn:aws:logs:*\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewLogResourcePolicy(ctx, \"example\", \u0026cloudwatch.LogResourcePolicyArgs{\n\t\t\tPolicyName: pulumi.String(\"example\"),\n\t\t\tPolicyDocument: pulumi.String(example.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticsearch.NewDomain(ctx, \"example\", \u0026elasticsearch.DomainArgs{\n\t\t\tLogPublishingOptions: elasticsearch.DomainLogPublishingOptionArray{\n\t\t\t\t\u0026elasticsearch.DomainLogPublishingOptionArgs{\n\t\t\t\t\tCloudwatchLogGroupArn: exampleLogGroup.Arn,\n\t\t\t\t\tLogType: pulumi.String(\"INDEX_SLOW_LOGS\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.cloudwatch.LogGroup;\nimport com.pulumi.aws.cloudwatch.LogGroupArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.cloudwatch.LogResourcePolicy;\nimport com.pulumi.aws.cloudwatch.LogResourcePolicyArgs;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainLogPublishingOptionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleLogGroup = new LogGroup(\"exampleLogGroup\", LogGroupArgs.builder()\n .name(\"example\")\n .build());\n\n final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"es.amazonaws.com\")\n .build())\n .actions( \n \"logs:PutLogEvents\",\n \"logs:PutLogEventsBatch\",\n \"logs:CreateLogStream\")\n .resources(\"arn:aws:logs:*\")\n .build())\n .build());\n\n var exampleLogResourcePolicy = new LogResourcePolicy(\"exampleLogResourcePolicy\", LogResourcePolicyArgs.builder()\n .policyName(\"example\")\n .policyDocument(example.json())\n .build());\n\n var exampleDomain = new Domain(\"exampleDomain\", DomainArgs.builder()\n .logPublishingOptions(DomainLogPublishingOptionArgs.builder()\n .cloudwatchLogGroupArn(exampleLogGroup.arn())\n .logType(\"INDEX_SLOW_LOGS\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleLogGroup:\n type: aws:cloudwatch:LogGroup\n name: example\n properties:\n name: example\n exampleLogResourcePolicy:\n type: aws:cloudwatch:LogResourcePolicy\n name: example\n properties:\n policyName: example\n policyDocument: ${example.json}\n exampleDomain:\n type: aws:elasticsearch:Domain\n name: example\n properties:\n logPublishingOptions:\n - cloudwatchLogGroupArn: ${exampleLogGroup.arn}\n logType: INDEX_SLOW_LOGS\nvariables:\n example:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - es.amazonaws.com\n actions:\n - logs:PutLogEvents\n - logs:PutLogEventsBatch\n - logs:CreateLogStream\n resources:\n - arn:aws:logs:*\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### VPC based ES\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst config = new pulumi.Config();\nconst vpc = config.requireObject\u003cany\u003e(\"vpc\");\nconst domain = config.get(\"domain\") || \"tf-test\";\nconst selected = aws.ec2.getVpc({\n tags: {\n Name: vpc,\n },\n});\nconst selectedGetSubnets = selected.then(selected =\u003e aws.ec2.getSubnets({\n filters: [{\n name: \"vpc-id\",\n values: [selected.id],\n }],\n tags: {\n Tier: \"private\",\n },\n}));\nconst current = aws.getRegion({});\nconst currentGetCallerIdentity = aws.getCallerIdentity({});\nconst es = new aws.ec2.SecurityGroup(\"es\", {\n name: `${vpc}-elasticsearch-${domain}`,\n description: \"Managed by Pulumi\",\n vpcId: selected.then(selected =\u003e selected.id),\n ingress: [{\n fromPort: 443,\n toPort: 443,\n protocol: \"tcp\",\n cidrBlocks: [selected.then(selected =\u003e selected.cidrBlock)],\n }],\n});\nconst esServiceLinkedRole = new aws.iam.ServiceLinkedRole(\"es\", {awsServiceName: \"opensearchservice.amazonaws.com\"});\nconst esDomain = new aws.elasticsearch.Domain(\"es\", {\n domainName: domain,\n elasticsearchVersion: \"6.3\",\n clusterConfig: {\n instanceType: \"m4.large.elasticsearch\",\n zoneAwarenessEnabled: true,\n },\n vpcOptions: {\n subnetIds: [\n selectedGetSubnets.then(selectedGetSubnets =\u003e selectedGetSubnets.ids?.[0]),\n selectedGetSubnets.then(selectedGetSubnets =\u003e selectedGetSubnets.ids?.[1]),\n ],\n securityGroupIds: [es.id],\n },\n advancedOptions: {\n \"rest.action.multi.allow_explicit_index\": \"true\",\n },\n accessPolicies: Promise.all([current, currentGetCallerIdentity]).then(([current, currentGetCallerIdentity]) =\u003e `{\n\\t\\\"Version\\\": \\\"2012-10-17\\\",\n\\t\\\"Statement\\\": [\n\\t\\t{\n\\t\\t\\t\\\"Action\\\": \\\"es:*\\\",\n\\t\\t\\t\\\"Principal\\\": \\\"*\\\",\n\\t\\t\\t\\\"Effect\\\": \\\"Allow\\\",\n\\t\\t\\t\\\"Resource\\\": \\\"arn:aws:es:${current.region}:${currentGetCallerIdentity.accountId}:domain/${domain}/*\\\"\n\\t\\t}\n\\t]\n}\n`),\n tags: {\n Domain: \"TestDomain\",\n },\n}, {\n dependsOn: [esServiceLinkedRole],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nconfig = pulumi.Config()\nvpc = config.require_object(\"vpc\")\ndomain = config.get(\"domain\")\nif domain is None:\n domain = \"tf-test\"\nselected = aws.ec2.get_vpc(tags={\n \"Name\": vpc,\n})\nselected_get_subnets = aws.ec2.get_subnets(filters=[{\n \"name\": \"vpc-id\",\n \"values\": [selected.id],\n }],\n tags={\n \"Tier\": \"private\",\n })\ncurrent = aws.get_region()\ncurrent_get_caller_identity = aws.get_caller_identity()\nes = aws.ec2.SecurityGroup(\"es\",\n name=f\"{vpc}-elasticsearch-{domain}\",\n description=\"Managed by Pulumi\",\n vpc_id=selected.id,\n ingress=[{\n \"from_port\": 443,\n \"to_port\": 443,\n \"protocol\": \"tcp\",\n \"cidr_blocks\": [selected.cidr_block],\n }])\nes_service_linked_role = aws.iam.ServiceLinkedRole(\"es\", aws_service_name=\"opensearchservice.amazonaws.com\")\nes_domain = aws.elasticsearch.Domain(\"es\",\n domain_name=domain,\n elasticsearch_version=\"6.3\",\n cluster_config={\n \"instance_type\": \"m4.large.elasticsearch\",\n \"zone_awareness_enabled\": True,\n },\n vpc_options={\n \"subnet_ids\": [\n selected_get_subnets.ids[0],\n selected_get_subnets.ids[1],\n ],\n \"security_group_ids\": [es.id],\n },\n advanced_options={\n \"rest.action.multi.allow_explicit_index\": \"true\",\n },\n access_policies=f\"\"\"{{\n\\t\\\"Version\\\": \\\"2012-10-17\\\",\n\\t\\\"Statement\\\": [\n\\t\\t{{\n\\t\\t\\t\\\"Action\\\": \\\"es:*\\\",\n\\t\\t\\t\\\"Principal\\\": \\\"*\\\",\n\\t\\t\\t\\\"Effect\\\": \\\"Allow\\\",\n\\t\\t\\t\\\"Resource\\\": \\\"arn:aws:es:{current.region}:{current_get_caller_identity.account_id}:domain/{domain}/*\\\"\n\\t\\t}}\n\\t]\n}}\n\"\"\",\n tags={\n \"Domain\": \"TestDomain\",\n },\n opts = pulumi.ResourceOptions(depends_on=[es_service_linked_role]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var vpc = config.RequireObject\u003cdynamic\u003e(\"vpc\");\n var domain = config.Get(\"domain\") ?? \"tf-test\";\n var selected = Aws.Ec2.GetVpc.Invoke(new()\n {\n Tags = \n {\n { \"Name\", vpc },\n },\n });\n\n var selectedGetSubnets = Aws.Ec2.GetSubnets.Invoke(new()\n {\n Filters = new[]\n {\n new Aws.Ec2.Inputs.GetSubnetsFilterInputArgs\n {\n Name = \"vpc-id\",\n Values = new[]\n {\n selected.Apply(getVpcResult =\u003e getVpcResult.Id),\n },\n },\n },\n Tags = \n {\n { \"Tier\", \"private\" },\n },\n });\n\n var current = Aws.GetRegion.Invoke();\n\n var currentGetCallerIdentity = Aws.GetCallerIdentity.Invoke();\n\n var es = new Aws.Ec2.SecurityGroup(\"es\", new()\n {\n Name = $\"{vpc}-elasticsearch-{domain}\",\n Description = \"Managed by Pulumi\",\n VpcId = selected.Apply(getVpcResult =\u003e getVpcResult.Id),\n Ingress = new[]\n {\n new Aws.Ec2.Inputs.SecurityGroupIngressArgs\n {\n FromPort = 443,\n ToPort = 443,\n Protocol = \"tcp\",\n CidrBlocks = new[]\n {\n selected.Apply(getVpcResult =\u003e getVpcResult.CidrBlock),\n },\n },\n },\n });\n\n var esServiceLinkedRole = new Aws.Iam.ServiceLinkedRole(\"es\", new()\n {\n AwsServiceName = \"opensearchservice.amazonaws.com\",\n });\n\n var esDomain = new Aws.ElasticSearch.Domain(\"es\", new()\n {\n DomainName = domain,\n ElasticsearchVersion = \"6.3\",\n ClusterConfig = new Aws.ElasticSearch.Inputs.DomainClusterConfigArgs\n {\n InstanceType = \"m4.large.elasticsearch\",\n ZoneAwarenessEnabled = true,\n },\n VpcOptions = new Aws.ElasticSearch.Inputs.DomainVpcOptionsArgs\n {\n SubnetIds = new[]\n {\n selectedGetSubnets.Apply(getSubnetsResult =\u003e getSubnetsResult.Ids[0]),\n selectedGetSubnets.Apply(getSubnetsResult =\u003e getSubnetsResult.Ids[1]),\n },\n SecurityGroupIds = new[]\n {\n es.Id,\n },\n },\n AdvancedOptions = \n {\n { \"rest.action.multi.allow_explicit_index\", \"true\" },\n },\n AccessPolicies = Output.Tuple(current, currentGetCallerIdentity).Apply(values =\u003e\n {\n var current = values.Item1;\n var currentGetCallerIdentity = values.Item2;\n return @$\"{{\n\\t\\\"\"Version\\\"\": \\\"\"2012-10-17\\\"\",\n\\t\\\"\"Statement\\\"\": [\n\\t\\t{{\n\\t\\t\\t\\\"\"Action\\\"\": \\\"\"es:*\\\"\",\n\\t\\t\\t\\\"\"Principal\\\"\": \\\"\"*\\\"\",\n\\t\\t\\t\\\"\"Effect\\\"\": \\\"\"Allow\\\"\",\n\\t\\t\\t\\\"\"Resource\\\"\": \\\"\"arn:aws:es:{current.Apply(getRegionResult =\u003e getRegionResult.Region)}:{currentGetCallerIdentity.Apply(getCallerIdentityResult =\u003e getCallerIdentityResult.AccountId)}:domain/{domain}/*\\\"\"\n\\t\\t}}\n\\t]\n}}\n\";\n }),\n Tags = \n {\n { \"Domain\", \"TestDomain\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n esServiceLinkedRole,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\ncfg := config.New(ctx, \"\")\nvpc := cfg.RequireObject(\"vpc\")\ndomain := \"tf-test\";\nif param := cfg.Get(\"domain\"); param != \"\"{\ndomain = param\n}\nselected, err := ec2.LookupVpc(ctx, \u0026ec2.LookupVpcArgs{\nTags: pulumi.StringMap{\n\"Name\": vpc,\n},\n}, nil);\nif err != nil {\nreturn err\n}\nselectedGetSubnets, err := ec2.GetSubnets(ctx, \u0026ec2.GetSubnetsArgs{\nFilters: []ec2.GetSubnetsFilter{\n{\nName: \"vpc-id\",\nValues: interface{}{\nselected.Id,\n},\n},\n},\nTags: map[string]interface{}{\n\"Tier\": \"private\",\n},\n}, nil);\nif err != nil {\nreturn err\n}\ncurrent, err := aws.GetRegion(ctx, \u0026aws.GetRegionArgs{\n}, nil);\nif err != nil {\nreturn err\n}\ncurrentGetCallerIdentity, err := aws.GetCallerIdentity(ctx, \u0026aws.GetCallerIdentityArgs{\n}, nil);\nif err != nil {\nreturn err\n}\nes, err := ec2.NewSecurityGroup(ctx, \"es\", \u0026ec2.SecurityGroupArgs{\nName: pulumi.Sprintf(\"%v-elasticsearch-%v\", vpc, domain),\nDescription: pulumi.String(\"Managed by Pulumi\"),\nVpcId: pulumi.String(selected.Id),\nIngress: ec2.SecurityGroupIngressArray{\n\u0026ec2.SecurityGroupIngressArgs{\nFromPort: pulumi.Int(443),\nToPort: pulumi.Int(443),\nProtocol: pulumi.String(\"tcp\"),\nCidrBlocks: pulumi.StringArray{\npulumi.String(selected.CidrBlock),\n},\n},\n},\n})\nif err != nil {\nreturn err\n}\nesServiceLinkedRole, err := iam.NewServiceLinkedRole(ctx, \"es\", \u0026iam.ServiceLinkedRoleArgs{\nAwsServiceName: pulumi.String(\"opensearchservice.amazonaws.com\"),\n})\nif err != nil {\nreturn err\n}\n_, err = elasticsearch.NewDomain(ctx, \"es\", \u0026elasticsearch.DomainArgs{\nDomainName: pulumi.String(domain),\nElasticsearchVersion: pulumi.String(\"6.3\"),\nClusterConfig: \u0026elasticsearch.DomainClusterConfigArgs{\nInstanceType: pulumi.String(\"m4.large.elasticsearch\"),\nZoneAwarenessEnabled: pulumi.Bool(true),\n},\nVpcOptions: \u0026elasticsearch.DomainVpcOptionsArgs{\nSubnetIds: pulumi.StringArray{\npulumi.String(selectedGetSubnets.Ids[0]),\npulumi.String(selectedGetSubnets.Ids[1]),\n},\nSecurityGroupIds: pulumi.StringArray{\nes.ID(),\n},\n},\nAdvancedOptions: pulumi.StringMap{\n\"rest.action.multi.allow_explicit_index\": pulumi.String(\"true\"),\n},\nAccessPolicies: pulumi.Any(fmt.Sprintf(`{\n\\t\\\"Version\\\": \\\"2012-10-17\\\",\n\\t\\\"Statement\\\": [\n\\t\\t{\n\\t\\t\\t\\\"Action\\\": \\\"es:*\\\",\n\\t\\t\\t\\\"Principal\\\": \\\"*\\\",\n\\t\\t\\t\\\"Effect\\\": \\\"Allow\\\",\n\\t\\t\\t\\\"Resource\\\": \\\"arn:aws:es:%v:%v:domain/%v/*\\\"\n\\t\\t}\n\\t]\n}\n`, current.Region, currentGetCallerIdentity.AccountId, domain)),\nTags: pulumi.StringMap{\n\"Domain\": pulumi.String(\"TestDomain\"),\n},\n}, pulumi.DependsOn([]pulumi.Resource{\nesServiceLinkedRole,\n}))\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.Ec2Functions;\nimport com.pulumi.aws.ec2.inputs.GetVpcArgs;\nimport com.pulumi.aws.ec2.inputs.GetSubnetsArgs;\nimport com.pulumi.aws.AwsFunctions;\nimport com.pulumi.aws.inputs.GetRegionArgs;\nimport com.pulumi.aws.inputs.GetCallerIdentityArgs;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport com.pulumi.aws.ec2.inputs.SecurityGroupIngressArgs;\nimport com.pulumi.aws.iam.ServiceLinkedRole;\nimport com.pulumi.aws.iam.ServiceLinkedRoleArgs;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainClusterConfigArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainVpcOptionsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var vpc = config.get(\"vpc\");\n final var domain = config.get(\"domain\").orElse(\"tf-test\");\n final var selected = Ec2Functions.getVpc(GetVpcArgs.builder()\n .tags(Map.of(\"Name\", vpc))\n .build());\n\n final var selectedGetSubnets = Ec2Functions.getSubnets(GetSubnetsArgs.builder()\n .filters(GetSubnetsFilterArgs.builder()\n .name(\"vpc-id\")\n .values(selected.id())\n .build())\n .tags(Map.of(\"Tier\", \"private\"))\n .build());\n\n final var current = AwsFunctions.getRegion(GetRegionArgs.builder()\n .build());\n\n final var currentGetCallerIdentity = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()\n .build());\n\n var es = new SecurityGroup(\"es\", SecurityGroupArgs.builder()\n .name(String.format(\"%s-elasticsearch-%s\", vpc,domain))\n .description(\"Managed by Pulumi\")\n .vpcId(selected.id())\n .ingress(SecurityGroupIngressArgs.builder()\n .fromPort(443)\n .toPort(443)\n .protocol(\"tcp\")\n .cidrBlocks(selected.cidrBlock())\n .build())\n .build());\n\n var esServiceLinkedRole = new ServiceLinkedRole(\"esServiceLinkedRole\", ServiceLinkedRoleArgs.builder()\n .awsServiceName(\"opensearchservice.amazonaws.com\")\n .build());\n\n var esDomain = new Domain(\"esDomain\", DomainArgs.builder()\n .domainName(domain)\n .elasticsearchVersion(\"6.3\")\n .clusterConfig(DomainClusterConfigArgs.builder()\n .instanceType(\"m4.large.elasticsearch\")\n .zoneAwarenessEnabled(true)\n .build())\n .vpcOptions(DomainVpcOptionsArgs.builder()\n .subnetIds( \n selectedGetSubnets.ids()[0],\n selectedGetSubnets.ids()[1])\n .securityGroupIds(es.id())\n .build())\n .advancedOptions(Map.of(\"rest.action.multi.allow_explicit_index\", \"true\"))\n .accessPolicies(\"\"\"\n{\n\\t\\\"Version\\\": \\\"2012-10-17\\\",\n\\t\\\"Statement\\\": [\n\\t\\t{\n\\t\\t\\t\\\"Action\\\": \\\"es:*\\\",\n\\t\\t\\t\\\"Principal\\\": \\\"*\\\",\n\\t\\t\\t\\\"Effect\\\": \\\"Allow\\\",\n\\t\\t\\t\\\"Resource\\\": \\\"arn:aws:es:%s:%s:domain/%s/*\\\"\n\\t\\t}\n\\t]\n}\n\", current.region(),currentGetCallerIdentity.accountId(),domain))\n .tags(Map.of(\"Domain\", \"TestDomain\"))\n .build(), CustomResourceOptions.builder()\n .dependsOn(esServiceLinkedRole)\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n vpc:\n type: dynamic\n domain:\n type: string\n default: tf-test\nresources:\n es:\n type: aws:ec2:SecurityGroup\n properties:\n name: ${vpc}-elasticsearch-${domain}\n description: Managed by Pulumi\n vpcId: ${selected.id}\n ingress:\n - fromPort: 443\n toPort: 443\n protocol: tcp\n cidrBlocks:\n - ${selected.cidrBlock}\n esServiceLinkedRole:\n type: aws:iam:ServiceLinkedRole\n name: es\n properties:\n awsServiceName: opensearchservice.amazonaws.com\n esDomain:\n type: aws:elasticsearch:Domain\n name: es\n properties:\n domainName: ${domain}\n elasticsearchVersion: '6.3'\n clusterConfig:\n instanceType: m4.large.elasticsearch\n zoneAwarenessEnabled: true\n vpcOptions:\n subnetIds:\n - ${selectedGetSubnets.ids[0]}\n - ${selectedGetSubnets.ids[1]}\n securityGroupIds:\n - ${es.id}\n advancedOptions:\n rest.action.multi.allow_explicit_index: 'true'\n accessPolicies: |\n {\n \\t\\\"Version\\\": \\\"2012-10-17\\\",\n \\t\\\"Statement\\\": [\n \\t\\t{\n \\t\\t\\t\\\"Action\\\": \\\"es:*\\\",\n \\t\\t\\t\\\"Principal\\\": \\\"*\\\",\n \\t\\t\\t\\\"Effect\\\": \\\"Allow\\\",\n \\t\\t\\t\\\"Resource\\\": \\\"arn:aws:es:${current.region}:${currentGetCallerIdentity.accountId}:domain/${domain}/*\\\"\n \\t\\t}\n \\t]\n }\n tags:\n Domain: TestDomain\n options:\n dependsOn:\n - ${esServiceLinkedRole}\nvariables:\n selected:\n fn::invoke:\n function: aws:ec2:getVpc\n arguments:\n tags:\n Name: ${vpc}\n selectedGetSubnets:\n fn::invoke:\n function: aws:ec2:getSubnets\n arguments:\n filters:\n - name: vpc-id\n values:\n - ${selected.id}\n tags:\n Tier: private\n current:\n fn::invoke:\n function: aws:getRegion\n arguments: {}\n currentGetCallerIdentity:\n fn::invoke:\n function: aws:getCallerIdentity\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Elasticsearch domains using the `domain_name`. For example:\n\n```sh\n$ pulumi import aws:elasticsearch/domain:Domain example domain_name\n```\n", "properties": { "accessPolicies": { "type": "string", @@ -294136,7 +294136,7 @@ } }, "aws:elasticsearch/domainPolicy:DomainPolicy": { - "description": "Allows setting policy to an Elasticsearch domain while referencing domain attributes (e.g., ARN)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticsearch.Domain(\"example\", {\n domainName: \"tf-test\",\n elasticsearchVersion: \"2.3\",\n});\nconst main = new aws.elasticsearch.DomainPolicy(\"main\", {\n domainName: example.domainName,\n accessPolicies: pulumi.interpolate`{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Action\": \"es:*\",\n \"Principal\": \"*\",\n \"Effect\": \"Allow\",\n \"Condition\": {\n \"IpAddress\": {\"aws:SourceIp\": \"127.0.0.1/32\"}\n },\n \"Resource\": \"${example.arn}/*\"\n }\n ]\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticsearch.Domain(\"example\",\n domain_name=\"tf-test\",\n elasticsearch_version=\"2.3\")\nmain = aws.elasticsearch.DomainPolicy(\"main\",\n domain_name=example.domain_name,\n access_policies=example.arn.apply(lambda arn: f\"\"\"{{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {{\n \"Action\": \"es:*\",\n \"Principal\": \"*\",\n \"Effect\": \"Allow\",\n \"Condition\": {{\n \"IpAddress\": {{\"aws:SourceIp\": \"127.0.0.1/32\"}}\n }},\n \"Resource\": \"{arn}/*\"\n }}\n ]\n}}\n\"\"\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElasticSearch.Domain(\"example\", new()\n {\n DomainName = \"tf-test\",\n ElasticsearchVersion = \"2.3\",\n });\n\n var main = new Aws.ElasticSearch.DomainPolicy(\"main\", new()\n {\n DomainName = example.DomainName,\n AccessPolicies = example.Arn.Apply(arn =\u003e @$\"{{\n \"\"Version\"\": \"\"2012-10-17\"\",\n \"\"Statement\"\": [\n {{\n \"\"Action\"\": \"\"es:*\"\",\n \"\"Principal\"\": \"\"*\"\",\n \"\"Effect\"\": \"\"Allow\"\",\n \"\"Condition\"\": {{\n \"\"IpAddress\"\": {{\"\"aws:SourceIp\"\": \"\"127.0.0.1/32\"\"}}\n }},\n \"\"Resource\"\": \"\"{arn}/*\"\"\n }}\n ]\n}}\n\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := elasticsearch.NewDomain(ctx, \"example\", \u0026elasticsearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"tf-test\"),\n\t\t\tElasticsearchVersion: pulumi.String(\"2.3\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticsearch.NewDomainPolicy(ctx, \"main\", \u0026elasticsearch.DomainPolicyArgs{\n\t\t\tDomainName: example.DomainName,\n\t\t\tAccessPolicies: example.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(`{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Action\": \"es:*\",\n \"Principal\": \"*\",\n \"Effect\": \"Allow\",\n \"Condition\": {\n \"IpAddress\": {\"aws:SourceIp\": \"127.0.0.1/32\"}\n },\n \"Resource\": \"%v/*\"\n }\n ]\n}\n`, arn), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport com.pulumi.aws.elasticsearch.DomainPolicy;\nimport com.pulumi.aws.elasticsearch.DomainPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Domain(\"example\", DomainArgs.builder()\n .domainName(\"tf-test\")\n .elasticsearchVersion(\"2.3\")\n .build());\n\n var main = new DomainPolicy(\"main\", DomainPolicyArgs.builder()\n .domainName(example.domainName())\n .accessPolicies(example.arn().applyValue(_arn -\u003e \"\"\"\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Action\": \"es:*\",\n \"Principal\": \"*\",\n \"Effect\": \"Allow\",\n \"Condition\": {\n \"IpAddress\": {\"aws:SourceIp\": \"127.0.0.1/32\"}\n },\n \"Resource\": \"%s/*\"\n }\n ]\n}\n\", _arn)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticsearch:Domain\n properties:\n domainName: tf-test\n elasticsearchVersion: '2.3'\n main:\n type: aws:elasticsearch:DomainPolicy\n properties:\n domainName: ${example.domainName}\n accessPolicies: |\n {\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Action\": \"es:*\",\n \"Principal\": \"*\",\n \"Effect\": \"Allow\",\n \"Condition\": {\n \"IpAddress\": {\"aws:SourceIp\": \"127.0.0.1/32\"}\n },\n \"Resource\": \"${example.arn}/*\"\n }\n ]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Allows setting policy to an Elasticsearch domain while referencing domain attributes (e.g., ARN)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticsearch.Domain(\"example\", {\n domainName: \"tf-test\",\n elasticsearchVersion: \"2.3\",\n});\nconst main = new aws.elasticsearch.DomainPolicy(\"main\", {\n domainName: example.domainName,\n accessPolicies: pulumi.interpolate`{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {\n \\\"Action\\\": \\\"es:*\\\",\n \\\"Principal\\\": \\\"*\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Condition\\\": {\n \\\"IpAddress\\\": {\\\"aws:SourceIp\\\": \\\"127.0.0.1/32\\\"}\n },\n \\\"Resource\\\": \\\"${example.arn}/*\\\"\n }\n ]\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticsearch.Domain(\"example\",\n domain_name=\"tf-test\",\n elasticsearch_version=\"2.3\")\nmain = aws.elasticsearch.DomainPolicy(\"main\",\n domain_name=example.domain_name,\n access_policies=example.arn.apply(lambda arn: f\"\"\"{{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {{\n \\\"Action\\\": \\\"es:*\\\",\n \\\"Principal\\\": \\\"*\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Condition\\\": {{\n \\\"IpAddress\\\": {{\\\"aws:SourceIp\\\": \\\"127.0.0.1/32\\\"}}\n }},\n \\\"Resource\\\": \\\"{arn}/*\\\"\n }}\n ]\n}}\n\"\"\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElasticSearch.Domain(\"example\", new()\n {\n DomainName = \"tf-test\",\n ElasticsearchVersion = \"2.3\",\n });\n\n var main = new Aws.ElasticSearch.DomainPolicy(\"main\", new()\n {\n DomainName = example.DomainName,\n AccessPolicies = example.Arn.Apply(arn =\u003e @$\"{{\n \\\"\"Version\\\"\": \\\"\"2012-10-17\\\"\",\n \\\"\"Statement\\\"\": [\n {{\n \\\"\"Action\\\"\": \\\"\"es:*\\\"\",\n \\\"\"Principal\\\"\": \\\"\"*\\\"\",\n \\\"\"Effect\\\"\": \\\"\"Allow\\\"\",\n \\\"\"Condition\\\"\": {{\n \\\"\"IpAddress\\\"\": {{\\\"\"aws:SourceIp\\\"\": \\\"\"127.0.0.1/32\\\"\"}}\n }},\n \\\"\"Resource\\\"\": \\\"\"{arn}/*\\\"\"\n }}\n ]\n}}\n\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := elasticsearch.NewDomain(ctx, \"example\", \u0026elasticsearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"tf-test\"),\n\t\t\tElasticsearchVersion: pulumi.String(\"2.3\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticsearch.NewDomainPolicy(ctx, \"main\", \u0026elasticsearch.DomainPolicyArgs{\n\t\t\tDomainName: example.DomainName,\n\t\t\tAccessPolicies: example.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(`{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {\n \\\"Action\\\": \\\"es:*\\\",\n \\\"Principal\\\": \\\"*\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Condition\\\": {\n \\\"IpAddress\\\": {\\\"aws:SourceIp\\\": \\\"127.0.0.1/32\\\"}\n },\n \\\"Resource\\\": \\\"%v/*\\\"\n }\n ]\n}\n`, arn), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport com.pulumi.aws.elasticsearch.DomainPolicy;\nimport com.pulumi.aws.elasticsearch.DomainPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Domain(\"example\", DomainArgs.builder()\n .domainName(\"tf-test\")\n .elasticsearchVersion(\"2.3\")\n .build());\n\n var main = new DomainPolicy(\"main\", DomainPolicyArgs.builder()\n .domainName(example.domainName())\n .accessPolicies(example.arn().applyValue(_arn -\u003e \"\"\"\n{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {\n \\\"Action\\\": \\\"es:*\\\",\n \\\"Principal\\\": \\\"*\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Condition\\\": {\n \\\"IpAddress\\\": {\\\"aws:SourceIp\\\": \\\"127.0.0.1/32\\\"}\n },\n \\\"Resource\\\": \\\"%s/*\\\"\n }\n ]\n}\n\", _arn)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticsearch:Domain\n properties:\n domainName: tf-test\n elasticsearchVersion: '2.3'\n main:\n type: aws:elasticsearch:DomainPolicy\n properties:\n domainName: ${example.domainName}\n accessPolicies: |\n {\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {\n \\\"Action\\\": \\\"es:*\\\",\n \\\"Principal\\\": \\\"*\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Condition\\\": {\n \\\"IpAddress\\\": {\\\"aws:SourceIp\\\": \\\"127.0.0.1/32\\\"}\n },\n \\\"Resource\\\": \\\"${example.arn}/*\\\"\n }\n ]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "properties": { "accessPolicies": { "type": "string", @@ -295838,7 +295838,7 @@ } }, "aws:emr/cluster:Cluster": { - "description": "Provides an Elastic MapReduce Cluster, a web service that makes it easy to process large amounts of data efficiently. See [Amazon Elastic MapReduce Documentation](https://aws.amazon.com/documentation/elastic-mapreduce/) for more information.\n\nTo configure [Instance Groups](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-instance-group-configuration.html#emr-plan-instance-groups) for [task nodes](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-master-core-task-nodes.html#emr-plan-task), see the \u003cspan pulumi-lang-nodejs=\"`aws.emr.InstanceGroup`\" pulumi-lang-dotnet=\"`aws.emr.InstanceGroup`\" pulumi-lang-go=\"`emr.InstanceGroup`\" pulumi-lang-python=\"`emr.InstanceGroup`\" pulumi-lang-yaml=\"`aws.emr.InstanceGroup`\" pulumi-lang-java=\"`aws.emr.InstanceGroup`\"\u003e`aws.emr.InstanceGroup`\u003c/span\u003e resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst cluster = new aws.emr.Cluster(\"cluster\", {\n name: \"emr-test-arn\",\n releaseLabel: \"emr-4.6.0\",\n applications: [\"Spark\"],\n additionalInfo: `{\n \"instanceAwsClientConfiguration\": {\n \"proxyPort\": 8099,\n \"proxyHost\": \"myproxy.example.com\"\n }\n}\n`,\n terminationProtection: false,\n keepJobFlowAliveWhenNoSteps: true,\n ec2Attributes: {\n subnetId: main.id,\n emrManagedMasterSecurityGroup: sg.id,\n emrManagedSlaveSecurityGroup: sg.id,\n instanceProfile: emrProfile.arn,\n },\n masterInstanceGroup: {\n instanceType: \"m4.large\",\n },\n coreInstanceGroup: {\n instanceType: \"c4.large\",\n instanceCount: 1,\n ebsConfigs: [{\n size: 40,\n type: \"gp2\",\n volumesPerInstance: 1,\n }],\n bidPrice: \"0.30\",\n autoscalingPolicy: `{\n\"Constraints\": {\n \"MinCapacity\": 1,\n \"MaxCapacity\": 2\n},\n\"Rules\": [\n {\n \"Name\": \"ScaleOutMemoryPercentage\",\n \"Description\": \"Scale out if YARNMemoryAvailablePercentage is less than 15\",\n \"Action\": {\n \"SimpleScalingPolicyConfiguration\": {\n \"AdjustmentType\": \"CHANGE_IN_CAPACITY\",\n \"ScalingAdjustment\": 1,\n \"CoolDown\": 300\n }\n },\n \"Trigger\": {\n \"CloudWatchAlarmDefinition\": {\n \"ComparisonOperator\": \"LESS_THAN\",\n \"EvaluationPeriods\": 1,\n \"MetricName\": \"YARNMemoryAvailablePercentage\",\n \"Namespace\": \"AWS/ElasticMapReduce\",\n \"Period\": 300,\n \"Statistic\": \"AVERAGE\",\n \"Threshold\": 15.0,\n \"Unit\": \"PERCENT\"\n }\n }\n }\n]\n}\n`,\n },\n ebsRootVolumeSize: 100,\n tags: {\n role: \"rolename\",\n env: \"env\",\n },\n bootstrapActions: [{\n path: \"s3://elasticmapreduce/bootstrap-actions/run-if\",\n name: \"runif\",\n args: [\n \"instance.isMaster=true\",\n \"echo running on master node\",\n ],\n }],\n configurationsJson: ` [\n {\n \"Classification\": \"hadoop-env\",\n \"Configurations\": [\n {\n \"Classification\": \"export\",\n \"Properties\": {\n \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n }\n }\n ],\n \"Properties\": {}\n },\n {\n \"Classification\": \"spark-env\",\n \"Configurations\": [\n {\n \"Classification\": \"export\",\n \"Properties\": {\n \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n }\n }\n ],\n \"Properties\": {}\n }\n ]\n`,\n serviceRole: iamEmrServiceRole.arn,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncluster = aws.emr.Cluster(\"cluster\",\n name=\"emr-test-arn\",\n release_label=\"emr-4.6.0\",\n applications=[\"Spark\"],\n additional_info=\"\"\"{\n \"instanceAwsClientConfiguration\": {\n \"proxyPort\": 8099,\n \"proxyHost\": \"myproxy.example.com\"\n }\n}\n\"\"\",\n termination_protection=False,\n keep_job_flow_alive_when_no_steps=True,\n ec2_attributes={\n \"subnet_id\": main[\"id\"],\n \"emr_managed_master_security_group\": sg[\"id\"],\n \"emr_managed_slave_security_group\": sg[\"id\"],\n \"instance_profile\": emr_profile[\"arn\"],\n },\n master_instance_group={\n \"instance_type\": \"m4.large\",\n },\n core_instance_group={\n \"instance_type\": \"c4.large\",\n \"instance_count\": 1,\n \"ebs_configs\": [{\n \"size\": 40,\n \"type\": \"gp2\",\n \"volumes_per_instance\": 1,\n }],\n \"bid_price\": \"0.30\",\n \"autoscaling_policy\": \"\"\"{\n\"Constraints\": {\n \"MinCapacity\": 1,\n \"MaxCapacity\": 2\n},\n\"Rules\": [\n {\n \"Name\": \"ScaleOutMemoryPercentage\",\n \"Description\": \"Scale out if YARNMemoryAvailablePercentage is less than 15\",\n \"Action\": {\n \"SimpleScalingPolicyConfiguration\": {\n \"AdjustmentType\": \"CHANGE_IN_CAPACITY\",\n \"ScalingAdjustment\": 1,\n \"CoolDown\": 300\n }\n },\n \"Trigger\": {\n \"CloudWatchAlarmDefinition\": {\n \"ComparisonOperator\": \"LESS_THAN\",\n \"EvaluationPeriods\": 1,\n \"MetricName\": \"YARNMemoryAvailablePercentage\",\n \"Namespace\": \"AWS/ElasticMapReduce\",\n \"Period\": 300,\n \"Statistic\": \"AVERAGE\",\n \"Threshold\": 15.0,\n \"Unit\": \"PERCENT\"\n }\n }\n }\n]\n}\n\"\"\",\n },\n ebs_root_volume_size=100,\n tags={\n \"role\": \"rolename\",\n \"env\": \"env\",\n },\n bootstrap_actions=[{\n \"path\": \"s3://elasticmapreduce/bootstrap-actions/run-if\",\n \"name\": \"runif\",\n \"args\": [\n \"instance.isMaster=true\",\n \"echo running on master node\",\n ],\n }],\n configurations_json=\"\"\" [\n {\n \"Classification\": \"hadoop-env\",\n \"Configurations\": [\n {\n \"Classification\": \"export\",\n \"Properties\": {\n \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n }\n }\n ],\n \"Properties\": {}\n },\n {\n \"Classification\": \"spark-env\",\n \"Configurations\": [\n {\n \"Classification\": \"export\",\n \"Properties\": {\n \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n }\n }\n ],\n \"Properties\": {}\n }\n ]\n\"\"\",\n service_role=iam_emr_service_role[\"arn\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster = new Aws.Emr.Cluster(\"cluster\", new()\n {\n Name = \"emr-test-arn\",\n ReleaseLabel = \"emr-4.6.0\",\n Applications = new[]\n {\n \"Spark\",\n },\n AdditionalInfo = @\"{\n \"\"instanceAwsClientConfiguration\"\": {\n \"\"proxyPort\"\": 8099,\n \"\"proxyHost\"\": \"\"myproxy.example.com\"\"\n }\n}\n\",\n TerminationProtection = false,\n KeepJobFlowAliveWhenNoSteps = true,\n Ec2Attributes = new Aws.Emr.Inputs.ClusterEc2AttributesArgs\n {\n SubnetId = main.Id,\n EmrManagedMasterSecurityGroup = sg.Id,\n EmrManagedSlaveSecurityGroup = sg.Id,\n InstanceProfile = emrProfile.Arn,\n },\n MasterInstanceGroup = new Aws.Emr.Inputs.ClusterMasterInstanceGroupArgs\n {\n InstanceType = \"m4.large\",\n },\n CoreInstanceGroup = new Aws.Emr.Inputs.ClusterCoreInstanceGroupArgs\n {\n InstanceType = \"c4.large\",\n InstanceCount = 1,\n EbsConfigs = new[]\n {\n new Aws.Emr.Inputs.ClusterCoreInstanceGroupEbsConfigArgs\n {\n Size = 40,\n Type = \"gp2\",\n VolumesPerInstance = 1,\n },\n },\n BidPrice = \"0.30\",\n AutoscalingPolicy = @\"{\n\"\"Constraints\"\": {\n \"\"MinCapacity\"\": 1,\n \"\"MaxCapacity\"\": 2\n},\n\"\"Rules\"\": [\n {\n \"\"Name\"\": \"\"ScaleOutMemoryPercentage\"\",\n \"\"Description\"\": \"\"Scale out if YARNMemoryAvailablePercentage is less than 15\"\",\n \"\"Action\"\": {\n \"\"SimpleScalingPolicyConfiguration\"\": {\n \"\"AdjustmentType\"\": \"\"CHANGE_IN_CAPACITY\"\",\n \"\"ScalingAdjustment\"\": 1,\n \"\"CoolDown\"\": 300\n }\n },\n \"\"Trigger\"\": {\n \"\"CloudWatchAlarmDefinition\"\": {\n \"\"ComparisonOperator\"\": \"\"LESS_THAN\"\",\n \"\"EvaluationPeriods\"\": 1,\n \"\"MetricName\"\": \"\"YARNMemoryAvailablePercentage\"\",\n \"\"Namespace\"\": \"\"AWS/ElasticMapReduce\"\",\n \"\"Period\"\": 300,\n \"\"Statistic\"\": \"\"AVERAGE\"\",\n \"\"Threshold\"\": 15.0,\n \"\"Unit\"\": \"\"PERCENT\"\"\n }\n }\n }\n]\n}\n\",\n },\n EbsRootVolumeSize = 100,\n Tags = \n {\n { \"role\", \"rolename\" },\n { \"env\", \"env\" },\n },\n BootstrapActions = new[]\n {\n new Aws.Emr.Inputs.ClusterBootstrapActionArgs\n {\n Path = \"s3://elasticmapreduce/bootstrap-actions/run-if\",\n Name = \"runif\",\n Args = new[]\n {\n \"instance.isMaster=true\",\n \"echo running on master node\",\n },\n },\n },\n ConfigurationsJson = @\" [\n {\n \"\"Classification\"\": \"\"hadoop-env\"\",\n \"\"Configurations\"\": [\n {\n \"\"Classification\"\": \"\"export\"\",\n \"\"Properties\"\": {\n \"\"JAVA_HOME\"\": \"\"/usr/lib/jvm/java-1.8.0\"\"\n }\n }\n ],\n \"\"Properties\"\": {}\n },\n {\n \"\"Classification\"\": \"\"spark-env\"\",\n \"\"Configurations\"\": [\n {\n \"\"Classification\"\": \"\"export\"\",\n \"\"Properties\"\": {\n \"\"JAVA_HOME\"\": \"\"/usr/lib/jvm/java-1.8.0\"\"\n }\n }\n ],\n \"\"Properties\"\": {}\n }\n ]\n\",\n ServiceRole = iamEmrServiceRole.Arn,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := emr.NewCluster(ctx, \"cluster\", \u0026emr.ClusterArgs{\n\t\t\tName: pulumi.String(\"emr-test-arn\"),\n\t\t\tReleaseLabel: pulumi.String(\"emr-4.6.0\"),\n\t\t\tApplications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Spark\"),\n\t\t\t},\n\t\t\tAdditionalInfo: pulumi.String(`{\n \"instanceAwsClientConfiguration\": {\n \"proxyPort\": 8099,\n \"proxyHost\": \"myproxy.example.com\"\n }\n}\n`),\n\t\t\tTerminationProtection: pulumi.Bool(false),\n\t\t\tKeepJobFlowAliveWhenNoSteps: pulumi.Bool(true),\n\t\t\tEc2Attributes: \u0026emr.ClusterEc2AttributesArgs{\n\t\t\t\tSubnetId: pulumi.Any(main.Id),\n\t\t\t\tEmrManagedMasterSecurityGroup: pulumi.Any(sg.Id),\n\t\t\t\tEmrManagedSlaveSecurityGroup: pulumi.Any(sg.Id),\n\t\t\t\tInstanceProfile: pulumi.Any(emrProfile.Arn),\n\t\t\t},\n\t\t\tMasterInstanceGroup: \u0026emr.ClusterMasterInstanceGroupArgs{\n\t\t\t\tInstanceType: pulumi.String(\"m4.large\"),\n\t\t\t},\n\t\t\tCoreInstanceGroup: \u0026emr.ClusterCoreInstanceGroupArgs{\n\t\t\t\tInstanceType: pulumi.String(\"c4.large\"),\n\t\t\t\tInstanceCount: pulumi.Int(1),\n\t\t\t\tEbsConfigs: emr.ClusterCoreInstanceGroupEbsConfigArray{\n\t\t\t\t\t\u0026emr.ClusterCoreInstanceGroupEbsConfigArgs{\n\t\t\t\t\t\tSize: pulumi.Int(40),\n\t\t\t\t\t\tType: pulumi.String(\"gp2\"),\n\t\t\t\t\t\tVolumesPerInstance: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tBidPrice: pulumi.String(\"0.30\"),\n\t\t\t\tAutoscalingPolicy: pulumi.String(`{\n\"Constraints\": {\n \"MinCapacity\": 1,\n \"MaxCapacity\": 2\n},\n\"Rules\": [\n {\n \"Name\": \"ScaleOutMemoryPercentage\",\n \"Description\": \"Scale out if YARNMemoryAvailablePercentage is less than 15\",\n \"Action\": {\n \"SimpleScalingPolicyConfiguration\": {\n \"AdjustmentType\": \"CHANGE_IN_CAPACITY\",\n \"ScalingAdjustment\": 1,\n \"CoolDown\": 300\n }\n },\n \"Trigger\": {\n \"CloudWatchAlarmDefinition\": {\n \"ComparisonOperator\": \"LESS_THAN\",\n \"EvaluationPeriods\": 1,\n \"MetricName\": \"YARNMemoryAvailablePercentage\",\n \"Namespace\": \"AWS/ElasticMapReduce\",\n \"Period\": 300,\n \"Statistic\": \"AVERAGE\",\n \"Threshold\": 15.0,\n \"Unit\": \"PERCENT\"\n }\n }\n }\n]\n}\n`),\n\t\t\t},\n\t\t\tEbsRootVolumeSize: pulumi.Int(100),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"role\": pulumi.String(\"rolename\"),\n\t\t\t\t\"env\": pulumi.String(\"env\"),\n\t\t\t},\n\t\t\tBootstrapActions: emr.ClusterBootstrapActionArray{\n\t\t\t\t\u0026emr.ClusterBootstrapActionArgs{\n\t\t\t\t\tPath: pulumi.String(\"s3://elasticmapreduce/bootstrap-actions/run-if\"),\n\t\t\t\t\tName: pulumi.String(\"runif\"),\n\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"instance.isMaster=true\"),\n\t\t\t\t\t\tpulumi.String(\"echo running on master node\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tConfigurationsJson: pulumi.String(` [\n {\n \"Classification\": \"hadoop-env\",\n \"Configurations\": [\n {\n \"Classification\": \"export\",\n \"Properties\": {\n \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n }\n }\n ],\n \"Properties\": {}\n },\n {\n \"Classification\": \"spark-env\",\n \"Configurations\": [\n {\n \"Classification\": \"export\",\n \"Properties\": {\n \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n }\n }\n ],\n \"Properties\": {}\n }\n ]\n`),\n\t\t\tServiceRole: pulumi.Any(iamEmrServiceRole.Arn),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.emr.Cluster;\nimport com.pulumi.aws.emr.ClusterArgs;\nimport com.pulumi.aws.emr.inputs.ClusterEc2AttributesArgs;\nimport com.pulumi.aws.emr.inputs.ClusterMasterInstanceGroupArgs;\nimport com.pulumi.aws.emr.inputs.ClusterCoreInstanceGroupArgs;\nimport com.pulumi.aws.emr.inputs.ClusterBootstrapActionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"emr-test-arn\")\n .releaseLabel(\"emr-4.6.0\")\n .applications(\"Spark\")\n .additionalInfo(\"\"\"\n{\n \"instanceAwsClientConfiguration\": {\n \"proxyPort\": 8099,\n \"proxyHost\": \"myproxy.example.com\"\n }\n}\n \"\"\")\n .terminationProtection(false)\n .keepJobFlowAliveWhenNoSteps(true)\n .ec2Attributes(ClusterEc2AttributesArgs.builder()\n .subnetId(main.id())\n .emrManagedMasterSecurityGroup(sg.id())\n .emrManagedSlaveSecurityGroup(sg.id())\n .instanceProfile(emrProfile.arn())\n .build())\n .masterInstanceGroup(ClusterMasterInstanceGroupArgs.builder()\n .instanceType(\"m4.large\")\n .build())\n .coreInstanceGroup(ClusterCoreInstanceGroupArgs.builder()\n .instanceType(\"c4.large\")\n .instanceCount(1)\n .ebsConfigs(ClusterCoreInstanceGroupEbsConfigArgs.builder()\n .size(40)\n .type(\"gp2\")\n .volumesPerInstance(1)\n .build())\n .bidPrice(\"0.30\")\n .autoscalingPolicy(\"\"\"\n{\n\"Constraints\": {\n \"MinCapacity\": 1,\n \"MaxCapacity\": 2\n},\n\"Rules\": [\n {\n \"Name\": \"ScaleOutMemoryPercentage\",\n \"Description\": \"Scale out if YARNMemoryAvailablePercentage is less than 15\",\n \"Action\": {\n \"SimpleScalingPolicyConfiguration\": {\n \"AdjustmentType\": \"CHANGE_IN_CAPACITY\",\n \"ScalingAdjustment\": 1,\n \"CoolDown\": 300\n }\n },\n \"Trigger\": {\n \"CloudWatchAlarmDefinition\": {\n \"ComparisonOperator\": \"LESS_THAN\",\n \"EvaluationPeriods\": 1,\n \"MetricName\": \"YARNMemoryAvailablePercentage\",\n \"Namespace\": \"AWS/ElasticMapReduce\",\n \"Period\": 300,\n \"Statistic\": \"AVERAGE\",\n \"Threshold\": 15.0,\n \"Unit\": \"PERCENT\"\n }\n }\n }\n]\n}\n \"\"\")\n .build())\n .ebsRootVolumeSize(100)\n .tags(Map.ofEntries(\n Map.entry(\"role\", \"rolename\"),\n Map.entry(\"env\", \"env\")\n ))\n .bootstrapActions(ClusterBootstrapActionArgs.builder()\n .path(\"s3://elasticmapreduce/bootstrap-actions/run-if\")\n .name(\"runif\")\n .args( \n \"instance.isMaster=true\",\n \"echo running on master node\")\n .build())\n .configurationsJson(\"\"\"\n [\n {\n \"Classification\": \"hadoop-env\",\n \"Configurations\": [\n {\n \"Classification\": \"export\",\n \"Properties\": {\n \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n }\n }\n ],\n \"Properties\": {}\n },\n {\n \"Classification\": \"spark-env\",\n \"Configurations\": [\n {\n \"Classification\": \"export\",\n \"Properties\": {\n \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n }\n }\n ],\n \"Properties\": {}\n }\n ]\n \"\"\")\n .serviceRole(iamEmrServiceRole.arn())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: aws:emr:Cluster\n properties:\n name: emr-test-arn\n releaseLabel: emr-4.6.0\n applications:\n - Spark\n additionalInfo: |\n {\n \"instanceAwsClientConfiguration\": {\n \"proxyPort\": 8099,\n \"proxyHost\": \"myproxy.example.com\"\n }\n }\n terminationProtection: false\n keepJobFlowAliveWhenNoSteps: true\n ec2Attributes:\n subnetId: ${main.id}\n emrManagedMasterSecurityGroup: ${sg.id}\n emrManagedSlaveSecurityGroup: ${sg.id}\n instanceProfile: ${emrProfile.arn}\n masterInstanceGroup:\n instanceType: m4.large\n coreInstanceGroup:\n instanceType: c4.large\n instanceCount: 1\n ebsConfigs:\n - size: '40'\n type: gp2\n volumesPerInstance: 1\n bidPrice: '0.30'\n autoscalingPolicy: |\n {\n \"Constraints\": {\n \"MinCapacity\": 1,\n \"MaxCapacity\": 2\n },\n \"Rules\": [\n {\n \"Name\": \"ScaleOutMemoryPercentage\",\n \"Description\": \"Scale out if YARNMemoryAvailablePercentage is less than 15\",\n \"Action\": {\n \"SimpleScalingPolicyConfiguration\": {\n \"AdjustmentType\": \"CHANGE_IN_CAPACITY\",\n \"ScalingAdjustment\": 1,\n \"CoolDown\": 300\n }\n },\n \"Trigger\": {\n \"CloudWatchAlarmDefinition\": {\n \"ComparisonOperator\": \"LESS_THAN\",\n \"EvaluationPeriods\": 1,\n \"MetricName\": \"YARNMemoryAvailablePercentage\",\n \"Namespace\": \"AWS/ElasticMapReduce\",\n \"Period\": 300,\n \"Statistic\": \"AVERAGE\",\n \"Threshold\": 15.0,\n \"Unit\": \"PERCENT\"\n }\n }\n }\n ]\n }\n ebsRootVolumeSize: 100\n tags:\n role: rolename\n env: env\n bootstrapActions:\n - path: s3://elasticmapreduce/bootstrap-actions/run-if\n name: runif\n args:\n - instance.isMaster=true\n - echo running on master node\n configurationsJson: |2\n [\n {\n \"Classification\": \"hadoop-env\",\n \"Configurations\": [\n {\n \"Classification\": \"export\",\n \"Properties\": {\n \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n }\n }\n ],\n \"Properties\": {}\n },\n {\n \"Classification\": \"spark-env\",\n \"Configurations\": [\n {\n \"Classification\": \"export\",\n \"Properties\": {\n \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n }\n }\n ],\n \"Properties\": {}\n }\n ]\n serviceRole: ${iamEmrServiceRole.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThe \u003cspan pulumi-lang-nodejs=\"`aws.emr.Cluster`\" pulumi-lang-dotnet=\"`aws.emr.Cluster`\" pulumi-lang-go=\"`emr.Cluster`\" pulumi-lang-python=\"`emr.Cluster`\" pulumi-lang-yaml=\"`aws.emr.Cluster`\" pulumi-lang-java=\"`aws.emr.Cluster`\"\u003e`aws.emr.Cluster`\u003c/span\u003e resource typically requires two IAM roles, one for the EMR Cluster to use as a service role, and another is assigned to every EC2 instance in a cluster and each application process that runs on a cluster assumes this role for permissions to interact with other AWS services. An additional role, the Auto Scaling role, is required if your cluster uses automatic scaling in Amazon EMR.\n\nThe default AWS managed EMR service role is called `EMR_DefaultRole` with Amazon managed policy `AmazonEMRServicePolicy_v2` attached. The name of default instance profile role is `EMR_EC2_DefaultRole` with default managed policy `AmazonElasticMapReduceforEC2Role` attached, but it is on the path to deprecation and will not be replaced with another default managed policy. You'll need to create and specify an instance profile to replace the deprecated role and default policy. See the [Configure IAM service roles for Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles.html) guide for more information on these IAM roles. There is also a fully-bootable example Pulumi configuration at the bottom of this page.\n\n### Instance Fleet\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.emr.Cluster(\"example\", {\n masterInstanceFleet: {\n instanceTypeConfigs: [{\n instanceType: \"m4.xlarge\",\n }],\n targetOnDemandCapacity: 1,\n },\n coreInstanceFleet: {\n instanceTypeConfigs: [\n {\n bidPriceAsPercentageOfOnDemandPrice: 80,\n ebsConfigs: [{\n size: 100,\n type: \"gp2\",\n volumesPerInstance: 1,\n }],\n instanceType: \"m3.xlarge\",\n weightedCapacity: 1,\n },\n {\n bidPriceAsPercentageOfOnDemandPrice: 100,\n ebsConfigs: [{\n size: 100,\n type: \"gp2\",\n volumesPerInstance: 1,\n }],\n instanceType: \"m4.xlarge\",\n weightedCapacity: 1,\n },\n {\n bidPriceAsPercentageOfOnDemandPrice: 100,\n ebsConfigs: [{\n size: 100,\n type: \"gp2\",\n volumesPerInstance: 1,\n }],\n instanceType: \"m4.2xlarge\",\n weightedCapacity: 2,\n },\n ],\n launchSpecifications: {\n spotSpecifications: [{\n allocationStrategy: \"capacity-optimized\",\n blockDurationMinutes: 0,\n timeoutAction: \"SWITCH_TO_ON_DEMAND\",\n timeoutDurationMinutes: 10,\n }],\n },\n name: \"core fleet\",\n targetOnDemandCapacity: 2,\n targetSpotCapacity: 2,\n },\n});\nconst task = new aws.emr.InstanceFleet(\"task\", {\n clusterId: example.id,\n instanceTypeConfigs: [\n {\n bidPriceAsPercentageOfOnDemandPrice: 100,\n ebsConfigs: [{\n size: 100,\n type: \"gp2\",\n volumesPerInstance: 1,\n }],\n instanceType: \"m4.xlarge\",\n weightedCapacity: 1,\n },\n {\n bidPriceAsPercentageOfOnDemandPrice: 100,\n ebsConfigs: [{\n size: 100,\n type: \"gp2\",\n volumesPerInstance: 1,\n }],\n instanceType: \"m4.2xlarge\",\n weightedCapacity: 2,\n },\n ],\n launchSpecifications: {\n spotSpecifications: [{\n allocationStrategy: \"capacity-optimized\",\n blockDurationMinutes: 0,\n timeoutAction: \"TERMINATE_CLUSTER\",\n timeoutDurationMinutes: 10,\n }],\n },\n name: \"task fleet\",\n targetOnDemandCapacity: 1,\n targetSpotCapacity: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.emr.Cluster(\"example\",\n master_instance_fleet={\n \"instance_type_configs\": [{\n \"instance_type\": \"m4.xlarge\",\n }],\n \"target_on_demand_capacity\": 1,\n },\n core_instance_fleet={\n \"instance_type_configs\": [\n {\n \"bid_price_as_percentage_of_on_demand_price\": 80,\n \"ebs_configs\": [{\n \"size\": 100,\n \"type\": \"gp2\",\n \"volumes_per_instance\": 1,\n }],\n \"instance_type\": \"m3.xlarge\",\n \"weighted_capacity\": 1,\n },\n {\n \"bid_price_as_percentage_of_on_demand_price\": 100,\n \"ebs_configs\": [{\n \"size\": 100,\n \"type\": \"gp2\",\n \"volumes_per_instance\": 1,\n }],\n \"instance_type\": \"m4.xlarge\",\n \"weighted_capacity\": 1,\n },\n {\n \"bid_price_as_percentage_of_on_demand_price\": 100,\n \"ebs_configs\": [{\n \"size\": 100,\n \"type\": \"gp2\",\n \"volumes_per_instance\": 1,\n }],\n \"instance_type\": \"m4.2xlarge\",\n \"weighted_capacity\": 2,\n },\n ],\n \"launch_specifications\": {\n \"spot_specifications\": [{\n \"allocation_strategy\": \"capacity-optimized\",\n \"block_duration_minutes\": 0,\n \"timeout_action\": \"SWITCH_TO_ON_DEMAND\",\n \"timeout_duration_minutes\": 10,\n }],\n },\n \"name\": \"core fleet\",\n \"target_on_demand_capacity\": 2,\n \"target_spot_capacity\": 2,\n })\ntask = aws.emr.InstanceFleet(\"task\",\n cluster_id=example.id,\n instance_type_configs=[\n {\n \"bid_price_as_percentage_of_on_demand_price\": 100,\n \"ebs_configs\": [{\n \"size\": 100,\n \"type\": \"gp2\",\n \"volumes_per_instance\": 1,\n }],\n \"instance_type\": \"m4.xlarge\",\n \"weighted_capacity\": 1,\n },\n {\n \"bid_price_as_percentage_of_on_demand_price\": 100,\n \"ebs_configs\": [{\n \"size\": 100,\n \"type\": \"gp2\",\n \"volumes_per_instance\": 1,\n }],\n \"instance_type\": \"m4.2xlarge\",\n \"weighted_capacity\": 2,\n },\n ],\n launch_specifications={\n \"spot_specifications\": [{\n \"allocation_strategy\": \"capacity-optimized\",\n \"block_duration_minutes\": 0,\n \"timeout_action\": \"TERMINATE_CLUSTER\",\n \"timeout_duration_minutes\": 10,\n }],\n },\n name=\"task fleet\",\n target_on_demand_capacity=1,\n target_spot_capacity=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Emr.Cluster(\"example\", new()\n {\n MasterInstanceFleet = new Aws.Emr.Inputs.ClusterMasterInstanceFleetArgs\n {\n InstanceTypeConfigs = new[]\n {\n new Aws.Emr.Inputs.ClusterMasterInstanceFleetInstanceTypeConfigArgs\n {\n InstanceType = \"m4.xlarge\",\n },\n },\n TargetOnDemandCapacity = 1,\n },\n CoreInstanceFleet = new Aws.Emr.Inputs.ClusterCoreInstanceFleetArgs\n {\n InstanceTypeConfigs = new[]\n {\n new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigArgs\n {\n BidPriceAsPercentageOfOnDemandPrice = 80,\n EbsConfigs = new[]\n {\n new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs\n {\n Size = 100,\n Type = \"gp2\",\n VolumesPerInstance = 1,\n },\n },\n InstanceType = \"m3.xlarge\",\n WeightedCapacity = 1,\n },\n new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigArgs\n {\n BidPriceAsPercentageOfOnDemandPrice = 100,\n EbsConfigs = new[]\n {\n new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs\n {\n Size = 100,\n Type = \"gp2\",\n VolumesPerInstance = 1,\n },\n },\n InstanceType = \"m4.xlarge\",\n WeightedCapacity = 1,\n },\n new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigArgs\n {\n BidPriceAsPercentageOfOnDemandPrice = 100,\n EbsConfigs = new[]\n {\n new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs\n {\n Size = 100,\n Type = \"gp2\",\n VolumesPerInstance = 1,\n },\n },\n InstanceType = \"m4.2xlarge\",\n WeightedCapacity = 2,\n },\n },\n LaunchSpecifications = new Aws.Emr.Inputs.ClusterCoreInstanceFleetLaunchSpecificationsArgs\n {\n SpotSpecifications = new[]\n {\n new Aws.Emr.Inputs.ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecificationArgs\n {\n AllocationStrategy = \"capacity-optimized\",\n BlockDurationMinutes = 0,\n TimeoutAction = \"SWITCH_TO_ON_DEMAND\",\n TimeoutDurationMinutes = 10,\n },\n },\n },\n Name = \"core fleet\",\n TargetOnDemandCapacity = 2,\n TargetSpotCapacity = 2,\n },\n });\n\n var task = new Aws.Emr.InstanceFleet(\"task\", new()\n {\n ClusterId = example.Id,\n InstanceTypeConfigs = new[]\n {\n new Aws.Emr.Inputs.InstanceFleetInstanceTypeConfigArgs\n {\n BidPriceAsPercentageOfOnDemandPrice = 100,\n EbsConfigs = new[]\n {\n new Aws.Emr.Inputs.InstanceFleetInstanceTypeConfigEbsConfigArgs\n {\n Size = 100,\n Type = \"gp2\",\n VolumesPerInstance = 1,\n },\n },\n InstanceType = \"m4.xlarge\",\n WeightedCapacity = 1,\n },\n new Aws.Emr.Inputs.InstanceFleetInstanceTypeConfigArgs\n {\n BidPriceAsPercentageOfOnDemandPrice = 100,\n EbsConfigs = new[]\n {\n new Aws.Emr.Inputs.InstanceFleetInstanceTypeConfigEbsConfigArgs\n {\n Size = 100,\n Type = \"gp2\",\n VolumesPerInstance = 1,\n },\n },\n InstanceType = \"m4.2xlarge\",\n WeightedCapacity = 2,\n },\n },\n LaunchSpecifications = new Aws.Emr.Inputs.InstanceFleetLaunchSpecificationsArgs\n {\n SpotSpecifications = new[]\n {\n new Aws.Emr.Inputs.InstanceFleetLaunchSpecificationsSpotSpecificationArgs\n {\n AllocationStrategy = \"capacity-optimized\",\n BlockDurationMinutes = 0,\n TimeoutAction = \"TERMINATE_CLUSTER\",\n TimeoutDurationMinutes = 10,\n },\n },\n },\n Name = \"task fleet\",\n TargetOnDemandCapacity = 1,\n TargetSpotCapacity = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := emr.NewCluster(ctx, \"example\", \u0026emr.ClusterArgs{\n\t\t\tMasterInstanceFleet: \u0026emr.ClusterMasterInstanceFleetArgs{\n\t\t\t\tInstanceTypeConfigs: emr.ClusterMasterInstanceFleetInstanceTypeConfigArray{\n\t\t\t\t\t\u0026emr.ClusterMasterInstanceFleetInstanceTypeConfigArgs{\n\t\t\t\t\t\tInstanceType: pulumi.String(\"m4.xlarge\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTargetOnDemandCapacity: pulumi.Int(1),\n\t\t\t},\n\t\t\tCoreInstanceFleet: \u0026emr.ClusterCoreInstanceFleetArgs{\n\t\t\t\tInstanceTypeConfigs: emr.ClusterCoreInstanceFleetInstanceTypeConfigArray{\n\t\t\t\t\t\u0026emr.ClusterCoreInstanceFleetInstanceTypeConfigArgs{\n\t\t\t\t\t\tBidPriceAsPercentageOfOnDemandPrice: pulumi.Float64(80),\n\t\t\t\t\t\tEbsConfigs: emr.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArray{\n\t\t\t\t\t\t\t\u0026emr.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs{\n\t\t\t\t\t\t\t\tSize: pulumi.Int(100),\n\t\t\t\t\t\t\t\tType: pulumi.String(\"gp2\"),\n\t\t\t\t\t\t\t\tVolumesPerInstance: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tInstanceType: pulumi.String(\"m3.xlarge\"),\n\t\t\t\t\t\tWeightedCapacity: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026emr.ClusterCoreInstanceFleetInstanceTypeConfigArgs{\n\t\t\t\t\t\tBidPriceAsPercentageOfOnDemandPrice: pulumi.Float64(100),\n\t\t\t\t\t\tEbsConfigs: emr.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArray{\n\t\t\t\t\t\t\t\u0026emr.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs{\n\t\t\t\t\t\t\t\tSize: pulumi.Int(100),\n\t\t\t\t\t\t\t\tType: pulumi.String(\"gp2\"),\n\t\t\t\t\t\t\t\tVolumesPerInstance: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tInstanceType: pulumi.String(\"m4.xlarge\"),\n\t\t\t\t\t\tWeightedCapacity: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026emr.ClusterCoreInstanceFleetInstanceTypeConfigArgs{\n\t\t\t\t\t\tBidPriceAsPercentageOfOnDemandPrice: pulumi.Float64(100),\n\t\t\t\t\t\tEbsConfigs: emr.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArray{\n\t\t\t\t\t\t\t\u0026emr.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs{\n\t\t\t\t\t\t\t\tSize: pulumi.Int(100),\n\t\t\t\t\t\t\t\tType: pulumi.String(\"gp2\"),\n\t\t\t\t\t\t\t\tVolumesPerInstance: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tInstanceType: pulumi.String(\"m4.2xlarge\"),\n\t\t\t\t\t\tWeightedCapacity: pulumi.Int(2),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tLaunchSpecifications: \u0026emr.ClusterCoreInstanceFleetLaunchSpecificationsArgs{\n\t\t\t\t\tSpotSpecifications: emr.ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecificationArray{\n\t\t\t\t\t\t\u0026emr.ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecificationArgs{\n\t\t\t\t\t\t\tAllocationStrategy: pulumi.String(\"capacity-optimized\"),\n\t\t\t\t\t\t\tBlockDurationMinutes: pulumi.Int(0),\n\t\t\t\t\t\t\tTimeoutAction: pulumi.String(\"SWITCH_TO_ON_DEMAND\"),\n\t\t\t\t\t\t\tTimeoutDurationMinutes: pulumi.Int(10),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tName: pulumi.String(\"core fleet\"),\n\t\t\t\tTargetOnDemandCapacity: pulumi.Int(2),\n\t\t\t\tTargetSpotCapacity: pulumi.Int(2),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = emr.NewInstanceFleet(ctx, \"task\", \u0026emr.InstanceFleetArgs{\n\t\t\tClusterId: example.ID(),\n\t\t\tInstanceTypeConfigs: emr.InstanceFleetInstanceTypeConfigArray{\n\t\t\t\t\u0026emr.InstanceFleetInstanceTypeConfigArgs{\n\t\t\t\t\tBidPriceAsPercentageOfOnDemandPrice: pulumi.Float64(100),\n\t\t\t\t\tEbsConfigs: emr.InstanceFleetInstanceTypeConfigEbsConfigArray{\n\t\t\t\t\t\t\u0026emr.InstanceFleetInstanceTypeConfigEbsConfigArgs{\n\t\t\t\t\t\t\tSize: pulumi.Int(100),\n\t\t\t\t\t\t\tType: pulumi.String(\"gp2\"),\n\t\t\t\t\t\t\tVolumesPerInstance: pulumi.Int(1),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tInstanceType: pulumi.String(\"m4.xlarge\"),\n\t\t\t\t\tWeightedCapacity: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\t\u0026emr.InstanceFleetInstanceTypeConfigArgs{\n\t\t\t\t\tBidPriceAsPercentageOfOnDemandPrice: pulumi.Float64(100),\n\t\t\t\t\tEbsConfigs: emr.InstanceFleetInstanceTypeConfigEbsConfigArray{\n\t\t\t\t\t\t\u0026emr.InstanceFleetInstanceTypeConfigEbsConfigArgs{\n\t\t\t\t\t\t\tSize: pulumi.Int(100),\n\t\t\t\t\t\t\tType: pulumi.String(\"gp2\"),\n\t\t\t\t\t\t\tVolumesPerInstance: pulumi.Int(1),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tInstanceType: pulumi.String(\"m4.2xlarge\"),\n\t\t\t\t\tWeightedCapacity: pulumi.Int(2),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLaunchSpecifications: \u0026emr.InstanceFleetLaunchSpecificationsArgs{\n\t\t\t\tSpotSpecifications: emr.InstanceFleetLaunchSpecificationsSpotSpecificationArray{\n\t\t\t\t\t\u0026emr.InstanceFleetLaunchSpecificationsSpotSpecificationArgs{\n\t\t\t\t\t\tAllocationStrategy: pulumi.String(\"capacity-optimized\"),\n\t\t\t\t\t\tBlockDurationMinutes: pulumi.Int(0),\n\t\t\t\t\t\tTimeoutAction: pulumi.String(\"TERMINATE_CLUSTER\"),\n\t\t\t\t\t\tTimeoutDurationMinutes: pulumi.Int(10),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"task fleet\"),\n\t\t\tTargetOnDemandCapacity: pulumi.Int(1),\n\t\t\tTargetSpotCapacity: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.emr.Cluster;\nimport com.pulumi.aws.emr.ClusterArgs;\nimport com.pulumi.aws.emr.inputs.ClusterMasterInstanceFleetArgs;\nimport com.pulumi.aws.emr.inputs.ClusterCoreInstanceFleetArgs;\nimport com.pulumi.aws.emr.inputs.ClusterCoreInstanceFleetLaunchSpecificationsArgs;\nimport com.pulumi.aws.emr.InstanceFleet;\nimport com.pulumi.aws.emr.InstanceFleetArgs;\nimport com.pulumi.aws.emr.inputs.InstanceFleetInstanceTypeConfigArgs;\nimport com.pulumi.aws.emr.inputs.InstanceFleetLaunchSpecificationsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Cluster(\"example\", ClusterArgs.builder()\n .masterInstanceFleet(ClusterMasterInstanceFleetArgs.builder()\n .instanceTypeConfigs(ClusterMasterInstanceFleetInstanceTypeConfigArgs.builder()\n .instanceType(\"m4.xlarge\")\n .build())\n .targetOnDemandCapacity(1)\n .build())\n .coreInstanceFleet(ClusterCoreInstanceFleetArgs.builder()\n .instanceTypeConfigs( \n ClusterCoreInstanceFleetInstanceTypeConfigArgs.builder()\n .bidPriceAsPercentageOfOnDemandPrice(80.0)\n .ebsConfigs(ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs.builder()\n .size(100)\n .type(\"gp2\")\n .volumesPerInstance(1)\n .build())\n .instanceType(\"m3.xlarge\")\n .weightedCapacity(1)\n .build(),\n ClusterCoreInstanceFleetInstanceTypeConfigArgs.builder()\n .bidPriceAsPercentageOfOnDemandPrice(100.0)\n .ebsConfigs(ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs.builder()\n .size(100)\n .type(\"gp2\")\n .volumesPerInstance(1)\n .build())\n .instanceType(\"m4.xlarge\")\n .weightedCapacity(1)\n .build(),\n ClusterCoreInstanceFleetInstanceTypeConfigArgs.builder()\n .bidPriceAsPercentageOfOnDemandPrice(100.0)\n .ebsConfigs(ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs.builder()\n .size(100)\n .type(\"gp2\")\n .volumesPerInstance(1)\n .build())\n .instanceType(\"m4.2xlarge\")\n .weightedCapacity(2)\n .build())\n .launchSpecifications(ClusterCoreInstanceFleetLaunchSpecificationsArgs.builder()\n .spotSpecifications(ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecificationArgs.builder()\n .allocationStrategy(\"capacity-optimized\")\n .blockDurationMinutes(0)\n .timeoutAction(\"SWITCH_TO_ON_DEMAND\")\n .timeoutDurationMinutes(10)\n .build())\n .build())\n .name(\"core fleet\")\n .targetOnDemandCapacity(2)\n .targetSpotCapacity(2)\n .build())\n .build());\n\n var task = new InstanceFleet(\"task\", InstanceFleetArgs.builder()\n .clusterId(example.id())\n .instanceTypeConfigs( \n InstanceFleetInstanceTypeConfigArgs.builder()\n .bidPriceAsPercentageOfOnDemandPrice(100.0)\n .ebsConfigs(InstanceFleetInstanceTypeConfigEbsConfigArgs.builder()\n .size(100)\n .type(\"gp2\")\n .volumesPerInstance(1)\n .build())\n .instanceType(\"m4.xlarge\")\n .weightedCapacity(1)\n .build(),\n InstanceFleetInstanceTypeConfigArgs.builder()\n .bidPriceAsPercentageOfOnDemandPrice(100.0)\n .ebsConfigs(InstanceFleetInstanceTypeConfigEbsConfigArgs.builder()\n .size(100)\n .type(\"gp2\")\n .volumesPerInstance(1)\n .build())\n .instanceType(\"m4.2xlarge\")\n .weightedCapacity(2)\n .build())\n .launchSpecifications(InstanceFleetLaunchSpecificationsArgs.builder()\n .spotSpecifications(InstanceFleetLaunchSpecificationsSpotSpecificationArgs.builder()\n .allocationStrategy(\"capacity-optimized\")\n .blockDurationMinutes(0)\n .timeoutAction(\"TERMINATE_CLUSTER\")\n .timeoutDurationMinutes(10)\n .build())\n .build())\n .name(\"task fleet\")\n .targetOnDemandCapacity(1)\n .targetSpotCapacity(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:emr:Cluster\n properties:\n masterInstanceFleet:\n instanceTypeConfigs:\n - instanceType: m4.xlarge\n targetOnDemandCapacity: 1\n coreInstanceFleet:\n instanceTypeConfigs:\n - bidPriceAsPercentageOfOnDemandPrice: 80\n ebsConfigs:\n - size: 100\n type: gp2\n volumesPerInstance: 1\n instanceType: m3.xlarge\n weightedCapacity: 1\n - bidPriceAsPercentageOfOnDemandPrice: 100\n ebsConfigs:\n - size: 100\n type: gp2\n volumesPerInstance: 1\n instanceType: m4.xlarge\n weightedCapacity: 1\n - bidPriceAsPercentageOfOnDemandPrice: 100\n ebsConfigs:\n - size: 100\n type: gp2\n volumesPerInstance: 1\n instanceType: m4.2xlarge\n weightedCapacity: 2\n launchSpecifications:\n spotSpecifications:\n - allocationStrategy: capacity-optimized\n blockDurationMinutes: 0\n timeoutAction: SWITCH_TO_ON_DEMAND\n timeoutDurationMinutes: 10\n name: core fleet\n targetOnDemandCapacity: 2\n targetSpotCapacity: 2\n task:\n type: aws:emr:InstanceFleet\n properties:\n clusterId: ${example.id}\n instanceTypeConfigs:\n - bidPriceAsPercentageOfOnDemandPrice: 100\n ebsConfigs:\n - size: 100\n type: gp2\n volumesPerInstance: 1\n instanceType: m4.xlarge\n weightedCapacity: 1\n - bidPriceAsPercentageOfOnDemandPrice: 100\n ebsConfigs:\n - size: 100\n type: gp2\n volumesPerInstance: 1\n instanceType: m4.2xlarge\n weightedCapacity: 2\n launchSpecifications:\n spotSpecifications:\n - allocationStrategy: capacity-optimized\n blockDurationMinutes: 0\n timeoutAction: TERMINATE_CLUSTER\n timeoutDurationMinutes: 10\n name: task fleet\n targetOnDemandCapacity: 1\n targetSpotCapacity: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Enable Debug Logging\n\n[Debug logging in EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-debugging.html) is implemented as a step. It is highly recommended that you utilize the resource options configuration with `ignoreChanges` if other steps are being managed outside of this provider.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.emr.Cluster(\"example\", {steps: [{\n actionOnFailure: \"TERMINATE_CLUSTER\",\n name: \"Setup Hadoop Debugging\",\n hadoopJarStep: {\n jar: \"command-runner.jar\",\n args: [\"state-pusher-script\"],\n },\n}]});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.emr.Cluster(\"example\", steps=[{\n \"action_on_failure\": \"TERMINATE_CLUSTER\",\n \"name\": \"Setup Hadoop Debugging\",\n \"hadoop_jar_step\": {\n \"jar\": \"command-runner.jar\",\n \"args\": [\"state-pusher-script\"],\n },\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Emr.Cluster(\"example\", new()\n {\n Steps = new[]\n {\n new Aws.Emr.Inputs.ClusterStepArgs\n {\n ActionOnFailure = \"TERMINATE_CLUSTER\",\n Name = \"Setup Hadoop Debugging\",\n HadoopJarStep = new Aws.Emr.Inputs.ClusterStepHadoopJarStepArgs\n {\n Jar = \"command-runner.jar\",\n Args = new[]\n {\n \"state-pusher-script\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := emr.NewCluster(ctx, \"example\", \u0026emr.ClusterArgs{\n\t\t\tSteps: emr.ClusterStepArray{\n\t\t\t\t\u0026emr.ClusterStepArgs{\n\t\t\t\t\tActionOnFailure: pulumi.String(\"TERMINATE_CLUSTER\"),\n\t\t\t\t\tName: pulumi.String(\"Setup Hadoop Debugging\"),\n\t\t\t\t\tHadoopJarStep: \u0026emr.ClusterStepHadoopJarStepArgs{\n\t\t\t\t\t\tJar: pulumi.String(\"command-runner.jar\"),\n\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"state-pusher-script\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.emr.Cluster;\nimport com.pulumi.aws.emr.ClusterArgs;\nimport com.pulumi.aws.emr.inputs.ClusterStepArgs;\nimport com.pulumi.aws.emr.inputs.ClusterStepHadoopJarStepArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Cluster(\"example\", ClusterArgs.builder()\n .steps(ClusterStepArgs.builder()\n .actionOnFailure(\"TERMINATE_CLUSTER\")\n .name(\"Setup Hadoop Debugging\")\n .hadoopJarStep(ClusterStepHadoopJarStepArgs.builder()\n .jar(\"command-runner.jar\")\n .args(\"state-pusher-script\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:emr:Cluster\n properties:\n steps:\n - actionOnFailure: TERMINATE_CLUSTER\n name: Setup Hadoop Debugging\n hadoopJarStep:\n jar: command-runner.jar\n args:\n - state-pusher-script\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Multiple Node Master Instance Group\n\nAvailable in EMR version 5.23.0 and later, an EMR Cluster can be launched with three master nodes for high availability. Additional information about this functionality and its requirements can be found in the [EMR Management Guide](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-ha.html).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// This configuration is for illustrative purposes and highlights\n// only relevant configurations for working with this functionality.\n// Map public IP on launch must be enabled for public (Internet accessible) subnets\nconst example = new aws.ec2.Subnet(\"example\", {mapPublicIpOnLaunch: true});\nconst exampleCluster = new aws.emr.Cluster(\"example\", {\n releaseLabel: \"emr-5.24.1\",\n terminationProtection: true,\n ec2Attributes: {\n subnetId: example.id,\n },\n masterInstanceGroup: {\n instanceCount: 3,\n },\n coreInstanceGroup: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\n# This configuration is for illustrative purposes and highlights\n# only relevant configurations for working with this functionality.\n# Map public IP on launch must be enabled for public (Internet accessible) subnets\nexample = aws.ec2.Subnet(\"example\", map_public_ip_on_launch=True)\nexample_cluster = aws.emr.Cluster(\"example\",\n release_label=\"emr-5.24.1\",\n termination_protection=True,\n ec2_attributes={\n \"subnet_id\": example.id,\n },\n master_instance_group={\n \"instance_count\": 3,\n },\n core_instance_group={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // This configuration is for illustrative purposes and highlights\n // only relevant configurations for working with this functionality.\n // Map public IP on launch must be enabled for public (Internet accessible) subnets\n var example = new Aws.Ec2.Subnet(\"example\", new()\n {\n MapPublicIpOnLaunch = true,\n });\n\n var exampleCluster = new Aws.Emr.Cluster(\"example\", new()\n {\n ReleaseLabel = \"emr-5.24.1\",\n TerminationProtection = true,\n Ec2Attributes = new Aws.Emr.Inputs.ClusterEc2AttributesArgs\n {\n SubnetId = example.Id,\n },\n MasterInstanceGroup = new Aws.Emr.Inputs.ClusterMasterInstanceGroupArgs\n {\n InstanceCount = 3,\n },\n CoreInstanceGroup = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// This configuration is for illustrative purposes and highlights\n\t\t// only relevant configurations for working with this functionality.\n\t\t// Map public IP on launch must be enabled for public (Internet accessible) subnets\n\t\texample, err := ec2.NewSubnet(ctx, \"example\", \u0026ec2.SubnetArgs{\n\t\t\tMapPublicIpOnLaunch: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = emr.NewCluster(ctx, \"example\", \u0026emr.ClusterArgs{\n\t\t\tReleaseLabel: pulumi.String(\"emr-5.24.1\"),\n\t\t\tTerminationProtection: pulumi.Bool(true),\n\t\t\tEc2Attributes: \u0026emr.ClusterEc2AttributesArgs{\n\t\t\t\tSubnetId: example.ID(),\n\t\t\t},\n\t\t\tMasterInstanceGroup: \u0026emr.ClusterMasterInstanceGroupArgs{\n\t\t\t\tInstanceCount: pulumi.Int(3),\n\t\t\t},\n\t\t\tCoreInstanceGroup: \u0026emr.ClusterCoreInstanceGroupArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.Subnet;\nimport com.pulumi.aws.ec2.SubnetArgs;\nimport com.pulumi.aws.emr.Cluster;\nimport com.pulumi.aws.emr.ClusterArgs;\nimport com.pulumi.aws.emr.inputs.ClusterEc2AttributesArgs;\nimport com.pulumi.aws.emr.inputs.ClusterMasterInstanceGroupArgs;\nimport com.pulumi.aws.emr.inputs.ClusterCoreInstanceGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // This configuration is for illustrative purposes and highlights\n // only relevant configurations for working with this functionality.\n // Map public IP on launch must be enabled for public (Internet accessible) subnets\n var example = new Subnet(\"example\", SubnetArgs.builder()\n .mapPublicIpOnLaunch(true)\n .build());\n\n var exampleCluster = new Cluster(\"exampleCluster\", ClusterArgs.builder()\n .releaseLabel(\"emr-5.24.1\")\n .terminationProtection(true)\n .ec2Attributes(ClusterEc2AttributesArgs.builder()\n .subnetId(example.id())\n .build())\n .masterInstanceGroup(ClusterMasterInstanceGroupArgs.builder()\n .instanceCount(3)\n .build())\n .coreInstanceGroup(ClusterCoreInstanceGroupArgs.builder()\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # This configuration is for illustrative purposes and highlights\n # only relevant configurations for working with this functionality.\n\n # Map public IP on launch must be enabled for public (Internet accessible) subnets\n example:\n type: aws:ec2:Subnet\n properties:\n mapPublicIpOnLaunch: true\n exampleCluster:\n type: aws:emr:Cluster\n name: example\n properties:\n releaseLabel: emr-5.24.1\n terminationProtection: true\n ec2Attributes:\n subnetId: ${example.id}\n masterInstanceGroup:\n instanceCount: 3\n coreInstanceGroup: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import EMR clusters using the `id`. For example:\n\n```sh\n$ pulumi import aws:emr/cluster:Cluster cluster j-123456ABCDEF\n```\nSince the API does not return the actual values for Kerberos configurations, environments with those options set will need to use the `lifecycle` configuration block `ignore_changes` argument available to all Pulumi resources to prevent perpetual differences. For example:\n\n", + "description": "Provides an Elastic MapReduce Cluster, a web service that makes it easy to process large amounts of data efficiently. See [Amazon Elastic MapReduce Documentation](https://aws.amazon.com/documentation/elastic-mapreduce/) for more information.\n\nTo configure [Instance Groups](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-instance-group-configuration.html#emr-plan-instance-groups) for [task nodes](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-master-core-task-nodes.html#emr-plan-task), see the \u003cspan pulumi-lang-nodejs=\"`aws.emr.InstanceGroup`\" pulumi-lang-dotnet=\"`aws.emr.InstanceGroup`\" pulumi-lang-go=\"`emr.InstanceGroup`\" pulumi-lang-python=\"`emr.InstanceGroup`\" pulumi-lang-yaml=\"`aws.emr.InstanceGroup`\" pulumi-lang-java=\"`aws.emr.InstanceGroup`\"\u003e`aws.emr.InstanceGroup`\u003c/span\u003e resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst cluster = new aws.emr.Cluster(\"cluster\", {\n name: \"emr-test-arn\",\n releaseLabel: \"emr-4.6.0\",\n applications: [\"Spark\"],\n additionalInfo: `{\n \\\\\"instanceAwsClientConfiguration\\\\\": {\n \\\\\"proxyPort\\\\\": 8099,\n \\\\\"proxyHost\\\\\": \\\\\"myproxy.example.com\\\\\"\n }\n}\n`,\n terminationProtection: false,\n keepJobFlowAliveWhenNoSteps: true,\n ec2Attributes: {\n subnetId: main.id,\n emrManagedMasterSecurityGroup: sg.id,\n emrManagedSlaveSecurityGroup: sg.id,\n instanceProfile: emrProfile.arn,\n },\n masterInstanceGroup: {\n instanceType: \"m4.large\",\n },\n coreInstanceGroup: {\n instanceType: \"c4.large\",\n instanceCount: 1,\n ebsConfigs: [{\n size: 40,\n type: \"gp2\",\n volumesPerInstance: 1,\n }],\n bidPrice: \"0.30\",\n autoscalingPolicy: `{\n\\\\\"Constraints\\\\\": {\n \\\\\"MinCapacity\\\\\": 1,\n \\\\\"MaxCapacity\\\\\": 2\n},\n\\\\\"Rules\\\\\": [\n {\n \\\\\"Name\\\\\": \\\\\"ScaleOutMemoryPercentage\\\\\",\n \\\\\"Description\\\\\": \\\\\"Scale out if YARNMemoryAvailablePercentage is less than 15\\\\\",\n \\\\\"Action\\\\\": {\n \\\\\"SimpleScalingPolicyConfiguration\\\\\": {\n \\\\\"AdjustmentType\\\\\": \\\\\"CHANGE_IN_CAPACITY\\\\\",\n \\\\\"ScalingAdjustment\\\\\": 1,\n \\\\\"CoolDown\\\\\": 300\n }\n },\n \\\\\"Trigger\\\\\": {\n \\\\\"CloudWatchAlarmDefinition\\\\\": {\n \\\\\"ComparisonOperator\\\\\": \\\\\"LESS_THAN\\\\\",\n \\\\\"EvaluationPeriods\\\\\": 1,\n \\\\\"MetricName\\\\\": \\\\\"YARNMemoryAvailablePercentage\\\\\",\n \\\\\"Namespace\\\\\": \\\\\"AWS/ElasticMapReduce\\\\\",\n \\\\\"Period\\\\\": 300,\n \\\\\"Statistic\\\\\": \\\\\"AVERAGE\\\\\",\n \\\\\"Threshold\\\\\": 15.0,\n \\\\\"Unit\\\\\": \\\\\"PERCENT\\\\\"\n }\n }\n }\n]\n}\n`,\n },\n ebsRootVolumeSize: 100,\n tags: {\n role: \"rolename\",\n env: \"env\",\n },\n bootstrapActions: [{\n path: \"s3://elasticmapreduce/bootstrap-actions/run-if\",\n name: \"runif\",\n args: [\n \"instance.isMaster=true\",\n \"echo running on master node\",\n ],\n }],\n configurationsJson: ` [\n {\n \\\\\"Classification\\\\\": \\\\\"hadoop-env\\\\\",\n \\\\\"Configurations\\\\\": [\n {\n \\\\\"Classification\\\\\": \\\\\"export\\\\\",\n \\\\\"Properties\\\\\": {\n \\\\\"JAVA_HOME\\\\\": \\\\\"/usr/lib/jvm/java-1.8.0\\\\\"\n }\n }\n ],\n \\\\\"Properties\\\\\": {}\n },\n {\n \\\\\"Classification\\\\\": \\\\\"spark-env\\\\\",\n \\\\\"Configurations\\\\\": [\n {\n \\\\\"Classification\\\\\": \\\\\"export\\\\\",\n \\\\\"Properties\\\\\": {\n \\\\\"JAVA_HOME\\\\\": \\\\\"/usr/lib/jvm/java-1.8.0\\\\\"\n }\n }\n ],\n \\\\\"Properties\\\\\": {}\n }\n ]\n`,\n serviceRole: iamEmrServiceRole.arn,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncluster = aws.emr.Cluster(\"cluster\",\n name=\"emr-test-arn\",\n release_label=\"emr-4.6.0\",\n applications=[\"Spark\"],\n additional_info=\"\"\"{\n \\\"instanceAwsClientConfiguration\\\": {\n \\\"proxyPort\\\": 8099,\n \\\"proxyHost\\\": \\\"myproxy.example.com\\\"\n }\n}\n\"\"\",\n termination_protection=False,\n keep_job_flow_alive_when_no_steps=True,\n ec2_attributes={\n \"subnet_id\": main[\"id\"],\n \"emr_managed_master_security_group\": sg[\"id\"],\n \"emr_managed_slave_security_group\": sg[\"id\"],\n \"instance_profile\": emr_profile[\"arn\"],\n },\n master_instance_group={\n \"instance_type\": \"m4.large\",\n },\n core_instance_group={\n \"instance_type\": \"c4.large\",\n \"instance_count\": 1,\n \"ebs_configs\": [{\n \"size\": 40,\n \"type\": \"gp2\",\n \"volumes_per_instance\": 1,\n }],\n \"bid_price\": \"0.30\",\n \"autoscaling_policy\": \"\"\"{\n\\\"Constraints\\\": {\n \\\"MinCapacity\\\": 1,\n \\\"MaxCapacity\\\": 2\n},\n\\\"Rules\\\": [\n {\n \\\"Name\\\": \\\"ScaleOutMemoryPercentage\\\",\n \\\"Description\\\": \\\"Scale out if YARNMemoryAvailablePercentage is less than 15\\\",\n \\\"Action\\\": {\n \\\"SimpleScalingPolicyConfiguration\\\": {\n \\\"AdjustmentType\\\": \\\"CHANGE_IN_CAPACITY\\\",\n \\\"ScalingAdjustment\\\": 1,\n \\\"CoolDown\\\": 300\n }\n },\n \\\"Trigger\\\": {\n \\\"CloudWatchAlarmDefinition\\\": {\n \\\"ComparisonOperator\\\": \\\"LESS_THAN\\\",\n \\\"EvaluationPeriods\\\": 1,\n \\\"MetricName\\\": \\\"YARNMemoryAvailablePercentage\\\",\n \\\"Namespace\\\": \\\"AWS/ElasticMapReduce\\\",\n \\\"Period\\\": 300,\n \\\"Statistic\\\": \\\"AVERAGE\\\",\n \\\"Threshold\\\": 15.0,\n \\\"Unit\\\": \\\"PERCENT\\\"\n }\n }\n }\n]\n}\n\"\"\",\n },\n ebs_root_volume_size=100,\n tags={\n \"role\": \"rolename\",\n \"env\": \"env\",\n },\n bootstrap_actions=[{\n \"path\": \"s3://elasticmapreduce/bootstrap-actions/run-if\",\n \"name\": \"runif\",\n \"args\": [\n \"instance.isMaster=true\",\n \"echo running on master node\",\n ],\n }],\n configurations_json=\"\"\" [\n {\n \\\"Classification\\\": \\\"hadoop-env\\\",\n \\\"Configurations\\\": [\n {\n \\\"Classification\\\": \\\"export\\\",\n \\\"Properties\\\": {\n \\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n }\n }\n ],\n \\\"Properties\\\": {}\n },\n {\n \\\"Classification\\\": \\\"spark-env\\\",\n \\\"Configurations\\\": [\n {\n \\\"Classification\\\": \\\"export\\\",\n \\\"Properties\\\": {\n \\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n }\n }\n ],\n \\\"Properties\\\": {}\n }\n ]\n\"\"\",\n service_role=iam_emr_service_role[\"arn\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster = new Aws.Emr.Cluster(\"cluster\", new()\n {\n Name = \"emr-test-arn\",\n ReleaseLabel = \"emr-4.6.0\",\n Applications = new[]\n {\n \"Spark\",\n },\n AdditionalInfo = @\"{\n \\\"\"instanceAwsClientConfiguration\\\"\": {\n \\\"\"proxyPort\\\"\": 8099,\n \\\"\"proxyHost\\\"\": \\\"\"myproxy.example.com\\\"\"\n }\n}\n\",\n TerminationProtection = false,\n KeepJobFlowAliveWhenNoSteps = true,\n Ec2Attributes = new Aws.Emr.Inputs.ClusterEc2AttributesArgs\n {\n SubnetId = main.Id,\n EmrManagedMasterSecurityGroup = sg.Id,\n EmrManagedSlaveSecurityGroup = sg.Id,\n InstanceProfile = emrProfile.Arn,\n },\n MasterInstanceGroup = new Aws.Emr.Inputs.ClusterMasterInstanceGroupArgs\n {\n InstanceType = \"m4.large\",\n },\n CoreInstanceGroup = new Aws.Emr.Inputs.ClusterCoreInstanceGroupArgs\n {\n InstanceType = \"c4.large\",\n InstanceCount = 1,\n EbsConfigs = new[]\n {\n new Aws.Emr.Inputs.ClusterCoreInstanceGroupEbsConfigArgs\n {\n Size = 40,\n Type = \"gp2\",\n VolumesPerInstance = 1,\n },\n },\n BidPrice = \"0.30\",\n AutoscalingPolicy = @\"{\n\\\"\"Constraints\\\"\": {\n \\\"\"MinCapacity\\\"\": 1,\n \\\"\"MaxCapacity\\\"\": 2\n},\n\\\"\"Rules\\\"\": [\n {\n \\\"\"Name\\\"\": \\\"\"ScaleOutMemoryPercentage\\\"\",\n \\\"\"Description\\\"\": \\\"\"Scale out if YARNMemoryAvailablePercentage is less than 15\\\"\",\n \\\"\"Action\\\"\": {\n \\\"\"SimpleScalingPolicyConfiguration\\\"\": {\n \\\"\"AdjustmentType\\\"\": \\\"\"CHANGE_IN_CAPACITY\\\"\",\n \\\"\"ScalingAdjustment\\\"\": 1,\n \\\"\"CoolDown\\\"\": 300\n }\n },\n \\\"\"Trigger\\\"\": {\n \\\"\"CloudWatchAlarmDefinition\\\"\": {\n \\\"\"ComparisonOperator\\\"\": \\\"\"LESS_THAN\\\"\",\n \\\"\"EvaluationPeriods\\\"\": 1,\n \\\"\"MetricName\\\"\": \\\"\"YARNMemoryAvailablePercentage\\\"\",\n \\\"\"Namespace\\\"\": \\\"\"AWS/ElasticMapReduce\\\"\",\n \\\"\"Period\\\"\": 300,\n \\\"\"Statistic\\\"\": \\\"\"AVERAGE\\\"\",\n \\\"\"Threshold\\\"\": 15.0,\n \\\"\"Unit\\\"\": \\\"\"PERCENT\\\"\"\n }\n }\n }\n]\n}\n\",\n },\n EbsRootVolumeSize = 100,\n Tags = \n {\n { \"role\", \"rolename\" },\n { \"env\", \"env\" },\n },\n BootstrapActions = new[]\n {\n new Aws.Emr.Inputs.ClusterBootstrapActionArgs\n {\n Path = \"s3://elasticmapreduce/bootstrap-actions/run-if\",\n Name = \"runif\",\n Args = new[]\n {\n \"instance.isMaster=true\",\n \"echo running on master node\",\n },\n },\n },\n ConfigurationsJson = @\" [\n {\n \\\"\"Classification\\\"\": \\\"\"hadoop-env\\\"\",\n \\\"\"Configurations\\\"\": [\n {\n \\\"\"Classification\\\"\": \\\"\"export\\\"\",\n \\\"\"Properties\\\"\": {\n \\\"\"JAVA_HOME\\\"\": \\\"\"/usr/lib/jvm/java-1.8.0\\\"\"\n }\n }\n ],\n \\\"\"Properties\\\"\": {}\n },\n {\n \\\"\"Classification\\\"\": \\\"\"spark-env\\\"\",\n \\\"\"Configurations\\\"\": [\n {\n \\\"\"Classification\\\"\": \\\"\"export\\\"\",\n \\\"\"Properties\\\"\": {\n \\\"\"JAVA_HOME\\\"\": \\\"\"/usr/lib/jvm/java-1.8.0\\\"\"\n }\n }\n ],\n \\\"\"Properties\\\"\": {}\n }\n ]\n\",\n ServiceRole = iamEmrServiceRole.Arn,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := emr.NewCluster(ctx, \"cluster\", \u0026emr.ClusterArgs{\n\t\t\tName: pulumi.String(\"emr-test-arn\"),\n\t\t\tReleaseLabel: pulumi.String(\"emr-4.6.0\"),\n\t\t\tApplications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Spark\"),\n\t\t\t},\n\t\t\tAdditionalInfo: pulumi.String(`{\n \\\"instanceAwsClientConfiguration\\\": {\n \\\"proxyPort\\\": 8099,\n \\\"proxyHost\\\": \\\"myproxy.example.com\\\"\n }\n}\n`),\n\t\t\tTerminationProtection: pulumi.Bool(false),\n\t\t\tKeepJobFlowAliveWhenNoSteps: pulumi.Bool(true),\n\t\t\tEc2Attributes: \u0026emr.ClusterEc2AttributesArgs{\n\t\t\t\tSubnetId: pulumi.Any(main.Id),\n\t\t\t\tEmrManagedMasterSecurityGroup: pulumi.Any(sg.Id),\n\t\t\t\tEmrManagedSlaveSecurityGroup: pulumi.Any(sg.Id),\n\t\t\t\tInstanceProfile: pulumi.Any(emrProfile.Arn),\n\t\t\t},\n\t\t\tMasterInstanceGroup: \u0026emr.ClusterMasterInstanceGroupArgs{\n\t\t\t\tInstanceType: pulumi.String(\"m4.large\"),\n\t\t\t},\n\t\t\tCoreInstanceGroup: \u0026emr.ClusterCoreInstanceGroupArgs{\n\t\t\t\tInstanceType: pulumi.String(\"c4.large\"),\n\t\t\t\tInstanceCount: pulumi.Int(1),\n\t\t\t\tEbsConfigs: emr.ClusterCoreInstanceGroupEbsConfigArray{\n\t\t\t\t\t\u0026emr.ClusterCoreInstanceGroupEbsConfigArgs{\n\t\t\t\t\t\tSize: pulumi.Int(40),\n\t\t\t\t\t\tType: pulumi.String(\"gp2\"),\n\t\t\t\t\t\tVolumesPerInstance: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tBidPrice: pulumi.String(\"0.30\"),\n\t\t\t\tAutoscalingPolicy: pulumi.String(`{\n\\\"Constraints\\\": {\n \\\"MinCapacity\\\": 1,\n \\\"MaxCapacity\\\": 2\n},\n\\\"Rules\\\": [\n {\n \\\"Name\\\": \\\"ScaleOutMemoryPercentage\\\",\n \\\"Description\\\": \\\"Scale out if YARNMemoryAvailablePercentage is less than 15\\\",\n \\\"Action\\\": {\n \\\"SimpleScalingPolicyConfiguration\\\": {\n \\\"AdjustmentType\\\": \\\"CHANGE_IN_CAPACITY\\\",\n \\\"ScalingAdjustment\\\": 1,\n \\\"CoolDown\\\": 300\n }\n },\n \\\"Trigger\\\": {\n \\\"CloudWatchAlarmDefinition\\\": {\n \\\"ComparisonOperator\\\": \\\"LESS_THAN\\\",\n \\\"EvaluationPeriods\\\": 1,\n \\\"MetricName\\\": \\\"YARNMemoryAvailablePercentage\\\",\n \\\"Namespace\\\": \\\"AWS/ElasticMapReduce\\\",\n \\\"Period\\\": 300,\n \\\"Statistic\\\": \\\"AVERAGE\\\",\n \\\"Threshold\\\": 15.0,\n \\\"Unit\\\": \\\"PERCENT\\\"\n }\n }\n }\n]\n}\n`),\n\t\t\t},\n\t\t\tEbsRootVolumeSize: pulumi.Int(100),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"role\": pulumi.String(\"rolename\"),\n\t\t\t\t\"env\": pulumi.String(\"env\"),\n\t\t\t},\n\t\t\tBootstrapActions: emr.ClusterBootstrapActionArray{\n\t\t\t\t\u0026emr.ClusterBootstrapActionArgs{\n\t\t\t\t\tPath: pulumi.String(\"s3://elasticmapreduce/bootstrap-actions/run-if\"),\n\t\t\t\t\tName: pulumi.String(\"runif\"),\n\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"instance.isMaster=true\"),\n\t\t\t\t\t\tpulumi.String(\"echo running on master node\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tConfigurationsJson: pulumi.String(` [\n {\n \\\"Classification\\\": \\\"hadoop-env\\\",\n \\\"Configurations\\\": [\n {\n \\\"Classification\\\": \\\"export\\\",\n \\\"Properties\\\": {\n \\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n }\n }\n ],\n \\\"Properties\\\": {}\n },\n {\n \\\"Classification\\\": \\\"spark-env\\\",\n \\\"Configurations\\\": [\n {\n \\\"Classification\\\": \\\"export\\\",\n \\\"Properties\\\": {\n \\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n }\n }\n ],\n \\\"Properties\\\": {}\n }\n ]\n`),\n\t\t\tServiceRole: pulumi.Any(iamEmrServiceRole.Arn),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.emr.Cluster;\nimport com.pulumi.aws.emr.ClusterArgs;\nimport com.pulumi.aws.emr.inputs.ClusterEc2AttributesArgs;\nimport com.pulumi.aws.emr.inputs.ClusterMasterInstanceGroupArgs;\nimport com.pulumi.aws.emr.inputs.ClusterCoreInstanceGroupArgs;\nimport com.pulumi.aws.emr.inputs.ClusterBootstrapActionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"emr-test-arn\")\n .releaseLabel(\"emr-4.6.0\")\n .applications(\"Spark\")\n .additionalInfo(\"\"\"\n{\n \\\"instanceAwsClientConfiguration\\\": {\n \\\"proxyPort\\\": 8099,\n \\\"proxyHost\\\": \\\"myproxy.example.com\\\"\n }\n}\n \"\"\")\n .terminationProtection(false)\n .keepJobFlowAliveWhenNoSteps(true)\n .ec2Attributes(ClusterEc2AttributesArgs.builder()\n .subnetId(main.id())\n .emrManagedMasterSecurityGroup(sg.id())\n .emrManagedSlaveSecurityGroup(sg.id())\n .instanceProfile(emrProfile.arn())\n .build())\n .masterInstanceGroup(ClusterMasterInstanceGroupArgs.builder()\n .instanceType(\"m4.large\")\n .build())\n .coreInstanceGroup(ClusterCoreInstanceGroupArgs.builder()\n .instanceType(\"c4.large\")\n .instanceCount(1)\n .ebsConfigs(ClusterCoreInstanceGroupEbsConfigArgs.builder()\n .size(40)\n .type(\"gp2\")\n .volumesPerInstance(1)\n .build())\n .bidPrice(\"0.30\")\n .autoscalingPolicy(\"\"\"\n{\n\\\"Constraints\\\": {\n \\\"MinCapacity\\\": 1,\n \\\"MaxCapacity\\\": 2\n},\n\\\"Rules\\\": [\n {\n \\\"Name\\\": \\\"ScaleOutMemoryPercentage\\\",\n \\\"Description\\\": \\\"Scale out if YARNMemoryAvailablePercentage is less than 15\\\",\n \\\"Action\\\": {\n \\\"SimpleScalingPolicyConfiguration\\\": {\n \\\"AdjustmentType\\\": \\\"CHANGE_IN_CAPACITY\\\",\n \\\"ScalingAdjustment\\\": 1,\n \\\"CoolDown\\\": 300\n }\n },\n \\\"Trigger\\\": {\n \\\"CloudWatchAlarmDefinition\\\": {\n \\\"ComparisonOperator\\\": \\\"LESS_THAN\\\",\n \\\"EvaluationPeriods\\\": 1,\n \\\"MetricName\\\": \\\"YARNMemoryAvailablePercentage\\\",\n \\\"Namespace\\\": \\\"AWS/ElasticMapReduce\\\",\n \\\"Period\\\": 300,\n \\\"Statistic\\\": \\\"AVERAGE\\\",\n \\\"Threshold\\\": 15.0,\n \\\"Unit\\\": \\\"PERCENT\\\"\n }\n }\n }\n]\n}\n \"\"\")\n .build())\n .ebsRootVolumeSize(100)\n .tags(Map.ofEntries(\n Map.entry(\"role\", \"rolename\"),\n Map.entry(\"env\", \"env\")\n ))\n .bootstrapActions(ClusterBootstrapActionArgs.builder()\n .path(\"s3://elasticmapreduce/bootstrap-actions/run-if\")\n .name(\"runif\")\n .args( \n \"instance.isMaster=true\",\n \"echo running on master node\")\n .build())\n .configurationsJson(\"\"\"\n [\n {\n \\\"Classification\\\": \\\"hadoop-env\\\",\n \\\"Configurations\\\": [\n {\n \\\"Classification\\\": \\\"export\\\",\n \\\"Properties\\\": {\n \\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n }\n }\n ],\n \\\"Properties\\\": {}\n },\n {\n \\\"Classification\\\": \\\"spark-env\\\",\n \\\"Configurations\\\": [\n {\n \\\"Classification\\\": \\\"export\\\",\n \\\"Properties\\\": {\n \\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n }\n }\n ],\n \\\"Properties\\\": {}\n }\n ]\n \"\"\")\n .serviceRole(iamEmrServiceRole.arn())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: aws:emr:Cluster\n properties:\n name: emr-test-arn\n releaseLabel: emr-4.6.0\n applications:\n - Spark\n additionalInfo: |\n {\n \\\"instanceAwsClientConfiguration\\\": {\n \\\"proxyPort\\\": 8099,\n \\\"proxyHost\\\": \\\"myproxy.example.com\\\"\n }\n }\n terminationProtection: false\n keepJobFlowAliveWhenNoSteps: true\n ec2Attributes:\n subnetId: ${main.id}\n emrManagedMasterSecurityGroup: ${sg.id}\n emrManagedSlaveSecurityGroup: ${sg.id}\n instanceProfile: ${emrProfile.arn}\n masterInstanceGroup:\n instanceType: m4.large\n coreInstanceGroup:\n instanceType: c4.large\n instanceCount: 1\n ebsConfigs:\n - size: '40'\n type: gp2\n volumesPerInstance: 1\n bidPrice: '0.30'\n autoscalingPolicy: |\n {\n \\\"Constraints\\\": {\n \\\"MinCapacity\\\": 1,\n \\\"MaxCapacity\\\": 2\n },\n \\\"Rules\\\": [\n {\n \\\"Name\\\": \\\"ScaleOutMemoryPercentage\\\",\n \\\"Description\\\": \\\"Scale out if YARNMemoryAvailablePercentage is less than 15\\\",\n \\\"Action\\\": {\n \\\"SimpleScalingPolicyConfiguration\\\": {\n \\\"AdjustmentType\\\": \\\"CHANGE_IN_CAPACITY\\\",\n \\\"ScalingAdjustment\\\": 1,\n \\\"CoolDown\\\": 300\n }\n },\n \\\"Trigger\\\": {\n \\\"CloudWatchAlarmDefinition\\\": {\n \\\"ComparisonOperator\\\": \\\"LESS_THAN\\\",\n \\\"EvaluationPeriods\\\": 1,\n \\\"MetricName\\\": \\\"YARNMemoryAvailablePercentage\\\",\n \\\"Namespace\\\": \\\"AWS/ElasticMapReduce\\\",\n \\\"Period\\\": 300,\n \\\"Statistic\\\": \\\"AVERAGE\\\",\n \\\"Threshold\\\": 15.0,\n \\\"Unit\\\": \\\"PERCENT\\\"\n }\n }\n }\n ]\n }\n ebsRootVolumeSize: 100\n tags:\n role: rolename\n env: env\n bootstrapActions:\n - path: s3://elasticmapreduce/bootstrap-actions/run-if\n name: runif\n args:\n - instance.isMaster=true\n - echo running on master node\n configurationsJson: |2\n [\n {\n \\\"Classification\\\": \\\"hadoop-env\\\",\n \\\"Configurations\\\": [\n {\n \\\"Classification\\\": \\\"export\\\",\n \\\"Properties\\\": {\n \\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n }\n }\n ],\n \\\"Properties\\\": {}\n },\n {\n \\\"Classification\\\": \\\"spark-env\\\",\n \\\"Configurations\\\": [\n {\n \\\"Classification\\\": \\\"export\\\",\n \\\"Properties\\\": {\n \\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n }\n }\n ],\n \\\"Properties\\\": {}\n }\n ]\n serviceRole: ${iamEmrServiceRole.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThe \u003cspan pulumi-lang-nodejs=\"`aws.emr.Cluster`\" pulumi-lang-dotnet=\"`aws.emr.Cluster`\" pulumi-lang-go=\"`emr.Cluster`\" pulumi-lang-python=\"`emr.Cluster`\" pulumi-lang-yaml=\"`aws.emr.Cluster`\" pulumi-lang-java=\"`aws.emr.Cluster`\"\u003e`aws.emr.Cluster`\u003c/span\u003e resource typically requires two IAM roles, one for the EMR Cluster to use as a service role, and another is assigned to every EC2 instance in a cluster and each application process that runs on a cluster assumes this role for permissions to interact with other AWS services. An additional role, the Auto Scaling role, is required if your cluster uses automatic scaling in Amazon EMR.\n\nThe default AWS managed EMR service role is called `EMR_DefaultRole` with Amazon managed policy `AmazonEMRServicePolicy_v2` attached. The name of default instance profile role is `EMR_EC2_DefaultRole` with default managed policy `AmazonElasticMapReduceforEC2Role` attached, but it is on the path to deprecation and will not be replaced with another default managed policy. You'll need to create and specify an instance profile to replace the deprecated role and default policy. See the [Configure IAM service roles for Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles.html) guide for more information on these IAM roles. There is also a fully-bootable example Pulumi configuration at the bottom of this page.\n\n### Instance Fleet\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.emr.Cluster(\"example\", {\n masterInstanceFleet: {\n instanceTypeConfigs: [{\n instanceType: \"m4.xlarge\",\n }],\n targetOnDemandCapacity: 1,\n },\n coreInstanceFleet: {\n instanceTypeConfigs: [\n {\n bidPriceAsPercentageOfOnDemandPrice: 80,\n ebsConfigs: [{\n size: 100,\n type: \"gp2\",\n volumesPerInstance: 1,\n }],\n instanceType: \"m3.xlarge\",\n weightedCapacity: 1,\n },\n {\n bidPriceAsPercentageOfOnDemandPrice: 100,\n ebsConfigs: [{\n size: 100,\n type: \"gp2\",\n volumesPerInstance: 1,\n }],\n instanceType: \"m4.xlarge\",\n weightedCapacity: 1,\n },\n {\n bidPriceAsPercentageOfOnDemandPrice: 100,\n ebsConfigs: [{\n size: 100,\n type: \"gp2\",\n volumesPerInstance: 1,\n }],\n instanceType: \"m4.2xlarge\",\n weightedCapacity: 2,\n },\n ],\n launchSpecifications: {\n spotSpecifications: [{\n allocationStrategy: \"capacity-optimized\",\n blockDurationMinutes: 0,\n timeoutAction: \"SWITCH_TO_ON_DEMAND\",\n timeoutDurationMinutes: 10,\n }],\n },\n name: \"core fleet\",\n targetOnDemandCapacity: 2,\n targetSpotCapacity: 2,\n },\n});\nconst task = new aws.emr.InstanceFleet(\"task\", {\n clusterId: example.id,\n instanceTypeConfigs: [\n {\n bidPriceAsPercentageOfOnDemandPrice: 100,\n ebsConfigs: [{\n size: 100,\n type: \"gp2\",\n volumesPerInstance: 1,\n }],\n instanceType: \"m4.xlarge\",\n weightedCapacity: 1,\n },\n {\n bidPriceAsPercentageOfOnDemandPrice: 100,\n ebsConfigs: [{\n size: 100,\n type: \"gp2\",\n volumesPerInstance: 1,\n }],\n instanceType: \"m4.2xlarge\",\n weightedCapacity: 2,\n },\n ],\n launchSpecifications: {\n spotSpecifications: [{\n allocationStrategy: \"capacity-optimized\",\n blockDurationMinutes: 0,\n timeoutAction: \"TERMINATE_CLUSTER\",\n timeoutDurationMinutes: 10,\n }],\n },\n name: \"task fleet\",\n targetOnDemandCapacity: 1,\n targetSpotCapacity: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.emr.Cluster(\"example\",\n master_instance_fleet={\n \"instance_type_configs\": [{\n \"instance_type\": \"m4.xlarge\",\n }],\n \"target_on_demand_capacity\": 1,\n },\n core_instance_fleet={\n \"instance_type_configs\": [\n {\n \"bid_price_as_percentage_of_on_demand_price\": 80,\n \"ebs_configs\": [{\n \"size\": 100,\n \"type\": \"gp2\",\n \"volumes_per_instance\": 1,\n }],\n \"instance_type\": \"m3.xlarge\",\n \"weighted_capacity\": 1,\n },\n {\n \"bid_price_as_percentage_of_on_demand_price\": 100,\n \"ebs_configs\": [{\n \"size\": 100,\n \"type\": \"gp2\",\n \"volumes_per_instance\": 1,\n }],\n \"instance_type\": \"m4.xlarge\",\n \"weighted_capacity\": 1,\n },\n {\n \"bid_price_as_percentage_of_on_demand_price\": 100,\n \"ebs_configs\": [{\n \"size\": 100,\n \"type\": \"gp2\",\n \"volumes_per_instance\": 1,\n }],\n \"instance_type\": \"m4.2xlarge\",\n \"weighted_capacity\": 2,\n },\n ],\n \"launch_specifications\": {\n \"spot_specifications\": [{\n \"allocation_strategy\": \"capacity-optimized\",\n \"block_duration_minutes\": 0,\n \"timeout_action\": \"SWITCH_TO_ON_DEMAND\",\n \"timeout_duration_minutes\": 10,\n }],\n },\n \"name\": \"core fleet\",\n \"target_on_demand_capacity\": 2,\n \"target_spot_capacity\": 2,\n })\ntask = aws.emr.InstanceFleet(\"task\",\n cluster_id=example.id,\n instance_type_configs=[\n {\n \"bid_price_as_percentage_of_on_demand_price\": 100,\n \"ebs_configs\": [{\n \"size\": 100,\n \"type\": \"gp2\",\n \"volumes_per_instance\": 1,\n }],\n \"instance_type\": \"m4.xlarge\",\n \"weighted_capacity\": 1,\n },\n {\n \"bid_price_as_percentage_of_on_demand_price\": 100,\n \"ebs_configs\": [{\n \"size\": 100,\n \"type\": \"gp2\",\n \"volumes_per_instance\": 1,\n }],\n \"instance_type\": \"m4.2xlarge\",\n \"weighted_capacity\": 2,\n },\n ],\n launch_specifications={\n \"spot_specifications\": [{\n \"allocation_strategy\": \"capacity-optimized\",\n \"block_duration_minutes\": 0,\n \"timeout_action\": \"TERMINATE_CLUSTER\",\n \"timeout_duration_minutes\": 10,\n }],\n },\n name=\"task fleet\",\n target_on_demand_capacity=1,\n target_spot_capacity=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Emr.Cluster(\"example\", new()\n {\n MasterInstanceFleet = new Aws.Emr.Inputs.ClusterMasterInstanceFleetArgs\n {\n InstanceTypeConfigs = new[]\n {\n new Aws.Emr.Inputs.ClusterMasterInstanceFleetInstanceTypeConfigArgs\n {\n InstanceType = \"m4.xlarge\",\n },\n },\n TargetOnDemandCapacity = 1,\n },\n CoreInstanceFleet = new Aws.Emr.Inputs.ClusterCoreInstanceFleetArgs\n {\n InstanceTypeConfigs = new[]\n {\n new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigArgs\n {\n BidPriceAsPercentageOfOnDemandPrice = 80,\n EbsConfigs = new[]\n {\n new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs\n {\n Size = 100,\n Type = \"gp2\",\n VolumesPerInstance = 1,\n },\n },\n InstanceType = \"m3.xlarge\",\n WeightedCapacity = 1,\n },\n new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigArgs\n {\n BidPriceAsPercentageOfOnDemandPrice = 100,\n EbsConfigs = new[]\n {\n new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs\n {\n Size = 100,\n Type = \"gp2\",\n VolumesPerInstance = 1,\n },\n },\n InstanceType = \"m4.xlarge\",\n WeightedCapacity = 1,\n },\n new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigArgs\n {\n BidPriceAsPercentageOfOnDemandPrice = 100,\n EbsConfigs = new[]\n {\n new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs\n {\n Size = 100,\n Type = \"gp2\",\n VolumesPerInstance = 1,\n },\n },\n InstanceType = \"m4.2xlarge\",\n WeightedCapacity = 2,\n },\n },\n LaunchSpecifications = new Aws.Emr.Inputs.ClusterCoreInstanceFleetLaunchSpecificationsArgs\n {\n SpotSpecifications = new[]\n {\n new Aws.Emr.Inputs.ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecificationArgs\n {\n AllocationStrategy = \"capacity-optimized\",\n BlockDurationMinutes = 0,\n TimeoutAction = \"SWITCH_TO_ON_DEMAND\",\n TimeoutDurationMinutes = 10,\n },\n },\n },\n Name = \"core fleet\",\n TargetOnDemandCapacity = 2,\n TargetSpotCapacity = 2,\n },\n });\n\n var task = new Aws.Emr.InstanceFleet(\"task\", new()\n {\n ClusterId = example.Id,\n InstanceTypeConfigs = new[]\n {\n new Aws.Emr.Inputs.InstanceFleetInstanceTypeConfigArgs\n {\n BidPriceAsPercentageOfOnDemandPrice = 100,\n EbsConfigs = new[]\n {\n new Aws.Emr.Inputs.InstanceFleetInstanceTypeConfigEbsConfigArgs\n {\n Size = 100,\n Type = \"gp2\",\n VolumesPerInstance = 1,\n },\n },\n InstanceType = \"m4.xlarge\",\n WeightedCapacity = 1,\n },\n new Aws.Emr.Inputs.InstanceFleetInstanceTypeConfigArgs\n {\n BidPriceAsPercentageOfOnDemandPrice = 100,\n EbsConfigs = new[]\n {\n new Aws.Emr.Inputs.InstanceFleetInstanceTypeConfigEbsConfigArgs\n {\n Size = 100,\n Type = \"gp2\",\n VolumesPerInstance = 1,\n },\n },\n InstanceType = \"m4.2xlarge\",\n WeightedCapacity = 2,\n },\n },\n LaunchSpecifications = new Aws.Emr.Inputs.InstanceFleetLaunchSpecificationsArgs\n {\n SpotSpecifications = new[]\n {\n new Aws.Emr.Inputs.InstanceFleetLaunchSpecificationsSpotSpecificationArgs\n {\n AllocationStrategy = \"capacity-optimized\",\n BlockDurationMinutes = 0,\n TimeoutAction = \"TERMINATE_CLUSTER\",\n TimeoutDurationMinutes = 10,\n },\n },\n },\n Name = \"task fleet\",\n TargetOnDemandCapacity = 1,\n TargetSpotCapacity = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := emr.NewCluster(ctx, \"example\", \u0026emr.ClusterArgs{\n\t\t\tMasterInstanceFleet: \u0026emr.ClusterMasterInstanceFleetArgs{\n\t\t\t\tInstanceTypeConfigs: emr.ClusterMasterInstanceFleetInstanceTypeConfigArray{\n\t\t\t\t\t\u0026emr.ClusterMasterInstanceFleetInstanceTypeConfigArgs{\n\t\t\t\t\t\tInstanceType: pulumi.String(\"m4.xlarge\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTargetOnDemandCapacity: pulumi.Int(1),\n\t\t\t},\n\t\t\tCoreInstanceFleet: \u0026emr.ClusterCoreInstanceFleetArgs{\n\t\t\t\tInstanceTypeConfigs: emr.ClusterCoreInstanceFleetInstanceTypeConfigArray{\n\t\t\t\t\t\u0026emr.ClusterCoreInstanceFleetInstanceTypeConfigArgs{\n\t\t\t\t\t\tBidPriceAsPercentageOfOnDemandPrice: pulumi.Float64(80),\n\t\t\t\t\t\tEbsConfigs: emr.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArray{\n\t\t\t\t\t\t\t\u0026emr.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs{\n\t\t\t\t\t\t\t\tSize: pulumi.Int(100),\n\t\t\t\t\t\t\t\tType: pulumi.String(\"gp2\"),\n\t\t\t\t\t\t\t\tVolumesPerInstance: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tInstanceType: pulumi.String(\"m3.xlarge\"),\n\t\t\t\t\t\tWeightedCapacity: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026emr.ClusterCoreInstanceFleetInstanceTypeConfigArgs{\n\t\t\t\t\t\tBidPriceAsPercentageOfOnDemandPrice: pulumi.Float64(100),\n\t\t\t\t\t\tEbsConfigs: emr.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArray{\n\t\t\t\t\t\t\t\u0026emr.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs{\n\t\t\t\t\t\t\t\tSize: pulumi.Int(100),\n\t\t\t\t\t\t\t\tType: pulumi.String(\"gp2\"),\n\t\t\t\t\t\t\t\tVolumesPerInstance: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tInstanceType: pulumi.String(\"m4.xlarge\"),\n\t\t\t\t\t\tWeightedCapacity: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026emr.ClusterCoreInstanceFleetInstanceTypeConfigArgs{\n\t\t\t\t\t\tBidPriceAsPercentageOfOnDemandPrice: pulumi.Float64(100),\n\t\t\t\t\t\tEbsConfigs: emr.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArray{\n\t\t\t\t\t\t\t\u0026emr.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs{\n\t\t\t\t\t\t\t\tSize: pulumi.Int(100),\n\t\t\t\t\t\t\t\tType: pulumi.String(\"gp2\"),\n\t\t\t\t\t\t\t\tVolumesPerInstance: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tInstanceType: pulumi.String(\"m4.2xlarge\"),\n\t\t\t\t\t\tWeightedCapacity: pulumi.Int(2),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tLaunchSpecifications: \u0026emr.ClusterCoreInstanceFleetLaunchSpecificationsArgs{\n\t\t\t\t\tSpotSpecifications: emr.ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecificationArray{\n\t\t\t\t\t\t\u0026emr.ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecificationArgs{\n\t\t\t\t\t\t\tAllocationStrategy: pulumi.String(\"capacity-optimized\"),\n\t\t\t\t\t\t\tBlockDurationMinutes: pulumi.Int(0),\n\t\t\t\t\t\t\tTimeoutAction: pulumi.String(\"SWITCH_TO_ON_DEMAND\"),\n\t\t\t\t\t\t\tTimeoutDurationMinutes: pulumi.Int(10),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tName: pulumi.String(\"core fleet\"),\n\t\t\t\tTargetOnDemandCapacity: pulumi.Int(2),\n\t\t\t\tTargetSpotCapacity: pulumi.Int(2),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = emr.NewInstanceFleet(ctx, \"task\", \u0026emr.InstanceFleetArgs{\n\t\t\tClusterId: example.ID(),\n\t\t\tInstanceTypeConfigs: emr.InstanceFleetInstanceTypeConfigArray{\n\t\t\t\t\u0026emr.InstanceFleetInstanceTypeConfigArgs{\n\t\t\t\t\tBidPriceAsPercentageOfOnDemandPrice: pulumi.Float64(100),\n\t\t\t\t\tEbsConfigs: emr.InstanceFleetInstanceTypeConfigEbsConfigArray{\n\t\t\t\t\t\t\u0026emr.InstanceFleetInstanceTypeConfigEbsConfigArgs{\n\t\t\t\t\t\t\tSize: pulumi.Int(100),\n\t\t\t\t\t\t\tType: pulumi.String(\"gp2\"),\n\t\t\t\t\t\t\tVolumesPerInstance: pulumi.Int(1),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tInstanceType: pulumi.String(\"m4.xlarge\"),\n\t\t\t\t\tWeightedCapacity: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\t\u0026emr.InstanceFleetInstanceTypeConfigArgs{\n\t\t\t\t\tBidPriceAsPercentageOfOnDemandPrice: pulumi.Float64(100),\n\t\t\t\t\tEbsConfigs: emr.InstanceFleetInstanceTypeConfigEbsConfigArray{\n\t\t\t\t\t\t\u0026emr.InstanceFleetInstanceTypeConfigEbsConfigArgs{\n\t\t\t\t\t\t\tSize: pulumi.Int(100),\n\t\t\t\t\t\t\tType: pulumi.String(\"gp2\"),\n\t\t\t\t\t\t\tVolumesPerInstance: pulumi.Int(1),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tInstanceType: pulumi.String(\"m4.2xlarge\"),\n\t\t\t\t\tWeightedCapacity: pulumi.Int(2),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLaunchSpecifications: \u0026emr.InstanceFleetLaunchSpecificationsArgs{\n\t\t\t\tSpotSpecifications: emr.InstanceFleetLaunchSpecificationsSpotSpecificationArray{\n\t\t\t\t\t\u0026emr.InstanceFleetLaunchSpecificationsSpotSpecificationArgs{\n\t\t\t\t\t\tAllocationStrategy: pulumi.String(\"capacity-optimized\"),\n\t\t\t\t\t\tBlockDurationMinutes: pulumi.Int(0),\n\t\t\t\t\t\tTimeoutAction: pulumi.String(\"TERMINATE_CLUSTER\"),\n\t\t\t\t\t\tTimeoutDurationMinutes: pulumi.Int(10),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"task fleet\"),\n\t\t\tTargetOnDemandCapacity: pulumi.Int(1),\n\t\t\tTargetSpotCapacity: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.emr.Cluster;\nimport com.pulumi.aws.emr.ClusterArgs;\nimport com.pulumi.aws.emr.inputs.ClusterMasterInstanceFleetArgs;\nimport com.pulumi.aws.emr.inputs.ClusterCoreInstanceFleetArgs;\nimport com.pulumi.aws.emr.inputs.ClusterCoreInstanceFleetLaunchSpecificationsArgs;\nimport com.pulumi.aws.emr.InstanceFleet;\nimport com.pulumi.aws.emr.InstanceFleetArgs;\nimport com.pulumi.aws.emr.inputs.InstanceFleetInstanceTypeConfigArgs;\nimport com.pulumi.aws.emr.inputs.InstanceFleetLaunchSpecificationsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Cluster(\"example\", ClusterArgs.builder()\n .masterInstanceFleet(ClusterMasterInstanceFleetArgs.builder()\n .instanceTypeConfigs(ClusterMasterInstanceFleetInstanceTypeConfigArgs.builder()\n .instanceType(\"m4.xlarge\")\n .build())\n .targetOnDemandCapacity(1)\n .build())\n .coreInstanceFleet(ClusterCoreInstanceFleetArgs.builder()\n .instanceTypeConfigs( \n ClusterCoreInstanceFleetInstanceTypeConfigArgs.builder()\n .bidPriceAsPercentageOfOnDemandPrice(80.0)\n .ebsConfigs(ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs.builder()\n .size(100)\n .type(\"gp2\")\n .volumesPerInstance(1)\n .build())\n .instanceType(\"m3.xlarge\")\n .weightedCapacity(1)\n .build(),\n ClusterCoreInstanceFleetInstanceTypeConfigArgs.builder()\n .bidPriceAsPercentageOfOnDemandPrice(100.0)\n .ebsConfigs(ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs.builder()\n .size(100)\n .type(\"gp2\")\n .volumesPerInstance(1)\n .build())\n .instanceType(\"m4.xlarge\")\n .weightedCapacity(1)\n .build(),\n ClusterCoreInstanceFleetInstanceTypeConfigArgs.builder()\n .bidPriceAsPercentageOfOnDemandPrice(100.0)\n .ebsConfigs(ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs.builder()\n .size(100)\n .type(\"gp2\")\n .volumesPerInstance(1)\n .build())\n .instanceType(\"m4.2xlarge\")\n .weightedCapacity(2)\n .build())\n .launchSpecifications(ClusterCoreInstanceFleetLaunchSpecificationsArgs.builder()\n .spotSpecifications(ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecificationArgs.builder()\n .allocationStrategy(\"capacity-optimized\")\n .blockDurationMinutes(0)\n .timeoutAction(\"SWITCH_TO_ON_DEMAND\")\n .timeoutDurationMinutes(10)\n .build())\n .build())\n .name(\"core fleet\")\n .targetOnDemandCapacity(2)\n .targetSpotCapacity(2)\n .build())\n .build());\n\n var task = new InstanceFleet(\"task\", InstanceFleetArgs.builder()\n .clusterId(example.id())\n .instanceTypeConfigs( \n InstanceFleetInstanceTypeConfigArgs.builder()\n .bidPriceAsPercentageOfOnDemandPrice(100.0)\n .ebsConfigs(InstanceFleetInstanceTypeConfigEbsConfigArgs.builder()\n .size(100)\n .type(\"gp2\")\n .volumesPerInstance(1)\n .build())\n .instanceType(\"m4.xlarge\")\n .weightedCapacity(1)\n .build(),\n InstanceFleetInstanceTypeConfigArgs.builder()\n .bidPriceAsPercentageOfOnDemandPrice(100.0)\n .ebsConfigs(InstanceFleetInstanceTypeConfigEbsConfigArgs.builder()\n .size(100)\n .type(\"gp2\")\n .volumesPerInstance(1)\n .build())\n .instanceType(\"m4.2xlarge\")\n .weightedCapacity(2)\n .build())\n .launchSpecifications(InstanceFleetLaunchSpecificationsArgs.builder()\n .spotSpecifications(InstanceFleetLaunchSpecificationsSpotSpecificationArgs.builder()\n .allocationStrategy(\"capacity-optimized\")\n .blockDurationMinutes(0)\n .timeoutAction(\"TERMINATE_CLUSTER\")\n .timeoutDurationMinutes(10)\n .build())\n .build())\n .name(\"task fleet\")\n .targetOnDemandCapacity(1)\n .targetSpotCapacity(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:emr:Cluster\n properties:\n masterInstanceFleet:\n instanceTypeConfigs:\n - instanceType: m4.xlarge\n targetOnDemandCapacity: 1\n coreInstanceFleet:\n instanceTypeConfigs:\n - bidPriceAsPercentageOfOnDemandPrice: 80\n ebsConfigs:\n - size: 100\n type: gp2\n volumesPerInstance: 1\n instanceType: m3.xlarge\n weightedCapacity: 1\n - bidPriceAsPercentageOfOnDemandPrice: 100\n ebsConfigs:\n - size: 100\n type: gp2\n volumesPerInstance: 1\n instanceType: m4.xlarge\n weightedCapacity: 1\n - bidPriceAsPercentageOfOnDemandPrice: 100\n ebsConfigs:\n - size: 100\n type: gp2\n volumesPerInstance: 1\n instanceType: m4.2xlarge\n weightedCapacity: 2\n launchSpecifications:\n spotSpecifications:\n - allocationStrategy: capacity-optimized\n blockDurationMinutes: 0\n timeoutAction: SWITCH_TO_ON_DEMAND\n timeoutDurationMinutes: 10\n name: core fleet\n targetOnDemandCapacity: 2\n targetSpotCapacity: 2\n task:\n type: aws:emr:InstanceFleet\n properties:\n clusterId: ${example.id}\n instanceTypeConfigs:\n - bidPriceAsPercentageOfOnDemandPrice: 100\n ebsConfigs:\n - size: 100\n type: gp2\n volumesPerInstance: 1\n instanceType: m4.xlarge\n weightedCapacity: 1\n - bidPriceAsPercentageOfOnDemandPrice: 100\n ebsConfigs:\n - size: 100\n type: gp2\n volumesPerInstance: 1\n instanceType: m4.2xlarge\n weightedCapacity: 2\n launchSpecifications:\n spotSpecifications:\n - allocationStrategy: capacity-optimized\n blockDurationMinutes: 0\n timeoutAction: TERMINATE_CLUSTER\n timeoutDurationMinutes: 10\n name: task fleet\n targetOnDemandCapacity: 1\n targetSpotCapacity: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Enable Debug Logging\n\n[Debug logging in EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-debugging.html) is implemented as a step. It is highly recommended that you utilize the resource options configuration with `ignoreChanges` if other steps are being managed outside of this provider.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.emr.Cluster(\"example\", {steps: [{\n actionOnFailure: \"TERMINATE_CLUSTER\",\n name: \"Setup Hadoop Debugging\",\n hadoopJarStep: {\n jar: \"command-runner.jar\",\n args: [\"state-pusher-script\"],\n },\n}]});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.emr.Cluster(\"example\", steps=[{\n \"action_on_failure\": \"TERMINATE_CLUSTER\",\n \"name\": \"Setup Hadoop Debugging\",\n \"hadoop_jar_step\": {\n \"jar\": \"command-runner.jar\",\n \"args\": [\"state-pusher-script\"],\n },\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Emr.Cluster(\"example\", new()\n {\n Steps = new[]\n {\n new Aws.Emr.Inputs.ClusterStepArgs\n {\n ActionOnFailure = \"TERMINATE_CLUSTER\",\n Name = \"Setup Hadoop Debugging\",\n HadoopJarStep = new Aws.Emr.Inputs.ClusterStepHadoopJarStepArgs\n {\n Jar = \"command-runner.jar\",\n Args = new[]\n {\n \"state-pusher-script\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := emr.NewCluster(ctx, \"example\", \u0026emr.ClusterArgs{\n\t\t\tSteps: emr.ClusterStepArray{\n\t\t\t\t\u0026emr.ClusterStepArgs{\n\t\t\t\t\tActionOnFailure: pulumi.String(\"TERMINATE_CLUSTER\"),\n\t\t\t\t\tName: pulumi.String(\"Setup Hadoop Debugging\"),\n\t\t\t\t\tHadoopJarStep: \u0026emr.ClusterStepHadoopJarStepArgs{\n\t\t\t\t\t\tJar: pulumi.String(\"command-runner.jar\"),\n\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"state-pusher-script\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.emr.Cluster;\nimport com.pulumi.aws.emr.ClusterArgs;\nimport com.pulumi.aws.emr.inputs.ClusterStepArgs;\nimport com.pulumi.aws.emr.inputs.ClusterStepHadoopJarStepArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Cluster(\"example\", ClusterArgs.builder()\n .steps(ClusterStepArgs.builder()\n .actionOnFailure(\"TERMINATE_CLUSTER\")\n .name(\"Setup Hadoop Debugging\")\n .hadoopJarStep(ClusterStepHadoopJarStepArgs.builder()\n .jar(\"command-runner.jar\")\n .args(\"state-pusher-script\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:emr:Cluster\n properties:\n steps:\n - actionOnFailure: TERMINATE_CLUSTER\n name: Setup Hadoop Debugging\n hadoopJarStep:\n jar: command-runner.jar\n args:\n - state-pusher-script\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Multiple Node Master Instance Group\n\nAvailable in EMR version 5.23.0 and later, an EMR Cluster can be launched with three master nodes for high availability. Additional information about this functionality and its requirements can be found in the [EMR Management Guide](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-ha.html).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// This configuration is for illustrative purposes and highlights\n// only relevant configurations for working with this functionality.\n// Map public IP on launch must be enabled for public (Internet accessible) subnets\nconst example = new aws.ec2.Subnet(\"example\", {mapPublicIpOnLaunch: true});\nconst exampleCluster = new aws.emr.Cluster(\"example\", {\n releaseLabel: \"emr-5.24.1\",\n terminationProtection: true,\n ec2Attributes: {\n subnetId: example.id,\n },\n masterInstanceGroup: {\n instanceCount: 3,\n },\n coreInstanceGroup: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\n# This configuration is for illustrative purposes and highlights\n# only relevant configurations for working with this functionality.\n# Map public IP on launch must be enabled for public (Internet accessible) subnets\nexample = aws.ec2.Subnet(\"example\", map_public_ip_on_launch=True)\nexample_cluster = aws.emr.Cluster(\"example\",\n release_label=\"emr-5.24.1\",\n termination_protection=True,\n ec2_attributes={\n \"subnet_id\": example.id,\n },\n master_instance_group={\n \"instance_count\": 3,\n },\n core_instance_group={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // This configuration is for illustrative purposes and highlights\n // only relevant configurations for working with this functionality.\n // Map public IP on launch must be enabled for public (Internet accessible) subnets\n var example = new Aws.Ec2.Subnet(\"example\", new()\n {\n MapPublicIpOnLaunch = true,\n });\n\n var exampleCluster = new Aws.Emr.Cluster(\"example\", new()\n {\n ReleaseLabel = \"emr-5.24.1\",\n TerminationProtection = true,\n Ec2Attributes = new Aws.Emr.Inputs.ClusterEc2AttributesArgs\n {\n SubnetId = example.Id,\n },\n MasterInstanceGroup = new Aws.Emr.Inputs.ClusterMasterInstanceGroupArgs\n {\n InstanceCount = 3,\n },\n CoreInstanceGroup = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// This configuration is for illustrative purposes and highlights\n\t\t// only relevant configurations for working with this functionality.\n\t\t// Map public IP on launch must be enabled for public (Internet accessible) subnets\n\t\texample, err := ec2.NewSubnet(ctx, \"example\", \u0026ec2.SubnetArgs{\n\t\t\tMapPublicIpOnLaunch: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = emr.NewCluster(ctx, \"example\", \u0026emr.ClusterArgs{\n\t\t\tReleaseLabel: pulumi.String(\"emr-5.24.1\"),\n\t\t\tTerminationProtection: pulumi.Bool(true),\n\t\t\tEc2Attributes: \u0026emr.ClusterEc2AttributesArgs{\n\t\t\t\tSubnetId: example.ID(),\n\t\t\t},\n\t\t\tMasterInstanceGroup: \u0026emr.ClusterMasterInstanceGroupArgs{\n\t\t\t\tInstanceCount: pulumi.Int(3),\n\t\t\t},\n\t\t\tCoreInstanceGroup: \u0026emr.ClusterCoreInstanceGroupArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.Subnet;\nimport com.pulumi.aws.ec2.SubnetArgs;\nimport com.pulumi.aws.emr.Cluster;\nimport com.pulumi.aws.emr.ClusterArgs;\nimport com.pulumi.aws.emr.inputs.ClusterEc2AttributesArgs;\nimport com.pulumi.aws.emr.inputs.ClusterMasterInstanceGroupArgs;\nimport com.pulumi.aws.emr.inputs.ClusterCoreInstanceGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // This configuration is for illustrative purposes and highlights\n // only relevant configurations for working with this functionality.\n // Map public IP on launch must be enabled for public (Internet accessible) subnets\n var example = new Subnet(\"example\", SubnetArgs.builder()\n .mapPublicIpOnLaunch(true)\n .build());\n\n var exampleCluster = new Cluster(\"exampleCluster\", ClusterArgs.builder()\n .releaseLabel(\"emr-5.24.1\")\n .terminationProtection(true)\n .ec2Attributes(ClusterEc2AttributesArgs.builder()\n .subnetId(example.id())\n .build())\n .masterInstanceGroup(ClusterMasterInstanceGroupArgs.builder()\n .instanceCount(3)\n .build())\n .coreInstanceGroup(ClusterCoreInstanceGroupArgs.builder()\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # This configuration is for illustrative purposes and highlights\n # only relevant configurations for working with this functionality.\n\n # Map public IP on launch must be enabled for public (Internet accessible) subnets\n example:\n type: aws:ec2:Subnet\n properties:\n mapPublicIpOnLaunch: true\n exampleCluster:\n type: aws:emr:Cluster\n name: example\n properties:\n releaseLabel: emr-5.24.1\n terminationProtection: true\n ec2Attributes:\n subnetId: ${example.id}\n masterInstanceGroup:\n instanceCount: 3\n coreInstanceGroup: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import EMR clusters using the `id`. For example:\n\n```sh\n$ pulumi import aws:emr/cluster:Cluster cluster j-123456ABCDEF\n```\nSince the API does not return the actual values for Kerberos configurations, environments with those options set will need to use the `lifecycle` configuration block `ignore_changes` argument available to all Pulumi resources to prevent perpetual differences. For example:\n\n", "properties": { "additionalInfo": { "type": "string", @@ -295884,7 +295884,7 @@ }, "configurationsJson": { "type": "string", - "description": "JSON string for supplying list of configurations for the EMR cluster.\n\n\u003e **NOTE on \u003cspan pulumi-lang-nodejs=\"`configurationsJson`\" pulumi-lang-dotnet=\"`ConfigurationsJson`\" pulumi-lang-go=\"`configurationsJson`\" pulumi-lang-python=\"`configurations_json`\" pulumi-lang-yaml=\"`configurationsJson`\" pulumi-lang-java=\"`configurationsJson`\"\u003e`configurations_json`\u003c/span\u003e:** If the `Configurations` value is empty then you should skip the `Configurations` field instead of providing an empty list as a value, `\"Configurations\": []`.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst cluster = new aws.emr.Cluster(\"cluster\", {configurationsJson: `[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n`});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncluster = aws.emr.Cluster(\"cluster\", configurations_json=\"\"\"[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster = new Aws.Emr.Cluster(\"cluster\", new()\n {\n ConfigurationsJson = @\"[\n{\n\"\"Classification\"\": \"\"hadoop-env\"\",\n\"\"Configurations\"\": [\n{\n\"\"Classification\"\": \"\"export\"\",\n\"\"Properties\"\": {\n\"\"JAVA_HOME\"\": \"\"/usr/lib/jvm/java-1.8.0\"\"\n}\n}\n],\n\"\"Properties\"\": {}\n}\n]\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := emr.NewCluster(ctx, \"cluster\", \u0026emr.ClusterArgs{\n\t\t\tConfigurationsJson: pulumi.String(`[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.emr.Cluster;\nimport com.pulumi.aws.emr.ClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .configurationsJson(\"\"\"\n[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: aws:emr:Cluster\n properties:\n configurationsJson: |\n [\n {\n \"Classification\": \"hadoop-env\",\n \"Configurations\": [\n {\n \"Classification\": \"export\",\n \"Properties\": {\n \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n }\n }\n ],\n \"Properties\": {}\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n" + "description": "JSON string for supplying list of configurations for the EMR cluster.\n\n\u003e **NOTE on \u003cspan pulumi-lang-nodejs=\"`configurationsJson`\" pulumi-lang-dotnet=\"`ConfigurationsJson`\" pulumi-lang-go=\"`configurationsJson`\" pulumi-lang-python=\"`configurations_json`\" pulumi-lang-yaml=\"`configurationsJson`\" pulumi-lang-java=\"`configurationsJson`\"\u003e`configurations_json`\u003c/span\u003e:** If the `Configurations` value is empty then you should skip the `Configurations` field instead of providing an empty list as a value, `\"Configurations\": []`.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst cluster = new aws.emr.Cluster(\"cluster\", {configurationsJson: `[\n{\n\\\\\"Classification\\\\\": \\\\\"hadoop-env\\\\\",\n\\\\\"Configurations\\\\\": [\n{\n\\\\\"Classification\\\\\": \\\\\"export\\\\\",\n\\\\\"Properties\\\\\": {\n\\\\\"JAVA_HOME\\\\\": \\\\\"/usr/lib/jvm/java-1.8.0\\\\\"\n}\n}\n],\n\\\\\"Properties\\\\\": {}\n}\n]\n`});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncluster = aws.emr.Cluster(\"cluster\", configurations_json=\"\"\"[\n{\n\\\"Classification\\\": \\\"hadoop-env\\\",\n\\\"Configurations\\\": [\n{\n\\\"Classification\\\": \\\"export\\\",\n\\\"Properties\\\": {\n\\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n}\n}\n],\n\\\"Properties\\\": {}\n}\n]\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster = new Aws.Emr.Cluster(\"cluster\", new()\n {\n ConfigurationsJson = @\"[\n{\n\\\"\"Classification\\\"\": \\\"\"hadoop-env\\\"\",\n\\\"\"Configurations\\\"\": [\n{\n\\\"\"Classification\\\"\": \\\"\"export\\\"\",\n\\\"\"Properties\\\"\": {\n\\\"\"JAVA_HOME\\\"\": \\\"\"/usr/lib/jvm/java-1.8.0\\\"\"\n}\n}\n],\n\\\"\"Properties\\\"\": {}\n}\n]\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := emr.NewCluster(ctx, \"cluster\", \u0026emr.ClusterArgs{\n\t\t\tConfigurationsJson: pulumi.String(`[\n{\n\\\"Classification\\\": \\\"hadoop-env\\\",\n\\\"Configurations\\\": [\n{\n\\\"Classification\\\": \\\"export\\\",\n\\\"Properties\\\": {\n\\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n}\n}\n],\n\\\"Properties\\\": {}\n}\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.emr.Cluster;\nimport com.pulumi.aws.emr.ClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .configurationsJson(\"\"\"\n[\n{\n\\\"Classification\\\": \\\"hadoop-env\\\",\n\\\"Configurations\\\": [\n{\n\\\"Classification\\\": \\\"export\\\",\n\\\"Properties\\\": {\n\\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n}\n}\n],\n\\\"Properties\\\": {}\n}\n]\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: aws:emr:Cluster\n properties:\n configurationsJson: |\n [\n {\n \\\"Classification\\\": \\\"hadoop-env\\\",\n \\\"Configurations\\\": [\n {\n \\\"Classification\\\": \\\"export\\\",\n \\\"Properties\\\": {\n \\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n }\n }\n ],\n \\\"Properties\\\": {}\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n" }, "coreInstanceFleet": { "$ref": "#/types/aws:emr/ClusterCoreInstanceFleet:ClusterCoreInstanceFleet", @@ -296070,7 +296070,7 @@ }, "configurationsJson": { "type": "string", - "description": "JSON string for supplying list of configurations for the EMR cluster.\n\n\u003e **NOTE on \u003cspan pulumi-lang-nodejs=\"`configurationsJson`\" pulumi-lang-dotnet=\"`ConfigurationsJson`\" pulumi-lang-go=\"`configurationsJson`\" pulumi-lang-python=\"`configurations_json`\" pulumi-lang-yaml=\"`configurationsJson`\" pulumi-lang-java=\"`configurationsJson`\"\u003e`configurations_json`\u003c/span\u003e:** If the `Configurations` value is empty then you should skip the `Configurations` field instead of providing an empty list as a value, `\"Configurations\": []`.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst cluster = new aws.emr.Cluster(\"cluster\", {configurationsJson: `[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n`});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncluster = aws.emr.Cluster(\"cluster\", configurations_json=\"\"\"[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster = new Aws.Emr.Cluster(\"cluster\", new()\n {\n ConfigurationsJson = @\"[\n{\n\"\"Classification\"\": \"\"hadoop-env\"\",\n\"\"Configurations\"\": [\n{\n\"\"Classification\"\": \"\"export\"\",\n\"\"Properties\"\": {\n\"\"JAVA_HOME\"\": \"\"/usr/lib/jvm/java-1.8.0\"\"\n}\n}\n],\n\"\"Properties\"\": {}\n}\n]\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := emr.NewCluster(ctx, \"cluster\", \u0026emr.ClusterArgs{\n\t\t\tConfigurationsJson: pulumi.String(`[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.emr.Cluster;\nimport com.pulumi.aws.emr.ClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .configurationsJson(\"\"\"\n[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: aws:emr:Cluster\n properties:\n configurationsJson: |\n [\n {\n \"Classification\": \"hadoop-env\",\n \"Configurations\": [\n {\n \"Classification\": \"export\",\n \"Properties\": {\n \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n }\n }\n ],\n \"Properties\": {}\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "JSON string for supplying list of configurations for the EMR cluster.\n\n\u003e **NOTE on \u003cspan pulumi-lang-nodejs=\"`configurationsJson`\" pulumi-lang-dotnet=\"`ConfigurationsJson`\" pulumi-lang-go=\"`configurationsJson`\" pulumi-lang-python=\"`configurations_json`\" pulumi-lang-yaml=\"`configurationsJson`\" pulumi-lang-java=\"`configurationsJson`\"\u003e`configurations_json`\u003c/span\u003e:** If the `Configurations` value is empty then you should skip the `Configurations` field instead of providing an empty list as a value, `\"Configurations\": []`.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst cluster = new aws.emr.Cluster(\"cluster\", {configurationsJson: `[\n{\n\\\\\"Classification\\\\\": \\\\\"hadoop-env\\\\\",\n\\\\\"Configurations\\\\\": [\n{\n\\\\\"Classification\\\\\": \\\\\"export\\\\\",\n\\\\\"Properties\\\\\": {\n\\\\\"JAVA_HOME\\\\\": \\\\\"/usr/lib/jvm/java-1.8.0\\\\\"\n}\n}\n],\n\\\\\"Properties\\\\\": {}\n}\n]\n`});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncluster = aws.emr.Cluster(\"cluster\", configurations_json=\"\"\"[\n{\n\\\"Classification\\\": \\\"hadoop-env\\\",\n\\\"Configurations\\\": [\n{\n\\\"Classification\\\": \\\"export\\\",\n\\\"Properties\\\": {\n\\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n}\n}\n],\n\\\"Properties\\\": {}\n}\n]\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster = new Aws.Emr.Cluster(\"cluster\", new()\n {\n ConfigurationsJson = @\"[\n{\n\\\"\"Classification\\\"\": \\\"\"hadoop-env\\\"\",\n\\\"\"Configurations\\\"\": [\n{\n\\\"\"Classification\\\"\": \\\"\"export\\\"\",\n\\\"\"Properties\\\"\": {\n\\\"\"JAVA_HOME\\\"\": \\\"\"/usr/lib/jvm/java-1.8.0\\\"\"\n}\n}\n],\n\\\"\"Properties\\\"\": {}\n}\n]\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := emr.NewCluster(ctx, \"cluster\", \u0026emr.ClusterArgs{\n\t\t\tConfigurationsJson: pulumi.String(`[\n{\n\\\"Classification\\\": \\\"hadoop-env\\\",\n\\\"Configurations\\\": [\n{\n\\\"Classification\\\": \\\"export\\\",\n\\\"Properties\\\": {\n\\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n}\n}\n],\n\\\"Properties\\\": {}\n}\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.emr.Cluster;\nimport com.pulumi.aws.emr.ClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .configurationsJson(\"\"\"\n[\n{\n\\\"Classification\\\": \\\"hadoop-env\\\",\n\\\"Configurations\\\": [\n{\n\\\"Classification\\\": \\\"export\\\",\n\\\"Properties\\\": {\n\\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n}\n}\n],\n\\\"Properties\\\": {}\n}\n]\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: aws:emr:Cluster\n properties:\n configurationsJson: |\n [\n {\n \\\"Classification\\\": \\\"hadoop-env\\\",\n \\\"Configurations\\\": [\n {\n \\\"Classification\\\": \\\"export\\\",\n \\\"Properties\\\": {\n \\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n }\n }\n ],\n \\\"Properties\\\": {}\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "willReplaceOnChanges": true }, "coreInstanceFleet": { @@ -296265,7 +296265,7 @@ }, "configurationsJson": { "type": "string", - "description": "JSON string for supplying list of configurations for the EMR cluster.\n\n\u003e **NOTE on \u003cspan pulumi-lang-nodejs=\"`configurationsJson`\" pulumi-lang-dotnet=\"`ConfigurationsJson`\" pulumi-lang-go=\"`configurationsJson`\" pulumi-lang-python=\"`configurations_json`\" pulumi-lang-yaml=\"`configurationsJson`\" pulumi-lang-java=\"`configurationsJson`\"\u003e`configurations_json`\u003c/span\u003e:** If the `Configurations` value is empty then you should skip the `Configurations` field instead of providing an empty list as a value, `\"Configurations\": []`.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst cluster = new aws.emr.Cluster(\"cluster\", {configurationsJson: `[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n`});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncluster = aws.emr.Cluster(\"cluster\", configurations_json=\"\"\"[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster = new Aws.Emr.Cluster(\"cluster\", new()\n {\n ConfigurationsJson = @\"[\n{\n\"\"Classification\"\": \"\"hadoop-env\"\",\n\"\"Configurations\"\": [\n{\n\"\"Classification\"\": \"\"export\"\",\n\"\"Properties\"\": {\n\"\"JAVA_HOME\"\": \"\"/usr/lib/jvm/java-1.8.0\"\"\n}\n}\n],\n\"\"Properties\"\": {}\n}\n]\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := emr.NewCluster(ctx, \"cluster\", \u0026emr.ClusterArgs{\n\t\t\tConfigurationsJson: pulumi.String(`[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.emr.Cluster;\nimport com.pulumi.aws.emr.ClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .configurationsJson(\"\"\"\n[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: aws:emr:Cluster\n properties:\n configurationsJson: |\n [\n {\n \"Classification\": \"hadoop-env\",\n \"Configurations\": [\n {\n \"Classification\": \"export\",\n \"Properties\": {\n \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n }\n }\n ],\n \"Properties\": {}\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "JSON string for supplying list of configurations for the EMR cluster.\n\n\u003e **NOTE on \u003cspan pulumi-lang-nodejs=\"`configurationsJson`\" pulumi-lang-dotnet=\"`ConfigurationsJson`\" pulumi-lang-go=\"`configurationsJson`\" pulumi-lang-python=\"`configurations_json`\" pulumi-lang-yaml=\"`configurationsJson`\" pulumi-lang-java=\"`configurationsJson`\"\u003e`configurations_json`\u003c/span\u003e:** If the `Configurations` value is empty then you should skip the `Configurations` field instead of providing an empty list as a value, `\"Configurations\": []`.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst cluster = new aws.emr.Cluster(\"cluster\", {configurationsJson: `[\n{\n\\\\\"Classification\\\\\": \\\\\"hadoop-env\\\\\",\n\\\\\"Configurations\\\\\": [\n{\n\\\\\"Classification\\\\\": \\\\\"export\\\\\",\n\\\\\"Properties\\\\\": {\n\\\\\"JAVA_HOME\\\\\": \\\\\"/usr/lib/jvm/java-1.8.0\\\\\"\n}\n}\n],\n\\\\\"Properties\\\\\": {}\n}\n]\n`});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncluster = aws.emr.Cluster(\"cluster\", configurations_json=\"\"\"[\n{\n\\\"Classification\\\": \\\"hadoop-env\\\",\n\\\"Configurations\\\": [\n{\n\\\"Classification\\\": \\\"export\\\",\n\\\"Properties\\\": {\n\\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n}\n}\n],\n\\\"Properties\\\": {}\n}\n]\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster = new Aws.Emr.Cluster(\"cluster\", new()\n {\n ConfigurationsJson = @\"[\n{\n\\\"\"Classification\\\"\": \\\"\"hadoop-env\\\"\",\n\\\"\"Configurations\\\"\": [\n{\n\\\"\"Classification\\\"\": \\\"\"export\\\"\",\n\\\"\"Properties\\\"\": {\n\\\"\"JAVA_HOME\\\"\": \\\"\"/usr/lib/jvm/java-1.8.0\\\"\"\n}\n}\n],\n\\\"\"Properties\\\"\": {}\n}\n]\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := emr.NewCluster(ctx, \"cluster\", \u0026emr.ClusterArgs{\n\t\t\tConfigurationsJson: pulumi.String(`[\n{\n\\\"Classification\\\": \\\"hadoop-env\\\",\n\\\"Configurations\\\": [\n{\n\\\"Classification\\\": \\\"export\\\",\n\\\"Properties\\\": {\n\\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n}\n}\n],\n\\\"Properties\\\": {}\n}\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.emr.Cluster;\nimport com.pulumi.aws.emr.ClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .configurationsJson(\"\"\"\n[\n{\n\\\"Classification\\\": \\\"hadoop-env\\\",\n\\\"Configurations\\\": [\n{\n\\\"Classification\\\": \\\"export\\\",\n\\\"Properties\\\": {\n\\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n}\n}\n],\n\\\"Properties\\\": {}\n}\n]\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: aws:emr:Cluster\n properties:\n configurationsJson: |\n [\n {\n \\\"Classification\\\": \\\"hadoop-env\\\",\n \\\"Configurations\\\": [\n {\n \\\"Classification\\\": \\\"export\\\",\n \\\"Properties\\\": {\n \\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n }\n }\n ],\n \\\"Properties\\\": {}\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "willReplaceOnChanges": true }, "coreInstanceFleet": { @@ -296575,7 +296575,7 @@ }, "configurationsJson": { "type": "string", - "description": "A JSON string for supplying list of configurations specific to the EMR instance group. Note that this can only be changed when using EMR release 5.21 or later.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst task = new aws.emr.InstanceGroup(\"task\", {configurationsJson: `[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n`});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntask = aws.emr.InstanceGroup(\"task\", configurations_json=\"\"\"[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var task = new Aws.Emr.InstanceGroup(\"task\", new()\n {\n ConfigurationsJson = @\"[\n{\n\"\"Classification\"\": \"\"hadoop-env\"\",\n\"\"Configurations\"\": [\n{\n\"\"Classification\"\": \"\"export\"\",\n\"\"Properties\"\": {\n\"\"JAVA_HOME\"\": \"\"/usr/lib/jvm/java-1.8.0\"\"\n}\n}\n],\n\"\"Properties\"\": {}\n}\n]\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := emr.NewInstanceGroup(ctx, \"task\", \u0026emr.InstanceGroupArgs{\n\t\t\tConfigurationsJson: pulumi.String(`[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.emr.InstanceGroup;\nimport com.pulumi.aws.emr.InstanceGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var task = new InstanceGroup(\"task\", InstanceGroupArgs.builder()\n .configurationsJson(\"\"\"\n[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n task:\n type: aws:emr:InstanceGroup\n properties:\n configurationsJson: |\n [\n {\n \"Classification\": \"hadoop-env\",\n \"Configurations\": [\n {\n \"Classification\": \"export\",\n \"Properties\": {\n \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n }\n }\n ],\n \"Properties\": {}\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n" + "description": "A JSON string for supplying list of configurations specific to the EMR instance group. Note that this can only be changed when using EMR release 5.21 or later.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst task = new aws.emr.InstanceGroup(\"task\", {configurationsJson: `[\n{\n\\\\\"Classification\\\\\": \\\\\"hadoop-env\\\\\",\n\\\\\"Configurations\\\\\": [\n{\n\\\\\"Classification\\\\\": \\\\\"export\\\\\",\n\\\\\"Properties\\\\\": {\n\\\\\"JAVA_HOME\\\\\": \\\\\"/usr/lib/jvm/java-1.8.0\\\\\"\n}\n}\n],\n\\\\\"Properties\\\\\": {}\n}\n]\n`});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntask = aws.emr.InstanceGroup(\"task\", configurations_json=\"\"\"[\n{\n\\\"Classification\\\": \\\"hadoop-env\\\",\n\\\"Configurations\\\": [\n{\n\\\"Classification\\\": \\\"export\\\",\n\\\"Properties\\\": {\n\\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n}\n}\n],\n\\\"Properties\\\": {}\n}\n]\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var task = new Aws.Emr.InstanceGroup(\"task\", new()\n {\n ConfigurationsJson = @\"[\n{\n\\\"\"Classification\\\"\": \\\"\"hadoop-env\\\"\",\n\\\"\"Configurations\\\"\": [\n{\n\\\"\"Classification\\\"\": \\\"\"export\\\"\",\n\\\"\"Properties\\\"\": {\n\\\"\"JAVA_HOME\\\"\": \\\"\"/usr/lib/jvm/java-1.8.0\\\"\"\n}\n}\n],\n\\\"\"Properties\\\"\": {}\n}\n]\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := emr.NewInstanceGroup(ctx, \"task\", \u0026emr.InstanceGroupArgs{\n\t\t\tConfigurationsJson: pulumi.String(`[\n{\n\\\"Classification\\\": \\\"hadoop-env\\\",\n\\\"Configurations\\\": [\n{\n\\\"Classification\\\": \\\"export\\\",\n\\\"Properties\\\": {\n\\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n}\n}\n],\n\\\"Properties\\\": {}\n}\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.emr.InstanceGroup;\nimport com.pulumi.aws.emr.InstanceGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var task = new InstanceGroup(\"task\", InstanceGroupArgs.builder()\n .configurationsJson(\"\"\"\n[\n{\n\\\"Classification\\\": \\\"hadoop-env\\\",\n\\\"Configurations\\\": [\n{\n\\\"Classification\\\": \\\"export\\\",\n\\\"Properties\\\": {\n\\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n}\n}\n],\n\\\"Properties\\\": {}\n}\n]\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n task:\n type: aws:emr:InstanceGroup\n properties:\n configurationsJson: |\n [\n {\n \\\"Classification\\\": \\\"hadoop-env\\\",\n \\\"Configurations\\\": [\n {\n \\\"Classification\\\": \\\"export\\\",\n \\\"Properties\\\": {\n \\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n }\n }\n ],\n \\\"Properties\\\": {}\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n" }, "ebsConfigs": { "type": "array", @@ -296640,7 +296640,7 @@ }, "configurationsJson": { "type": "string", - "description": "A JSON string for supplying list of configurations specific to the EMR instance group. Note that this can only be changed when using EMR release 5.21 or later.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst task = new aws.emr.InstanceGroup(\"task\", {configurationsJson: `[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n`});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntask = aws.emr.InstanceGroup(\"task\", configurations_json=\"\"\"[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var task = new Aws.Emr.InstanceGroup(\"task\", new()\n {\n ConfigurationsJson = @\"[\n{\n\"\"Classification\"\": \"\"hadoop-env\"\",\n\"\"Configurations\"\": [\n{\n\"\"Classification\"\": \"\"export\"\",\n\"\"Properties\"\": {\n\"\"JAVA_HOME\"\": \"\"/usr/lib/jvm/java-1.8.0\"\"\n}\n}\n],\n\"\"Properties\"\": {}\n}\n]\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := emr.NewInstanceGroup(ctx, \"task\", \u0026emr.InstanceGroupArgs{\n\t\t\tConfigurationsJson: pulumi.String(`[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.emr.InstanceGroup;\nimport com.pulumi.aws.emr.InstanceGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var task = new InstanceGroup(\"task\", InstanceGroupArgs.builder()\n .configurationsJson(\"\"\"\n[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n task:\n type: aws:emr:InstanceGroup\n properties:\n configurationsJson: |\n [\n {\n \"Classification\": \"hadoop-env\",\n \"Configurations\": [\n {\n \"Classification\": \"export\",\n \"Properties\": {\n \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n }\n }\n ],\n \"Properties\": {}\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n" + "description": "A JSON string for supplying list of configurations specific to the EMR instance group. Note that this can only be changed when using EMR release 5.21 or later.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst task = new aws.emr.InstanceGroup(\"task\", {configurationsJson: `[\n{\n\\\\\"Classification\\\\\": \\\\\"hadoop-env\\\\\",\n\\\\\"Configurations\\\\\": [\n{\n\\\\\"Classification\\\\\": \\\\\"export\\\\\",\n\\\\\"Properties\\\\\": {\n\\\\\"JAVA_HOME\\\\\": \\\\\"/usr/lib/jvm/java-1.8.0\\\\\"\n}\n}\n],\n\\\\\"Properties\\\\\": {}\n}\n]\n`});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntask = aws.emr.InstanceGroup(\"task\", configurations_json=\"\"\"[\n{\n\\\"Classification\\\": \\\"hadoop-env\\\",\n\\\"Configurations\\\": [\n{\n\\\"Classification\\\": \\\"export\\\",\n\\\"Properties\\\": {\n\\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n}\n}\n],\n\\\"Properties\\\": {}\n}\n]\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var task = new Aws.Emr.InstanceGroup(\"task\", new()\n {\n ConfigurationsJson = @\"[\n{\n\\\"\"Classification\\\"\": \\\"\"hadoop-env\\\"\",\n\\\"\"Configurations\\\"\": [\n{\n\\\"\"Classification\\\"\": \\\"\"export\\\"\",\n\\\"\"Properties\\\"\": {\n\\\"\"JAVA_HOME\\\"\": \\\"\"/usr/lib/jvm/java-1.8.0\\\"\"\n}\n}\n],\n\\\"\"Properties\\\"\": {}\n}\n]\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := emr.NewInstanceGroup(ctx, \"task\", \u0026emr.InstanceGroupArgs{\n\t\t\tConfigurationsJson: pulumi.String(`[\n{\n\\\"Classification\\\": \\\"hadoop-env\\\",\n\\\"Configurations\\\": [\n{\n\\\"Classification\\\": \\\"export\\\",\n\\\"Properties\\\": {\n\\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n}\n}\n],\n\\\"Properties\\\": {}\n}\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.emr.InstanceGroup;\nimport com.pulumi.aws.emr.InstanceGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var task = new InstanceGroup(\"task\", InstanceGroupArgs.builder()\n .configurationsJson(\"\"\"\n[\n{\n\\\"Classification\\\": \\\"hadoop-env\\\",\n\\\"Configurations\\\": [\n{\n\\\"Classification\\\": \\\"export\\\",\n\\\"Properties\\\": {\n\\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n}\n}\n],\n\\\"Properties\\\": {}\n}\n]\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n task:\n type: aws:emr:InstanceGroup\n properties:\n configurationsJson: |\n [\n {\n \\\"Classification\\\": \\\"hadoop-env\\\",\n \\\"Configurations\\\": [\n {\n \\\"Classification\\\": \\\"export\\\",\n \\\"Properties\\\": {\n \\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n }\n }\n ],\n \\\"Properties\\\": {}\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n" }, "ebsConfigs": { "type": "array", @@ -296697,7 +296697,7 @@ }, "configurationsJson": { "type": "string", - "description": "A JSON string for supplying list of configurations specific to the EMR instance group. Note that this can only be changed when using EMR release 5.21 or later.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst task = new aws.emr.InstanceGroup(\"task\", {configurationsJson: `[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n`});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntask = aws.emr.InstanceGroup(\"task\", configurations_json=\"\"\"[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var task = new Aws.Emr.InstanceGroup(\"task\", new()\n {\n ConfigurationsJson = @\"[\n{\n\"\"Classification\"\": \"\"hadoop-env\"\",\n\"\"Configurations\"\": [\n{\n\"\"Classification\"\": \"\"export\"\",\n\"\"Properties\"\": {\n\"\"JAVA_HOME\"\": \"\"/usr/lib/jvm/java-1.8.0\"\"\n}\n}\n],\n\"\"Properties\"\": {}\n}\n]\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := emr.NewInstanceGroup(ctx, \"task\", \u0026emr.InstanceGroupArgs{\n\t\t\tConfigurationsJson: pulumi.String(`[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.emr.InstanceGroup;\nimport com.pulumi.aws.emr.InstanceGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var task = new InstanceGroup(\"task\", InstanceGroupArgs.builder()\n .configurationsJson(\"\"\"\n[\n{\n\"Classification\": \"hadoop-env\",\n\"Configurations\": [\n{\n\"Classification\": \"export\",\n\"Properties\": {\n\"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n}\n}\n],\n\"Properties\": {}\n}\n]\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n task:\n type: aws:emr:InstanceGroup\n properties:\n configurationsJson: |\n [\n {\n \"Classification\": \"hadoop-env\",\n \"Configurations\": [\n {\n \"Classification\": \"export\",\n \"Properties\": {\n \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\"\n }\n }\n ],\n \"Properties\": {}\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n" + "description": "A JSON string for supplying list of configurations specific to the EMR instance group. Note that this can only be changed when using EMR release 5.21 or later.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst task = new aws.emr.InstanceGroup(\"task\", {configurationsJson: `[\n{\n\\\\\"Classification\\\\\": \\\\\"hadoop-env\\\\\",\n\\\\\"Configurations\\\\\": [\n{\n\\\\\"Classification\\\\\": \\\\\"export\\\\\",\n\\\\\"Properties\\\\\": {\n\\\\\"JAVA_HOME\\\\\": \\\\\"/usr/lib/jvm/java-1.8.0\\\\\"\n}\n}\n],\n\\\\\"Properties\\\\\": {}\n}\n]\n`});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntask = aws.emr.InstanceGroup(\"task\", configurations_json=\"\"\"[\n{\n\\\"Classification\\\": \\\"hadoop-env\\\",\n\\\"Configurations\\\": [\n{\n\\\"Classification\\\": \\\"export\\\",\n\\\"Properties\\\": {\n\\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n}\n}\n],\n\\\"Properties\\\": {}\n}\n]\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var task = new Aws.Emr.InstanceGroup(\"task\", new()\n {\n ConfigurationsJson = @\"[\n{\n\\\"\"Classification\\\"\": \\\"\"hadoop-env\\\"\",\n\\\"\"Configurations\\\"\": [\n{\n\\\"\"Classification\\\"\": \\\"\"export\\\"\",\n\\\"\"Properties\\\"\": {\n\\\"\"JAVA_HOME\\\"\": \\\"\"/usr/lib/jvm/java-1.8.0\\\"\"\n}\n}\n],\n\\\"\"Properties\\\"\": {}\n}\n]\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := emr.NewInstanceGroup(ctx, \"task\", \u0026emr.InstanceGroupArgs{\n\t\t\tConfigurationsJson: pulumi.String(`[\n{\n\\\"Classification\\\": \\\"hadoop-env\\\",\n\\\"Configurations\\\": [\n{\n\\\"Classification\\\": \\\"export\\\",\n\\\"Properties\\\": {\n\\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n}\n}\n],\n\\\"Properties\\\": {}\n}\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.emr.InstanceGroup;\nimport com.pulumi.aws.emr.InstanceGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var task = new InstanceGroup(\"task\", InstanceGroupArgs.builder()\n .configurationsJson(\"\"\"\n[\n{\n\\\"Classification\\\": \\\"hadoop-env\\\",\n\\\"Configurations\\\": [\n{\n\\\"Classification\\\": \\\"export\\\",\n\\\"Properties\\\": {\n\\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n}\n}\n],\n\\\"Properties\\\": {}\n}\n]\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n task:\n type: aws:emr:InstanceGroup\n properties:\n configurationsJson: |\n [\n {\n \\\"Classification\\\": \\\"hadoop-env\\\",\n \\\"Configurations\\\": [\n {\n \\\"Classification\\\": \\\"export\\\",\n \\\"Properties\\\": {\n \\\"JAVA_HOME\\\": \\\"/usr/lib/jvm/java-1.8.0\\\"\n }\n }\n ],\n \\\"Properties\\\": {}\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n" }, "ebsConfigs": { "type": "array", @@ -296814,7 +296814,7 @@ } }, "aws:emr/securityConfiguration:SecurityConfiguration": { - "description": "Provides a resource to manage AWS EMR Security Configurations\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst foo = new aws.emr.SecurityConfiguration(\"foo\", {\n name: \"emrsc_other\",\n configuration: `{\n \"EncryptionConfiguration\": {\n \"AtRestEncryptionConfiguration\": {\n \"S3EncryptionConfiguration\": {\n \"EncryptionMode\": \"SSE-S3\"\n },\n \"LocalDiskEncryptionConfiguration\": {\n \"EncryptionKeyProviderType\": \"AwsKms\",\n \"AwsKmsKey\": \"arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key\"\n }\n },\n \"EnableInTransitEncryption\": false,\n \"EnableAtRestEncryption\": true\n }\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nfoo = aws.emr.SecurityConfiguration(\"foo\",\n name=\"emrsc_other\",\n configuration=\"\"\"{\n \"EncryptionConfiguration\": {\n \"AtRestEncryptionConfiguration\": {\n \"S3EncryptionConfiguration\": {\n \"EncryptionMode\": \"SSE-S3\"\n },\n \"LocalDiskEncryptionConfiguration\": {\n \"EncryptionKeyProviderType\": \"AwsKms\",\n \"AwsKmsKey\": \"arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key\"\n }\n },\n \"EnableInTransitEncryption\": false,\n \"EnableAtRestEncryption\": true\n }\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var foo = new Aws.Emr.SecurityConfiguration(\"foo\", new()\n {\n Name = \"emrsc_other\",\n Configuration = @\"{\n \"\"EncryptionConfiguration\"\": {\n \"\"AtRestEncryptionConfiguration\"\": {\n \"\"S3EncryptionConfiguration\"\": {\n \"\"EncryptionMode\"\": \"\"SSE-S3\"\"\n },\n \"\"LocalDiskEncryptionConfiguration\"\": {\n \"\"EncryptionKeyProviderType\"\": \"\"AwsKms\"\",\n \"\"AwsKmsKey\"\": \"\"arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key\"\"\n }\n },\n \"\"EnableInTransitEncryption\"\": false,\n \"\"EnableAtRestEncryption\"\": true\n }\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := emr.NewSecurityConfiguration(ctx, \"foo\", \u0026emr.SecurityConfigurationArgs{\n\t\t\tName: pulumi.String(\"emrsc_other\"),\n\t\t\tConfiguration: pulumi.String(`{\n \"EncryptionConfiguration\": {\n \"AtRestEncryptionConfiguration\": {\n \"S3EncryptionConfiguration\": {\n \"EncryptionMode\": \"SSE-S3\"\n },\n \"LocalDiskEncryptionConfiguration\": {\n \"EncryptionKeyProviderType\": \"AwsKms\",\n \"AwsKmsKey\": \"arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key\"\n }\n },\n \"EnableInTransitEncryption\": false,\n \"EnableAtRestEncryption\": true\n }\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.emr.SecurityConfiguration;\nimport com.pulumi.aws.emr.SecurityConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var foo = new SecurityConfiguration(\"foo\", SecurityConfigurationArgs.builder()\n .name(\"emrsc_other\")\n .configuration(\"\"\"\n{\n \"EncryptionConfiguration\": {\n \"AtRestEncryptionConfiguration\": {\n \"S3EncryptionConfiguration\": {\n \"EncryptionMode\": \"SSE-S3\"\n },\n \"LocalDiskEncryptionConfiguration\": {\n \"EncryptionKeyProviderType\": \"AwsKms\",\n \"AwsKmsKey\": \"arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key\"\n }\n },\n \"EnableInTransitEncryption\": false,\n \"EnableAtRestEncryption\": true\n }\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: aws:emr:SecurityConfiguration\n properties:\n name: emrsc_other\n configuration: |\n {\n \"EncryptionConfiguration\": {\n \"AtRestEncryptionConfiguration\": {\n \"S3EncryptionConfiguration\": {\n \"EncryptionMode\": \"SSE-S3\"\n },\n \"LocalDiskEncryptionConfiguration\": {\n \"EncryptionKeyProviderType\": \"AwsKms\",\n \"AwsKmsKey\": \"arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key\"\n }\n },\n \"EnableInTransitEncryption\": false,\n \"EnableAtRestEncryption\": true\n }\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import EMR Security Configurations using the `name`. For example:\n\n```sh\n$ pulumi import aws:emr/securityConfiguration:SecurityConfiguration sc example-sc-name\n```\n", + "description": "Provides a resource to manage AWS EMR Security Configurations\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst foo = new aws.emr.SecurityConfiguration(\"foo\", {\n name: \"emrsc_other\",\n configuration: `{\n \\\\\"EncryptionConfiguration\\\\\": {\n \\\\\"AtRestEncryptionConfiguration\\\\\": {\n \\\\\"S3EncryptionConfiguration\\\\\": {\n \\\\\"EncryptionMode\\\\\": \\\\\"SSE-S3\\\\\"\n },\n \\\\\"LocalDiskEncryptionConfiguration\\\\\": {\n \\\\\"EncryptionKeyProviderType\\\\\": \\\\\"AwsKms\\\\\",\n \\\\\"AwsKmsKey\\\\\": \\\\\"arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key\\\\\"\n }\n },\n \\\\\"EnableInTransitEncryption\\\\\": false,\n \\\\\"EnableAtRestEncryption\\\\\": true\n }\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nfoo = aws.emr.SecurityConfiguration(\"foo\",\n name=\"emrsc_other\",\n configuration=\"\"\"{\n \\\"EncryptionConfiguration\\\": {\n \\\"AtRestEncryptionConfiguration\\\": {\n \\\"S3EncryptionConfiguration\\\": {\n \\\"EncryptionMode\\\": \\\"SSE-S3\\\"\n },\n \\\"LocalDiskEncryptionConfiguration\\\": {\n \\\"EncryptionKeyProviderType\\\": \\\"AwsKms\\\",\n \\\"AwsKmsKey\\\": \\\"arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key\\\"\n }\n },\n \\\"EnableInTransitEncryption\\\": false,\n \\\"EnableAtRestEncryption\\\": true\n }\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var foo = new Aws.Emr.SecurityConfiguration(\"foo\", new()\n {\n Name = \"emrsc_other\",\n Configuration = @\"{\n \\\"\"EncryptionConfiguration\\\"\": {\n \\\"\"AtRestEncryptionConfiguration\\\"\": {\n \\\"\"S3EncryptionConfiguration\\\"\": {\n \\\"\"EncryptionMode\\\"\": \\\"\"SSE-S3\\\"\"\n },\n \\\"\"LocalDiskEncryptionConfiguration\\\"\": {\n \\\"\"EncryptionKeyProviderType\\\"\": \\\"\"AwsKms\\\"\",\n \\\"\"AwsKmsKey\\\"\": \\\"\"arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key\\\"\"\n }\n },\n \\\"\"EnableInTransitEncryption\\\"\": false,\n \\\"\"EnableAtRestEncryption\\\"\": true\n }\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/emr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := emr.NewSecurityConfiguration(ctx, \"foo\", \u0026emr.SecurityConfigurationArgs{\n\t\t\tName: pulumi.String(\"emrsc_other\"),\n\t\t\tConfiguration: pulumi.String(`{\n \\\"EncryptionConfiguration\\\": {\n \\\"AtRestEncryptionConfiguration\\\": {\n \\\"S3EncryptionConfiguration\\\": {\n \\\"EncryptionMode\\\": \\\"SSE-S3\\\"\n },\n \\\"LocalDiskEncryptionConfiguration\\\": {\n \\\"EncryptionKeyProviderType\\\": \\\"AwsKms\\\",\n \\\"AwsKmsKey\\\": \\\"arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key\\\"\n }\n },\n \\\"EnableInTransitEncryption\\\": false,\n \\\"EnableAtRestEncryption\\\": true\n }\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.emr.SecurityConfiguration;\nimport com.pulumi.aws.emr.SecurityConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var foo = new SecurityConfiguration(\"foo\", SecurityConfigurationArgs.builder()\n .name(\"emrsc_other\")\n .configuration(\"\"\"\n{\n \\\"EncryptionConfiguration\\\": {\n \\\"AtRestEncryptionConfiguration\\\": {\n \\\"S3EncryptionConfiguration\\\": {\n \\\"EncryptionMode\\\": \\\"SSE-S3\\\"\n },\n \\\"LocalDiskEncryptionConfiguration\\\": {\n \\\"EncryptionKeyProviderType\\\": \\\"AwsKms\\\",\n \\\"AwsKmsKey\\\": \\\"arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key\\\"\n }\n },\n \\\"EnableInTransitEncryption\\\": false,\n \\\"EnableAtRestEncryption\\\": true\n }\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: aws:emr:SecurityConfiguration\n properties:\n name: emrsc_other\n configuration: |\n {\n \\\"EncryptionConfiguration\\\": {\n \\\"AtRestEncryptionConfiguration\\\": {\n \\\"S3EncryptionConfiguration\\\": {\n \\\"EncryptionMode\\\": \\\"SSE-S3\\\"\n },\n \\\"LocalDiskEncryptionConfiguration\\\": {\n \\\"EncryptionKeyProviderType\\\": \\\"AwsKms\\\",\n \\\"AwsKmsKey\\\": \\\"arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key\\\"\n }\n },\n \\\"EnableInTransitEncryption\\\": false,\n \\\"EnableAtRestEncryption\\\": true\n }\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import EMR Security Configurations using the `name`. For example:\n\n```sh\n$ pulumi import aws:emr/securityConfiguration:SecurityConfiguration sc example-sc-name\n```\n", "properties": { "configuration": { "type": "string", @@ -298422,7 +298422,7 @@ } }, "aws:evidently/segment:Segment": { - "description": "Provides a CloudWatch Evidently Segment resource.\n\n\u003e **Warning:** This resource is deprecated. Use [AWS AppConfig feature flags](https://aws.amazon.com/blogs/mt/using-aws-appconfig-feature-flags/) instead.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.evidently.Segment(\"example\", {\n name: \"example\",\n pattern: \"{\\\"Price\\\":[{\\\"numeric\\\":[\\\"\u003e\\\",10,\\\"\u003c=\\\",20]}]}\",\n tags: {\n Key1: \"example Segment\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.evidently.Segment(\"example\",\n name=\"example\",\n pattern=\"{\\\"Price\\\":[{\\\"numeric\\\":[\\\"\u003e\\\",10,\\\"\u003c=\\\",20]}]}\",\n tags={\n \"Key1\": \"example Segment\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Evidently.Segment(\"example\", new()\n {\n Name = \"example\",\n Pattern = \"{\\\"Price\\\":[{\\\"numeric\\\":[\\\"\u003e\\\",10,\\\"\u003c=\\\",20]}]}\",\n Tags = \n {\n { \"Key1\", \"example Segment\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/evidently\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := evidently.NewSegment(ctx, \"example\", \u0026evidently.SegmentArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tPattern: pulumi.String(\"{\\\"Price\\\":[{\\\"numeric\\\":[\\\"\u003e\\\",10,\\\"\u003c=\\\",20]}]}\"),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Key1\": pulumi.String(\"example Segment\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.evidently.Segment;\nimport com.pulumi.aws.evidently.SegmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Segment(\"example\", SegmentArgs.builder()\n .name(\"example\")\n .pattern(\"{\\\"Price\\\":[{\\\"numeric\\\":[\\\"\u003e\\\",10,\\\"\u003c=\\\",20]}]}\")\n .tags(Map.of(\"Key1\", \"example Segment\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:evidently:Segment\n properties:\n name: example\n pattern: '{\"Price\":[{\"numeric\":[\"\u003e\",10,\"\u003c=\",20]}]}'\n tags:\n Key1: example Segment\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With JSON object in pattern\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.evidently.Segment(\"example\", {\n name: \"example\",\n pattern: ` {\n \"Price\": [\n {\n \"numeric\": [\"\u003e\",10,\"\u003c=\",20]\n }\n ]\n }\n`,\n tags: {\n Key1: \"example Segment\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.evidently.Segment(\"example\",\n name=\"example\",\n pattern=\"\"\" {\n \"Price\": [\n {\n \"numeric\": [\"\u003e\",10,\"\u003c=\",20]\n }\n ]\n }\n\"\"\",\n tags={\n \"Key1\": \"example Segment\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Evidently.Segment(\"example\", new()\n {\n Name = \"example\",\n Pattern = @\" {\n \"\"Price\"\": [\n {\n \"\"numeric\"\": [\"\"\u003e\"\",10,\"\"\u003c=\"\",20]\n }\n ]\n }\n\",\n Tags = \n {\n { \"Key1\", \"example Segment\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/evidently\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := evidently.NewSegment(ctx, \"example\", \u0026evidently.SegmentArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tPattern: pulumi.String(` {\n \"Price\": [\n {\n \"numeric\": [\"\u003e\",10,\"\u003c=\",20]\n }\n ]\n }\n`),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Key1\": pulumi.String(\"example Segment\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.evidently.Segment;\nimport com.pulumi.aws.evidently.SegmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Segment(\"example\", SegmentArgs.builder()\n .name(\"example\")\n .pattern(\"\"\"\n {\n \"Price\": [\n {\n \"numeric\": [\"\u003e\",10,\"\u003c=\",20]\n }\n ]\n }\n \"\"\")\n .tags(Map.of(\"Key1\", \"example Segment\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:evidently:Segment\n properties:\n name: example\n pattern: |2\n {\n \"Price\": [\n {\n \"numeric\": [\"\u003e\",10,\"\u003c=\",20]\n }\n ]\n }\n tags:\n Key1: example Segment\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Description\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.evidently.Segment(\"example\", {\n name: \"example\",\n pattern: \"{\\\"Price\\\":[{\\\"numeric\\\":[\\\"\u003e\\\",10,\\\"\u003c=\\\",20]}]}\",\n description: \"example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.evidently.Segment(\"example\",\n name=\"example\",\n pattern=\"{\\\"Price\\\":[{\\\"numeric\\\":[\\\"\u003e\\\",10,\\\"\u003c=\\\",20]}]}\",\n description=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Evidently.Segment(\"example\", new()\n {\n Name = \"example\",\n Pattern = \"{\\\"Price\\\":[{\\\"numeric\\\":[\\\"\u003e\\\",10,\\\"\u003c=\\\",20]}]}\",\n Description = \"example\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/evidently\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := evidently.NewSegment(ctx, \"example\", \u0026evidently.SegmentArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tPattern: pulumi.String(\"{\\\"Price\\\":[{\\\"numeric\\\":[\\\"\u003e\\\",10,\\\"\u003c=\\\",20]}]}\"),\n\t\t\tDescription: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.evidently.Segment;\nimport com.pulumi.aws.evidently.SegmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Segment(\"example\", SegmentArgs.builder()\n .name(\"example\")\n .pattern(\"{\\\"Price\\\":[{\\\"numeric\\\":[\\\"\u003e\\\",10,\\\"\u003c=\\\",20]}]}\")\n .description(\"example\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:evidently:Segment\n properties:\n name: example\n pattern: '{\"Price\":[{\"numeric\":[\"\u003e\",10,\"\u003c=\",20]}]}'\n description: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import CloudWatch Evidently Segment using the `arn`. For example:\n\n```sh\n$ pulumi import aws:evidently/segment:Segment example arn:aws:evidently:us-west-2:123456789012:segment/example\n```\n", + "description": "Provides a CloudWatch Evidently Segment resource.\n\n\u003e **Warning:** This resource is deprecated. Use [AWS AppConfig feature flags](https://aws.amazon.com/blogs/mt/using-aws-appconfig-feature-flags/) instead.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.evidently.Segment(\"example\", {\n name: \"example\",\n pattern: \"{\\\"Price\\\":[{\\\"numeric\\\":[\\\"\u003e\\\",10,\\\"\u003c=\\\",20]}]}\",\n tags: {\n Key1: \"example Segment\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.evidently.Segment(\"example\",\n name=\"example\",\n pattern=\"{\\\"Price\\\":[{\\\"numeric\\\":[\\\"\u003e\\\",10,\\\"\u003c=\\\",20]}]}\",\n tags={\n \"Key1\": \"example Segment\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Evidently.Segment(\"example\", new()\n {\n Name = \"example\",\n Pattern = \"{\\\"Price\\\":[{\\\"numeric\\\":[\\\"\u003e\\\",10,\\\"\u003c=\\\",20]}]}\",\n Tags = \n {\n { \"Key1\", \"example Segment\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/evidently\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := evidently.NewSegment(ctx, \"example\", \u0026evidently.SegmentArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tPattern: pulumi.String(\"{\\\"Price\\\":[{\\\"numeric\\\":[\\\"\u003e\\\",10,\\\"\u003c=\\\",20]}]}\"),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Key1\": pulumi.String(\"example Segment\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.evidently.Segment;\nimport com.pulumi.aws.evidently.SegmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Segment(\"example\", SegmentArgs.builder()\n .name(\"example\")\n .pattern(\"{\\\"Price\\\":[{\\\"numeric\\\":[\\\"\u003e\\\",10,\\\"\u003c=\\\",20]}]}\")\n .tags(Map.of(\"Key1\", \"example Segment\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:evidently:Segment\n properties:\n name: example\n pattern: '{\"Price\":[{\"numeric\":[\"\u003e\",10,\"\u003c=\",20]}]}'\n tags:\n Key1: example Segment\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With JSON object in pattern\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.evidently.Segment(\"example\", {\n name: \"example\",\n pattern: ` {\n \\\\\"Price\\\\\": [\n {\n \\\\\"numeric\\\\\": [\\\\\"\u003e\\\\\",10,\\\\\"\u003c=\\\\\",20]\n }\n ]\n }\n`,\n tags: {\n Key1: \"example Segment\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.evidently.Segment(\"example\",\n name=\"example\",\n pattern=\"\"\" {\n \\\"Price\\\": [\n {\n \\\"numeric\\\": [\\\"\u003e\\\",10,\\\"\u003c=\\\",20]\n }\n ]\n }\n\"\"\",\n tags={\n \"Key1\": \"example Segment\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Evidently.Segment(\"example\", new()\n {\n Name = \"example\",\n Pattern = @\" {\n \\\"\"Price\\\"\": [\n {\n \\\"\"numeric\\\"\": [\\\"\"\u003e\\\"\",10,\\\"\"\u003c=\\\"\",20]\n }\n ]\n }\n\",\n Tags = \n {\n { \"Key1\", \"example Segment\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/evidently\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := evidently.NewSegment(ctx, \"example\", \u0026evidently.SegmentArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tPattern: pulumi.String(` {\n \\\"Price\\\": [\n {\n \\\"numeric\\\": [\\\"\u003e\\\",10,\\\"\u003c=\\\",20]\n }\n ]\n }\n`),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Key1\": pulumi.String(\"example Segment\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.evidently.Segment;\nimport com.pulumi.aws.evidently.SegmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Segment(\"example\", SegmentArgs.builder()\n .name(\"example\")\n .pattern(\"\"\"\n {\n \\\"Price\\\": [\n {\n \\\"numeric\\\": [\\\"\u003e\\\",10,\\\"\u003c=\\\",20]\n }\n ]\n }\n \"\"\")\n .tags(Map.of(\"Key1\", \"example Segment\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:evidently:Segment\n properties:\n name: example\n pattern: |2\n {\n \\\"Price\\\": [\n {\n \\\"numeric\\\": [\\\"\u003e\\\",10,\\\"\u003c=\\\",20]\n }\n ]\n }\n tags:\n Key1: example Segment\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Description\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.evidently.Segment(\"example\", {\n name: \"example\",\n pattern: \"{\\\"Price\\\":[{\\\"numeric\\\":[\\\"\u003e\\\",10,\\\"\u003c=\\\",20]}]}\",\n description: \"example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.evidently.Segment(\"example\",\n name=\"example\",\n pattern=\"{\\\"Price\\\":[{\\\"numeric\\\":[\\\"\u003e\\\",10,\\\"\u003c=\\\",20]}]}\",\n description=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Evidently.Segment(\"example\", new()\n {\n Name = \"example\",\n Pattern = \"{\\\"Price\\\":[{\\\"numeric\\\":[\\\"\u003e\\\",10,\\\"\u003c=\\\",20]}]}\",\n Description = \"example\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/evidently\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := evidently.NewSegment(ctx, \"example\", \u0026evidently.SegmentArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tPattern: pulumi.String(\"{\\\"Price\\\":[{\\\"numeric\\\":[\\\"\u003e\\\",10,\\\"\u003c=\\\",20]}]}\"),\n\t\t\tDescription: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.evidently.Segment;\nimport com.pulumi.aws.evidently.SegmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Segment(\"example\", SegmentArgs.builder()\n .name(\"example\")\n .pattern(\"{\\\"Price\\\":[{\\\"numeric\\\":[\\\"\u003e\\\",10,\\\"\u003c=\\\",20]}]}\")\n .description(\"example\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:evidently:Segment\n properties:\n name: example\n pattern: '{\"Price\":[{\"numeric\":[\"\u003e\",10,\"\u003c=\",20]}]}'\n description: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import CloudWatch Evidently Segment using the `arn`. For example:\n\n```sh\n$ pulumi import aws:evidently/segment:Segment example arn:aws:evidently:us-west-2:123456789012:segment/example\n```\n", "properties": { "arn": { "type": "string", @@ -306989,7 +306989,7 @@ } }, "aws:glue/connection:Connection": { - "description": "Provides a Glue Connection resource.\n\n## Example Usage\n\n### Non-VPC Connection\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.glue.Connection(\"example\", {\n name: \"example\",\n connectionProperties: {\n JDBC_CONNECTION_URL: \"jdbc:mysql://example.com/exampledatabase\",\n PASSWORD: \"examplepassword\",\n USERNAME: \"exampleusername\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.glue.Connection(\"example\",\n name=\"example\",\n connection_properties={\n \"JDBC_CONNECTION_URL\": \"jdbc:mysql://example.com/exampledatabase\",\n \"PASSWORD\": \"examplepassword\",\n \"USERNAME\": \"exampleusername\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Glue.Connection(\"example\", new()\n {\n Name = \"example\",\n ConnectionProperties = \n {\n { \"JDBC_CONNECTION_URL\", \"jdbc:mysql://example.com/exampledatabase\" },\n { \"PASSWORD\", \"examplepassword\" },\n { \"USERNAME\", \"exampleusername\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := glue.NewConnection(ctx, \"example\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tConnectionProperties: pulumi.StringMap{\n\t\t\t\t\"JDBC_CONNECTION_URL\": pulumi.String(\"jdbc:mysql://example.com/exampledatabase\"),\n\t\t\t\t\"PASSWORD\": pulumi.String(\"examplepassword\"),\n\t\t\t\t\"USERNAME\": pulumi.String(\"exampleusername\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.glue.Connection;\nimport com.pulumi.aws.glue.ConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Connection(\"example\", ConnectionArgs.builder()\n .name(\"example\")\n .connectionProperties(Map.ofEntries(\n Map.entry(\"JDBC_CONNECTION_URL\", \"jdbc:mysql://example.com/exampledatabase\"),\n Map.entry(\"PASSWORD\", \"examplepassword\"),\n Map.entry(\"USERNAME\", \"exampleusername\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:glue:Connection\n properties:\n name: example\n connectionProperties:\n JDBC_CONNECTION_URL: jdbc:mysql://example.com/exampledatabase\n PASSWORD: examplepassword\n USERNAME: exampleusername\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Non-VPC Connection with secret manager reference\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = aws.secretsmanager.getSecret({\n name: \"example-secret\",\n});\nconst exampleConnection = new aws.glue.Connection(\"example\", {\n name: \"example\",\n connectionProperties: {\n JDBC_CONNECTION_URL: \"jdbc:mysql://example.com/exampledatabase\",\n SECRET_ID: example.then(example =\u003e example.name),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.secretsmanager.get_secret(name=\"example-secret\")\nexample_connection = aws.glue.Connection(\"example\",\n name=\"example\",\n connection_properties={\n \"JDBC_CONNECTION_URL\": \"jdbc:mysql://example.com/exampledatabase\",\n \"SECRET_ID\": example.name,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.SecretsManager.GetSecret.Invoke(new()\n {\n Name = \"example-secret\",\n });\n\n var exampleConnection = new Aws.Glue.Connection(\"example\", new()\n {\n Name = \"example\",\n ConnectionProperties = \n {\n { \"JDBC_CONNECTION_URL\", \"jdbc:mysql://example.com/exampledatabase\" },\n { \"SECRET_ID\", example.Apply(getSecretResult =\u003e getSecretResult.Name) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := secretsmanager.LookupSecret(ctx, \u0026secretsmanager.LookupSecretArgs{\n\t\t\tName: pulumi.StringRef(\"example-secret\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = glue.NewConnection(ctx, \"example\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tConnectionProperties: pulumi.StringMap{\n\t\t\t\t\"JDBC_CONNECTION_URL\": pulumi.String(\"jdbc:mysql://example.com/exampledatabase\"),\n\t\t\t\t\"SECRET_ID\": pulumi.String(example.Name),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.SecretsmanagerFunctions;\nimport com.pulumi.aws.secretsmanager.inputs.GetSecretArgs;\nimport com.pulumi.aws.glue.Connection;\nimport com.pulumi.aws.glue.ConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = SecretsmanagerFunctions.getSecret(GetSecretArgs.builder()\n .name(\"example-secret\")\n .build());\n\n var exampleConnection = new Connection(\"exampleConnection\", ConnectionArgs.builder()\n .name(\"example\")\n .connectionProperties(Map.ofEntries(\n Map.entry(\"JDBC_CONNECTION_URL\", \"jdbc:mysql://example.com/exampledatabase\"),\n Map.entry(\"SECRET_ID\", example.name())\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleConnection:\n type: aws:glue:Connection\n name: example\n properties:\n name: example\n connectionProperties:\n JDBC_CONNECTION_URL: jdbc:mysql://example.com/exampledatabase\n SECRET_ID: ${example.name}\nvariables:\n example:\n fn::invoke:\n function: aws:secretsmanager:getSecret\n arguments:\n name: example-secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### VPC Connection\n\nFor more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/populate-add-connection.html#connection-JDBC-VPC).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.glue.Connection(\"example\", {\n name: \"example\",\n connectionProperties: {\n JDBC_CONNECTION_URL: `jdbc:mysql://${exampleAwsRdsCluster.endpoint}/exampledatabase`,\n PASSWORD: \"examplepassword\",\n USERNAME: \"exampleusername\",\n },\n physicalConnectionRequirements: {\n availabilityZone: exampleAwsSubnet.availabilityZone,\n securityGroupIdLists: [exampleAwsSecurityGroup.id],\n subnetId: exampleAwsSubnet.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.glue.Connection(\"example\",\n name=\"example\",\n connection_properties={\n \"JDBC_CONNECTION_URL\": f\"jdbc:mysql://{example_aws_rds_cluster['endpoint']}/exampledatabase\",\n \"PASSWORD\": \"examplepassword\",\n \"USERNAME\": \"exampleusername\",\n },\n physical_connection_requirements={\n \"availability_zone\": example_aws_subnet[\"availabilityZone\"],\n \"security_group_id_lists\": [example_aws_security_group[\"id\"]],\n \"subnet_id\": example_aws_subnet[\"id\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Glue.Connection(\"example\", new()\n {\n Name = \"example\",\n ConnectionProperties = \n {\n { \"JDBC_CONNECTION_URL\", $\"jdbc:mysql://{exampleAwsRdsCluster.Endpoint}/exampledatabase\" },\n { \"PASSWORD\", \"examplepassword\" },\n { \"USERNAME\", \"exampleusername\" },\n },\n PhysicalConnectionRequirements = new Aws.Glue.Inputs.ConnectionPhysicalConnectionRequirementsArgs\n {\n AvailabilityZone = exampleAwsSubnet.AvailabilityZone,\n SecurityGroupIdLists = new[]\n {\n exampleAwsSecurityGroup.Id,\n },\n SubnetId = exampleAwsSubnet.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := glue.NewConnection(ctx, \"example\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tConnectionProperties: pulumi.StringMap{\n\t\t\t\t\"JDBC_CONNECTION_URL\": pulumi.Sprintf(\"jdbc:mysql://%v/exampledatabase\", exampleAwsRdsCluster.Endpoint),\n\t\t\t\t\"PASSWORD\": pulumi.String(\"examplepassword\"),\n\t\t\t\t\"USERNAME\": pulumi.String(\"exampleusername\"),\n\t\t\t},\n\t\t\tPhysicalConnectionRequirements: \u0026glue.ConnectionPhysicalConnectionRequirementsArgs{\n\t\t\t\tAvailabilityZone: pulumi.Any(exampleAwsSubnet.AvailabilityZone),\n\t\t\t\tSecurityGroupIdLists: pulumi.StringArray{\n\t\t\t\t\texampleAwsSecurityGroup.Id,\n\t\t\t\t},\n\t\t\t\tSubnetId: pulumi.Any(exampleAwsSubnet.Id),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.glue.Connection;\nimport com.pulumi.aws.glue.ConnectionArgs;\nimport com.pulumi.aws.glue.inputs.ConnectionPhysicalConnectionRequirementsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Connection(\"example\", ConnectionArgs.builder()\n .name(\"example\")\n .connectionProperties(Map.ofEntries(\n Map.entry(\"JDBC_CONNECTION_URL\", String.format(\"jdbc:mysql://%s/exampledatabase\", exampleAwsRdsCluster.endpoint())),\n Map.entry(\"PASSWORD\", \"examplepassword\"),\n Map.entry(\"USERNAME\", \"exampleusername\")\n ))\n .physicalConnectionRequirements(ConnectionPhysicalConnectionRequirementsArgs.builder()\n .availabilityZone(exampleAwsSubnet.availabilityZone())\n .securityGroupIdLists(exampleAwsSecurityGroup.id())\n .subnetId(exampleAwsSubnet.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:glue:Connection\n properties:\n name: example\n connectionProperties:\n JDBC_CONNECTION_URL: jdbc:mysql://${exampleAwsRdsCluster.endpoint}/exampledatabase\n PASSWORD: examplepassword\n USERNAME: exampleusername\n physicalConnectionRequirements:\n availabilityZone: ${exampleAwsSubnet.availabilityZone}\n securityGroupIdLists:\n - ${exampleAwsSecurityGroup.id}\n subnetId: ${exampleAwsSubnet.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Connection using a custom connector\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// Define the custom connector using the connection_type of `CUSTOM` with the match_criteria of `template_connection`\n// Example here being a snowflake jdbc connector with a secret having user and password as keys\nconst example = aws.secretsmanager.getSecret({\n name: \"example-secret\",\n});\nconst example1 = new aws.glue.Connection(\"example1\", {\n name: \"example1\",\n connectionType: \"CUSTOM\",\n connectionProperties: {\n CONNECTOR_CLASS_NAME: \"net.snowflake.client.jdbc.SnowflakeDriver\",\n CONNECTION_TYPE: \"Jdbc\",\n CONNECTOR_URL: \"s3://example/snowflake-jdbc.jar\",\n JDBC_CONNECTION_URL: \"[[\\\"default=jdbc:snowflake://example.com/?user=${user}\u0026password=${password}\\\"],\\\",\\\"]\",\n },\n matchCriterias: [\"template-connection\"],\n});\n// Reference the connector using match_criteria with the connector created above.\nconst example2 = new aws.glue.Connection(\"example2\", {\n name: \"example2\",\n connectionType: \"CUSTOM\",\n connectionProperties: {\n CONNECTOR_CLASS_NAME: \"net.snowflake.client.jdbc.SnowflakeDriver\",\n CONNECTION_TYPE: \"Jdbc\",\n CONNECTOR_URL: \"s3://example/snowflake-jdbc.jar\",\n JDBC_CONNECTION_URL: \"jdbc:snowflake://example.com/?user=${user}\u0026password=${password}\",\n SECRET_ID: example.then(example =\u003e example.name),\n },\n matchCriterias: [\n \"Connection\",\n example1.name,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\n# Define the custom connector using the connection_type of `CUSTOM` with the match_criteria of `template_connection`\n# Example here being a snowflake jdbc connector with a secret having user and password as keys\nexample = aws.secretsmanager.get_secret(name=\"example-secret\")\nexample1 = aws.glue.Connection(\"example1\",\n name=\"example1\",\n connection_type=\"CUSTOM\",\n connection_properties={\n \"CONNECTOR_CLASS_NAME\": \"net.snowflake.client.jdbc.SnowflakeDriver\",\n \"CONNECTION_TYPE\": \"Jdbc\",\n \"CONNECTOR_URL\": \"s3://example/snowflake-jdbc.jar\",\n \"JDBC_CONNECTION_URL\": \"[[\\\"default=jdbc:snowflake://example.com/?user=${user}\u0026password=${password}\\\"],\\\",\\\"]\",\n },\n match_criterias=[\"template-connection\"])\n# Reference the connector using match_criteria with the connector created above.\nexample2 = aws.glue.Connection(\"example2\",\n name=\"example2\",\n connection_type=\"CUSTOM\",\n connection_properties={\n \"CONNECTOR_CLASS_NAME\": \"net.snowflake.client.jdbc.SnowflakeDriver\",\n \"CONNECTION_TYPE\": \"Jdbc\",\n \"CONNECTOR_URL\": \"s3://example/snowflake-jdbc.jar\",\n \"JDBC_CONNECTION_URL\": \"jdbc:snowflake://example.com/?user=${user}\u0026password=${password}\",\n \"SECRET_ID\": example.name,\n },\n match_criterias=[\n \"Connection\",\n example1.name,\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Define the custom connector using the connection_type of `CUSTOM` with the match_criteria of `template_connection`\n // Example here being a snowflake jdbc connector with a secret having user and password as keys\n var example = Aws.SecretsManager.GetSecret.Invoke(new()\n {\n Name = \"example-secret\",\n });\n\n var example1 = new Aws.Glue.Connection(\"example1\", new()\n {\n Name = \"example1\",\n ConnectionType = \"CUSTOM\",\n ConnectionProperties = \n {\n { \"CONNECTOR_CLASS_NAME\", \"net.snowflake.client.jdbc.SnowflakeDriver\" },\n { \"CONNECTION_TYPE\", \"Jdbc\" },\n { \"CONNECTOR_URL\", \"s3://example/snowflake-jdbc.jar\" },\n { \"JDBC_CONNECTION_URL\", \"[[\\\"default=jdbc:snowflake://example.com/?user=${user}\u0026password=${password}\\\"],\\\",\\\"]\" },\n },\n MatchCriterias = new[]\n {\n \"template-connection\",\n },\n });\n\n // Reference the connector using match_criteria with the connector created above.\n var example2 = new Aws.Glue.Connection(\"example2\", new()\n {\n Name = \"example2\",\n ConnectionType = \"CUSTOM\",\n ConnectionProperties = \n {\n { \"CONNECTOR_CLASS_NAME\", \"net.snowflake.client.jdbc.SnowflakeDriver\" },\n { \"CONNECTION_TYPE\", \"Jdbc\" },\n { \"CONNECTOR_URL\", \"s3://example/snowflake-jdbc.jar\" },\n { \"JDBC_CONNECTION_URL\", \"jdbc:snowflake://example.com/?user=${user}\u0026password=${password}\" },\n { \"SECRET_ID\", example.Apply(getSecretResult =\u003e getSecretResult.Name) },\n },\n MatchCriterias = new[]\n {\n \"Connection\",\n example1.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Define the custom connector using the connection_type of `CUSTOM` with the match_criteria of `template_connection`\n\t\t// Example here being a snowflake jdbc connector with a secret having user and password as keys\n\t\texample, err := secretsmanager.LookupSecret(ctx, \u0026secretsmanager.LookupSecretArgs{\n\t\t\tName: pulumi.StringRef(\"example-secret\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample1, err := glue.NewConnection(ctx, \"example1\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example1\"),\n\t\t\tConnectionType: pulumi.String(\"CUSTOM\"),\n\t\t\tConnectionProperties: pulumi.StringMap{\n\t\t\t\t\"CONNECTOR_CLASS_NAME\": pulumi.String(\"net.snowflake.client.jdbc.SnowflakeDriver\"),\n\t\t\t\t\"CONNECTION_TYPE\": pulumi.String(\"Jdbc\"),\n\t\t\t\t\"CONNECTOR_URL\": pulumi.String(\"s3://example/snowflake-jdbc.jar\"),\n\t\t\t\t\"JDBC_CONNECTION_URL\": pulumi.String(\"[[\\\"default=jdbc:snowflake://example.com/?user=${user}\u0026password=${password}\\\"],\\\",\\\"]\"),\n\t\t\t},\n\t\t\tMatchCriterias: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"template-connection\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Reference the connector using match_criteria with the connector created above.\n\t\t_, err = glue.NewConnection(ctx, \"example2\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example2\"),\n\t\t\tConnectionType: pulumi.String(\"CUSTOM\"),\n\t\t\tConnectionProperties: pulumi.StringMap{\n\t\t\t\t\"CONNECTOR_CLASS_NAME\": pulumi.String(\"net.snowflake.client.jdbc.SnowflakeDriver\"),\n\t\t\t\t\"CONNECTION_TYPE\": pulumi.String(\"Jdbc\"),\n\t\t\t\t\"CONNECTOR_URL\": pulumi.String(\"s3://example/snowflake-jdbc.jar\"),\n\t\t\t\t\"JDBC_CONNECTION_URL\": pulumi.String(\"jdbc:snowflake://example.com/?user=${user}\u0026password=${password}\"),\n\t\t\t\t\"SECRET_ID\": pulumi.String(example.Name),\n\t\t\t},\n\t\t\tMatchCriterias: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Connection\"),\n\t\t\t\texample1.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.SecretsmanagerFunctions;\nimport com.pulumi.aws.secretsmanager.inputs.GetSecretArgs;\nimport com.pulumi.aws.glue.Connection;\nimport com.pulumi.aws.glue.ConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Define the custom connector using the connection_type of `CUSTOM` with the match_criteria of `template_connection`\n // Example here being a snowflake jdbc connector with a secret having user and password as keys\n final var example = SecretsmanagerFunctions.getSecret(GetSecretArgs.builder()\n .name(\"example-secret\")\n .build());\n\n var example1 = new Connection(\"example1\", ConnectionArgs.builder()\n .name(\"example1\")\n .connectionType(\"CUSTOM\")\n .connectionProperties(Map.ofEntries(\n Map.entry(\"CONNECTOR_CLASS_NAME\", \"net.snowflake.client.jdbc.SnowflakeDriver\"),\n Map.entry(\"CONNECTION_TYPE\", \"Jdbc\"),\n Map.entry(\"CONNECTOR_URL\", \"s3://example/snowflake-jdbc.jar\"),\n Map.entry(\"JDBC_CONNECTION_URL\", \"[[\\\"default=jdbc:snowflake://example.com/?user=${user}\u0026password=${password}\\\"],\\\",\\\"]\")\n ))\n .matchCriterias(\"template-connection\")\n .build());\n\n // Reference the connector using match_criteria with the connector created above.\n var example2 = new Connection(\"example2\", ConnectionArgs.builder()\n .name(\"example2\")\n .connectionType(\"CUSTOM\")\n .connectionProperties(Map.ofEntries(\n Map.entry(\"CONNECTOR_CLASS_NAME\", \"net.snowflake.client.jdbc.SnowflakeDriver\"),\n Map.entry(\"CONNECTION_TYPE\", \"Jdbc\"),\n Map.entry(\"CONNECTOR_URL\", \"s3://example/snowflake-jdbc.jar\"),\n Map.entry(\"JDBC_CONNECTION_URL\", \"jdbc:snowflake://example.com/?user=${user}\u0026password=${password}\"),\n Map.entry(\"SECRET_ID\", example.name())\n ))\n .matchCriterias( \n \"Connection\",\n example1.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example1:\n type: aws:glue:Connection\n properties:\n name: example1\n connectionType: CUSTOM\n connectionProperties:\n CONNECTOR_CLASS_NAME: net.snowflake.client.jdbc.SnowflakeDriver\n CONNECTION_TYPE: Jdbc\n CONNECTOR_URL: s3://example/snowflake-jdbc.jar\n JDBC_CONNECTION_URL: '[[\"default=jdbc:snowflake://example.com/?user=$${user}\u0026password=$${password}\"],\",\"]'\n matchCriterias:\n - template-connection\n # Reference the connector using match_criteria with the connector created above.\n example2:\n type: aws:glue:Connection\n properties:\n name: example2\n connectionType: CUSTOM\n connectionProperties:\n CONNECTOR_CLASS_NAME: net.snowflake.client.jdbc.SnowflakeDriver\n CONNECTION_TYPE: Jdbc\n CONNECTOR_URL: s3://example/snowflake-jdbc.jar\n JDBC_CONNECTION_URL: jdbc:snowflake://example.com/?user=$${user}\u0026password=$${password}\n SECRET_ID: ${example.name}\n matchCriterias:\n - Connection\n - ${example1.name}\nvariables:\n # Define the custom connector using the connection_type of `CUSTOM` with the match_criteria of `template_connection`\n # Example here being a snowflake jdbc connector with a secret having user and password as keys\n example:\n fn::invoke:\n function: aws:secretsmanager:getSecret\n arguments:\n name: example-secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Azure Cosmos Connection\n\nFor more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html#connection-properties-azurecosmos).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.secretsmanager.Secret(\"example\", {name: \"example-secret\"});\nconst exampleSecretVersion = new aws.secretsmanager.SecretVersion(\"example\", {\n secretId: example.id,\n secretString: JSON.stringify({\n username: \"exampleusername\",\n password: \"examplepassword\",\n }),\n});\nconst exampleConnection = new aws.glue.Connection(\"example\", {\n name: \"example\",\n connectionType: \"AZURECOSMOS\",\n connectionProperties: {\n SparkProperties: pulumi.jsonStringify({\n secretId: example.name,\n \"spark.cosmos.accountEndpoint\": \"https://exampledbaccount.documents.azure.com:443/\",\n }),\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nexample = aws.secretsmanager.Secret(\"example\", name=\"example-secret\")\nexample_secret_version = aws.secretsmanager.SecretVersion(\"example\",\n secret_id=example.id,\n secret_string=json.dumps({\n \"username\": \"exampleusername\",\n \"password\": \"examplepassword\",\n }))\nexample_connection = aws.glue.Connection(\"example\",\n name=\"example\",\n connection_type=\"AZURECOSMOS\",\n connection_properties={\n \"SparkProperties\": pulumi.Output.json_dumps({\n \"secretId\": example.name,\n \"spark.cosmos.accountEndpoint\": \"https://exampledbaccount.documents.azure.com:443/\",\n }),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.SecretsManager.Secret(\"example\", new()\n {\n Name = \"example-secret\",\n });\n\n var exampleSecretVersion = new Aws.SecretsManager.SecretVersion(\"example\", new()\n {\n SecretId = example.Id,\n SecretString = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"username\"] = \"exampleusername\",\n [\"password\"] = \"examplepassword\",\n }),\n });\n\n var exampleConnection = new Aws.Glue.Connection(\"example\", new()\n {\n Name = \"example\",\n ConnectionType = \"AZURECOSMOS\",\n ConnectionProperties = \n {\n { \"SparkProperties\", Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n {\n [\"secretId\"] = example.Name,\n [\"spark.cosmos.accountEndpoint\"] = \"https://exampledbaccount.documents.azure.com:443/\",\n })) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := secretsmanager.NewSecret(ctx, \"example\", \u0026secretsmanager.SecretArgs{\n\t\t\tName: pulumi.String(\"example-secret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"username\": \"exampleusername\",\n\t\t\t\"password\": \"examplepassword\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = secretsmanager.NewSecretVersion(ctx, \"example\", \u0026secretsmanager.SecretVersionArgs{\n\t\t\tSecretId: example.ID(),\n\t\t\tSecretString: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = glue.NewConnection(ctx, \"example\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tConnectionType: pulumi.String(\"AZURECOSMOS\"),\n\t\t\tConnectionProperties: pulumi.StringMap{\n\t\t\t\t\"SparkProperties\": example.Name.ApplyT(func(name string) (pulumi.String, error) {\n\t\t\t\t\tvar _zero pulumi.String\n\t\t\t\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\t\"secretId\": name,\n\t\t\t\t\t\t\"spark.cosmos.accountEndpoint\": \"https://exampledbaccount.documents.azure.com:443/\",\n\t\t\t\t\t})\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn _zero, err\n\t\t\t\t\t}\n\t\t\t\t\tjson1 := string(tmpJSON1)\n\t\t\t\t\treturn pulumi.String(json1), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.Secret;\nimport com.pulumi.aws.secretsmanager.SecretArgs;\nimport com.pulumi.aws.secretsmanager.SecretVersion;\nimport com.pulumi.aws.secretsmanager.SecretVersionArgs;\nimport com.pulumi.aws.glue.Connection;\nimport com.pulumi.aws.glue.ConnectionArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Secret(\"example\", SecretArgs.builder()\n .name(\"example-secret\")\n .build());\n\n var exampleSecretVersion = new SecretVersion(\"exampleSecretVersion\", SecretVersionArgs.builder()\n .secretId(example.id())\n .secretString(serializeJson(\n jsonObject(\n jsonProperty(\"username\", \"exampleusername\"),\n jsonProperty(\"password\", \"examplepassword\")\n )))\n .build());\n\n var exampleConnection = new Connection(\"exampleConnection\", ConnectionArgs.builder()\n .name(\"example\")\n .connectionType(\"AZURECOSMOS\")\n .connectionProperties(Map.of(\"SparkProperties\", example.name().applyValue(_name -\u003e serializeJson(\n jsonObject(\n jsonProperty(\"secretId\", _name),\n jsonProperty(\"spark.cosmos.accountEndpoint\", \"https://exampledbaccount.documents.azure.com:443/\")\n )))))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:secretsmanager:Secret\n properties:\n name: example-secret\n exampleSecretVersion:\n type: aws:secretsmanager:SecretVersion\n name: example\n properties:\n secretId: ${example.id}\n secretString:\n fn::toJSON:\n username: exampleusername\n password: examplepassword\n exampleConnection:\n type: aws:glue:Connection\n name: example\n properties:\n name: example\n connectionType: AZURECOSMOS\n connectionProperties:\n SparkProperties:\n fn::toJSON:\n secretId: ${example.name}\n spark.cosmos.accountEndpoint: https://exampledbaccount.documents.azure.com:443/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Azure SQL Connection\n\nFor more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html#connection-properties-azuresql).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.secretsmanager.Secret(\"example\", {name: \"example-secret\"});\nconst exampleSecretVersion = new aws.secretsmanager.SecretVersion(\"example\", {\n secretId: example.id,\n secretString: JSON.stringify({\n username: \"exampleusername\",\n password: \"examplepassword\",\n }),\n});\nconst exampleConnection = new aws.glue.Connection(\"example\", {\n name: \"example\",\n connectionType: \"AZURECOSMOS\",\n connectionProperties: {\n SparkProperties: pulumi.jsonStringify({\n secretId: example.name,\n url: \"jdbc:sqlserver:exampledbserver.database.windows.net:1433;database=exampledatabase\",\n }),\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nexample = aws.secretsmanager.Secret(\"example\", name=\"example-secret\")\nexample_secret_version = aws.secretsmanager.SecretVersion(\"example\",\n secret_id=example.id,\n secret_string=json.dumps({\n \"username\": \"exampleusername\",\n \"password\": \"examplepassword\",\n }))\nexample_connection = aws.glue.Connection(\"example\",\n name=\"example\",\n connection_type=\"AZURECOSMOS\",\n connection_properties={\n \"SparkProperties\": pulumi.Output.json_dumps({\n \"secretId\": example.name,\n \"url\": \"jdbc:sqlserver:exampledbserver.database.windows.net:1433;database=exampledatabase\",\n }),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.SecretsManager.Secret(\"example\", new()\n {\n Name = \"example-secret\",\n });\n\n var exampleSecretVersion = new Aws.SecretsManager.SecretVersion(\"example\", new()\n {\n SecretId = example.Id,\n SecretString = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"username\"] = \"exampleusername\",\n [\"password\"] = \"examplepassword\",\n }),\n });\n\n var exampleConnection = new Aws.Glue.Connection(\"example\", new()\n {\n Name = \"example\",\n ConnectionType = \"AZURECOSMOS\",\n ConnectionProperties = \n {\n { \"SparkProperties\", Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n {\n [\"secretId\"] = example.Name,\n [\"url\"] = \"jdbc:sqlserver:exampledbserver.database.windows.net:1433;database=exampledatabase\",\n })) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := secretsmanager.NewSecret(ctx, \"example\", \u0026secretsmanager.SecretArgs{\n\t\t\tName: pulumi.String(\"example-secret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"username\": \"exampleusername\",\n\t\t\t\"password\": \"examplepassword\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = secretsmanager.NewSecretVersion(ctx, \"example\", \u0026secretsmanager.SecretVersionArgs{\n\t\t\tSecretId: example.ID(),\n\t\t\tSecretString: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = glue.NewConnection(ctx, \"example\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tConnectionType: pulumi.String(\"AZURECOSMOS\"),\n\t\t\tConnectionProperties: pulumi.StringMap{\n\t\t\t\t\"SparkProperties\": example.Name.ApplyT(func(name string) (pulumi.String, error) {\n\t\t\t\t\tvar _zero pulumi.String\n\t\t\t\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\t\"secretId\": name,\n\t\t\t\t\t\t\"url\": \"jdbc:sqlserver:exampledbserver.database.windows.net:1433;database=exampledatabase\",\n\t\t\t\t\t})\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn _zero, err\n\t\t\t\t\t}\n\t\t\t\t\tjson1 := string(tmpJSON1)\n\t\t\t\t\treturn pulumi.String(json1), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.Secret;\nimport com.pulumi.aws.secretsmanager.SecretArgs;\nimport com.pulumi.aws.secretsmanager.SecretVersion;\nimport com.pulumi.aws.secretsmanager.SecretVersionArgs;\nimport com.pulumi.aws.glue.Connection;\nimport com.pulumi.aws.glue.ConnectionArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Secret(\"example\", SecretArgs.builder()\n .name(\"example-secret\")\n .build());\n\n var exampleSecretVersion = new SecretVersion(\"exampleSecretVersion\", SecretVersionArgs.builder()\n .secretId(example.id())\n .secretString(serializeJson(\n jsonObject(\n jsonProperty(\"username\", \"exampleusername\"),\n jsonProperty(\"password\", \"examplepassword\")\n )))\n .build());\n\n var exampleConnection = new Connection(\"exampleConnection\", ConnectionArgs.builder()\n .name(\"example\")\n .connectionType(\"AZURECOSMOS\")\n .connectionProperties(Map.of(\"SparkProperties\", example.name().applyValue(_name -\u003e serializeJson(\n jsonObject(\n jsonProperty(\"secretId\", _name),\n jsonProperty(\"url\", \"jdbc:sqlserver:exampledbserver.database.windows.net:1433;database=exampledatabase\")\n )))))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:secretsmanager:Secret\n properties:\n name: example-secret\n exampleSecretVersion:\n type: aws:secretsmanager:SecretVersion\n name: example\n properties:\n secretId: ${example.id}\n secretString:\n fn::toJSON:\n username: exampleusername\n password: examplepassword\n exampleConnection:\n type: aws:glue:Connection\n name: example\n properties:\n name: example\n connectionType: AZURECOSMOS\n connectionProperties:\n SparkProperties:\n fn::toJSON:\n secretId: ${example.name}\n url: jdbc:sqlserver:exampledbserver.database.windows.net:1433;database=exampledatabase\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Google BigQuery Connection\n\nFor more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html#connection-properties-bigquery).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new aws.secretsmanager.Secret(\"example\", {name: \"example-secret\"});\nconst exampleSecretVersion = new aws.secretsmanager.SecretVersion(\"example\", {\n secretId: example.id,\n secretString: JSON.stringify({\n credentials: std.base64encode({\n input: `{\n \"type\": \"service_account\",\n \"project_id\": \"example-project\",\n \"private_key_id\": \"example-key\",\n \"private_key\": \"-----BEGIN RSA PRIVATE KEY-----\\\\nREDACTED\\\\n-----END RSA PRIVATE KEY-----\",\n \"client_email\": \"example-project@appspot.gserviceaccount.com\",\n \"client_id\": example-client\",\n \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n \"token_uri\": \"https://oauth2.googleapis.com/token\",\n \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com\",\n \"universe_domain\": \"googleapis.com\"\n}\n`,\n }).then(invoke =\u003e invoke.result),\n }),\n});\nconst exampleConnection = new aws.glue.Connection(\"example\", {\n name: \"example\",\n connectionType: \"BIGQUERY\",\n connectionProperties: {\n SparkProperties: pulumi.jsonStringify({\n secretId: example.name,\n }),\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.secretsmanager.Secret(\"example\", name=\"example-secret\")\nexample_secret_version = aws.secretsmanager.SecretVersion(\"example\",\n secret_id=example.id,\n secret_string=json.dumps({\n \"credentials\": std.base64encode(input=\"\"\"{\n \"type\": \"service_account\",\n \"project_id\": \"example-project\",\n \"private_key_id\": \"example-key\",\n \"private_key\": \"-----BEGIN RSA PRIVATE KEY-----\\nREDACTED\\n-----END RSA PRIVATE KEY-----\",\n \"client_email\": \"example-project@appspot.gserviceaccount.com\",\n \"client_id\": example-client\",\n \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n \"token_uri\": \"https://oauth2.googleapis.com/token\",\n \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com\",\n \"universe_domain\": \"googleapis.com\"\n}\n\"\"\").result,\n }))\nexample_connection = aws.glue.Connection(\"example\",\n name=\"example\",\n connection_type=\"BIGQUERY\",\n connection_properties={\n \"SparkProperties\": pulumi.Output.json_dumps({\n \"secretId\": example.name,\n }),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.SecretsManager.Secret(\"example\", new()\n {\n Name = \"example-secret\",\n });\n\n var exampleSecretVersion = new Aws.SecretsManager.SecretVersion(\"example\", new()\n {\n SecretId = example.Id,\n SecretString = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"credentials\"] = Std.Base64encode.Invoke(new()\n {\n Input = @\"{\n \"\"type\"\": \"\"service_account\"\",\n \"\"project_id\"\": \"\"example-project\"\",\n \"\"private_key_id\"\": \"\"example-key\"\",\n \"\"private_key\"\": \"\"-----BEGIN RSA PRIVATE KEY-----\\nREDACTED\\n-----END RSA PRIVATE KEY-----\"\",\n \"\"client_email\"\": \"\"example-project@appspot.gserviceaccount.com\"\",\n \"\"client_id\"\": example-client\"\",\n \"\"auth_uri\"\": \"\"https://accounts.google.com/o/oauth2/auth\"\",\n \"\"token_uri\"\": \"\"https://oauth2.googleapis.com/token\"\",\n \"\"auth_provider_x509_cert_url\"\": \"\"https://www.googleapis.com/oauth2/v1/certs\"\",\n \"\"client_x509_cert_url\"\": \"\"https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com\"\",\n \"\"universe_domain\"\": \"\"googleapis.com\"\"\n}\n\",\n }).Apply(invoke =\u003e invoke.Result),\n }),\n });\n\n var exampleConnection = new Aws.Glue.Connection(\"example\", new()\n {\n Name = \"example\",\n ConnectionType = \"BIGQUERY\",\n ConnectionProperties = \n {\n { \"SparkProperties\", Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n {\n [\"secretId\"] = example.Name,\n })) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := secretsmanager.NewSecret(ctx, \"example\", \u0026secretsmanager.SecretArgs{\n\t\t\tName: pulumi.String(\"example-secret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"credentials\": std.Base64encode(ctx, map[string]interface{}{\n\t\t\t\t\"input\": `{\n \"type\": \"service_account\",\n \"project_id\": \"example-project\",\n \"private_key_id\": \"example-key\",\n \"private_key\": \"-----BEGIN RSA PRIVATE KEY-----\\nREDACTED\\n-----END RSA PRIVATE KEY-----\",\n \"client_email\": \"example-project@appspot.gserviceaccount.com\",\n \"client_id\": example-client\",\n \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n \"token_uri\": \"https://oauth2.googleapis.com/token\",\n \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com\",\n \"universe_domain\": \"googleapis.com\"\n}\n`,\n\t\t\t}, nil).Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = secretsmanager.NewSecretVersion(ctx, \"example\", \u0026secretsmanager.SecretVersionArgs{\n\t\t\tSecretId: example.ID(),\n\t\t\tSecretString: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = glue.NewConnection(ctx, \"example\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tConnectionType: pulumi.String(\"BIGQUERY\"),\n\t\t\tConnectionProperties: pulumi.StringMap{\n\t\t\t\t\"SparkProperties\": example.Name.ApplyT(func(name string) (pulumi.String, error) {\n\t\t\t\t\tvar _zero pulumi.String\n\t\t\t\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\t\"secretId\": name,\n\t\t\t\t\t})\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn _zero, err\n\t\t\t\t\t}\n\t\t\t\t\tjson1 := string(tmpJSON1)\n\t\t\t\t\treturn pulumi.String(json1), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.Secret;\nimport com.pulumi.aws.secretsmanager.SecretArgs;\nimport com.pulumi.aws.secretsmanager.SecretVersion;\nimport com.pulumi.aws.secretsmanager.SecretVersionArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.Base64encodeArgs;\nimport com.pulumi.aws.glue.Connection;\nimport com.pulumi.aws.glue.ConnectionArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Secret(\"example\", SecretArgs.builder()\n .name(\"example-secret\")\n .build());\n\n var exampleSecretVersion = new SecretVersion(\"exampleSecretVersion\", SecretVersionArgs.builder()\n .secretId(example.id())\n .secretString(serializeJson(\n jsonObject(\n jsonProperty(\"credentials\", StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"\"\"\n{\n \"type\": \"service_account\",\n \"project_id\": \"example-project\",\n \"private_key_id\": \"example-key\",\n \"private_key\": \"-----BEGIN RSA PRIVATE KEY-----\\nREDACTED\\n-----END RSA PRIVATE KEY-----\",\n \"client_email\": \"example-project@appspot.gserviceaccount.com\",\n \"client_id\": example-client\",\n \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n \"token_uri\": \"https://oauth2.googleapis.com/token\",\n \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com\",\n \"universe_domain\": \"googleapis.com\"\n}\n \"\"\")\n .build()).result())\n )))\n .build());\n\n var exampleConnection = new Connection(\"exampleConnection\", ConnectionArgs.builder()\n .name(\"example\")\n .connectionType(\"BIGQUERY\")\n .connectionProperties(Map.of(\"SparkProperties\", example.name().applyValue(_name -\u003e serializeJson(\n jsonObject(\n jsonProperty(\"secretId\", _name)\n )))))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:secretsmanager:Secret\n properties:\n name: example-secret\n exampleSecretVersion:\n type: aws:secretsmanager:SecretVersion\n name: example\n properties:\n secretId: ${example.id}\n secretString:\n fn::toJSON:\n credentials:\n fn::invoke:\n function: std:base64encode\n arguments:\n input: |\n {\n \"type\": \"service_account\",\n \"project_id\": \"example-project\",\n \"private_key_id\": \"example-key\",\n \"private_key\": \"-----BEGIN RSA PRIVATE KEY-----\\nREDACTED\\n-----END RSA PRIVATE KEY-----\",\n \"client_email\": \"example-project@appspot.gserviceaccount.com\",\n \"client_id\": example-client\",\n \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n \"token_uri\": \"https://oauth2.googleapis.com/token\",\n \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com\",\n \"universe_domain\": \"googleapis.com\"\n }\n return: result\n exampleConnection:\n type: aws:glue:Connection\n name: example\n properties:\n name: example\n connectionType: BIGQUERY\n connectionProperties:\n SparkProperties:\n fn::toJSON:\n secretId: ${example.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch Service Connection\n\nFor more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html#connection-properties-opensearch).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.secretsmanager.Secret(\"example\", {name: \"example-secret\"});\nconst exampleSecretVersion = new aws.secretsmanager.SecretVersion(\"example\", {\n secretId: example.id,\n secretString: JSON.stringify({\n \"opensearch.net.http.auth.user\": \"exampleusername\",\n \"opensearch.net.http.auth.pass\": \"examplepassword\",\n }),\n});\nconst exampleConnection = new aws.glue.Connection(\"example\", {\n name: \"example\",\n connectionType: \"OPENSEARCH\",\n connectionProperties: {\n SparkProperties: pulumi.jsonStringify({\n secretId: example.name,\n \"opensearch.nodes\": \"https://search-exampledomain-ixlmh4jieahrau3bfebcgp8cnm.us-east-1.es.amazonaws.com\",\n \"opensearch.port\": \"443\",\n \"opensearch.aws.sigv4.region\": \"us-east-1\",\n \"opensearch.nodes.wan.only\": \"true\",\n \"opensearch.aws.sigv4.enabled\": \"true\",\n }),\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nexample = aws.secretsmanager.Secret(\"example\", name=\"example-secret\")\nexample_secret_version = aws.secretsmanager.SecretVersion(\"example\",\n secret_id=example.id,\n secret_string=json.dumps({\n \"opensearch.net.http.auth.user\": \"exampleusername\",\n \"opensearch.net.http.auth.pass\": \"examplepassword\",\n }))\nexample_connection = aws.glue.Connection(\"example\",\n name=\"example\",\n connection_type=\"OPENSEARCH\",\n connection_properties={\n \"SparkProperties\": pulumi.Output.json_dumps({\n \"secretId\": example.name,\n \"opensearch.nodes\": \"https://search-exampledomain-ixlmh4jieahrau3bfebcgp8cnm.us-east-1.es.amazonaws.com\",\n \"opensearch.port\": \"443\",\n \"opensearch.aws.sigv4.region\": \"us-east-1\",\n \"opensearch.nodes.wan.only\": \"true\",\n \"opensearch.aws.sigv4.enabled\": \"true\",\n }),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.SecretsManager.Secret(\"example\", new()\n {\n Name = \"example-secret\",\n });\n\n var exampleSecretVersion = new Aws.SecretsManager.SecretVersion(\"example\", new()\n {\n SecretId = example.Id,\n SecretString = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"opensearch.net.http.auth.user\"] = \"exampleusername\",\n [\"opensearch.net.http.auth.pass\"] = \"examplepassword\",\n }),\n });\n\n var exampleConnection = new Aws.Glue.Connection(\"example\", new()\n {\n Name = \"example\",\n ConnectionType = \"OPENSEARCH\",\n ConnectionProperties = \n {\n { \"SparkProperties\", Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n {\n [\"secretId\"] = example.Name,\n [\"opensearch.nodes\"] = \"https://search-exampledomain-ixlmh4jieahrau3bfebcgp8cnm.us-east-1.es.amazonaws.com\",\n [\"opensearch.port\"] = \"443\",\n [\"opensearch.aws.sigv4.region\"] = \"us-east-1\",\n [\"opensearch.nodes.wan.only\"] = \"true\",\n [\"opensearch.aws.sigv4.enabled\"] = \"true\",\n })) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := secretsmanager.NewSecret(ctx, \"example\", \u0026secretsmanager.SecretArgs{\n\t\t\tName: pulumi.String(\"example-secret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"opensearch.net.http.auth.user\": \"exampleusername\",\n\t\t\t\"opensearch.net.http.auth.pass\": \"examplepassword\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = secretsmanager.NewSecretVersion(ctx, \"example\", \u0026secretsmanager.SecretVersionArgs{\n\t\t\tSecretId: example.ID(),\n\t\t\tSecretString: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = glue.NewConnection(ctx, \"example\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tConnectionType: pulumi.String(\"OPENSEARCH\"),\n\t\t\tConnectionProperties: pulumi.StringMap{\n\t\t\t\t\"SparkProperties\": example.Name.ApplyT(func(name string) (pulumi.String, error) {\n\t\t\t\t\tvar _zero pulumi.String\n\t\t\t\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\t\"secretId\": name,\n\t\t\t\t\t\t\"opensearch.nodes\": \"https://search-exampledomain-ixlmh4jieahrau3bfebcgp8cnm.us-east-1.es.amazonaws.com\",\n\t\t\t\t\t\t\"opensearch.port\": \"443\",\n\t\t\t\t\t\t\"opensearch.aws.sigv4.region\": \"us-east-1\",\n\t\t\t\t\t\t\"opensearch.nodes.wan.only\": \"true\",\n\t\t\t\t\t\t\"opensearch.aws.sigv4.enabled\": \"true\",\n\t\t\t\t\t})\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn _zero, err\n\t\t\t\t\t}\n\t\t\t\t\tjson1 := string(tmpJSON1)\n\t\t\t\t\treturn pulumi.String(json1), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.Secret;\nimport com.pulumi.aws.secretsmanager.SecretArgs;\nimport com.pulumi.aws.secretsmanager.SecretVersion;\nimport com.pulumi.aws.secretsmanager.SecretVersionArgs;\nimport com.pulumi.aws.glue.Connection;\nimport com.pulumi.aws.glue.ConnectionArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Secret(\"example\", SecretArgs.builder()\n .name(\"example-secret\")\n .build());\n\n var exampleSecretVersion = new SecretVersion(\"exampleSecretVersion\", SecretVersionArgs.builder()\n .secretId(example.id())\n .secretString(serializeJson(\n jsonObject(\n jsonProperty(\"opensearch.net.http.auth.user\", \"exampleusername\"),\n jsonProperty(\"opensearch.net.http.auth.pass\", \"examplepassword\")\n )))\n .build());\n\n var exampleConnection = new Connection(\"exampleConnection\", ConnectionArgs.builder()\n .name(\"example\")\n .connectionType(\"OPENSEARCH\")\n .connectionProperties(Map.of(\"SparkProperties\", example.name().applyValue(_name -\u003e serializeJson(\n jsonObject(\n jsonProperty(\"secretId\", _name),\n jsonProperty(\"opensearch.nodes\", \"https://search-exampledomain-ixlmh4jieahrau3bfebcgp8cnm.us-east-1.es.amazonaws.com\"),\n jsonProperty(\"opensearch.port\", \"443\"),\n jsonProperty(\"opensearch.aws.sigv4.region\", \"us-east-1\"),\n jsonProperty(\"opensearch.nodes.wan.only\", \"true\"),\n jsonProperty(\"opensearch.aws.sigv4.enabled\", \"true\")\n )))))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:secretsmanager:Secret\n properties:\n name: example-secret\n exampleSecretVersion:\n type: aws:secretsmanager:SecretVersion\n name: example\n properties:\n secretId: ${example.id}\n secretString:\n fn::toJSON:\n opensearch.net.http.auth.user: exampleusername\n opensearch.net.http.auth.pass: examplepassword\n exampleConnection:\n type: aws:glue:Connection\n name: example\n properties:\n name: example\n connectionType: OPENSEARCH\n connectionProperties:\n SparkProperties:\n fn::toJSON:\n secretId: ${example.name}\n opensearch.nodes: https://search-exampledomain-ixlmh4jieahrau3bfebcgp8cnm.us-east-1.es.amazonaws.com\n opensearch.port: '443'\n opensearch.aws.sigv4.region: us-east-1\n opensearch.nodes.wan.only: 'true'\n opensearch.aws.sigv4.enabled: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Snowflake Connection\n\nFor more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html#connection-properties-snowflake).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.secretsmanager.Secret(\"example\", {name: \"example-secret\"});\nconst exampleSecretVersion = new aws.secretsmanager.SecretVersion(\"example\", {\n secretId: example.id,\n secretString: JSON.stringify({\n sfUser: \"exampleusername\",\n sfPassword: \"examplepassword\",\n }),\n});\nconst exampleConnection = new aws.glue.Connection(\"example\", {\n name: \"example\",\n connectionType: \"SNOWFLAKE\",\n connectionProperties: {\n SparkProperties: pulumi.jsonStringify({\n secretId: example.name,\n sfRole: \"EXAMPLEETLROLE\",\n sfUrl: \"exampleorg-exampleconnection.snowflakecomputing.com\",\n }),\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nexample = aws.secretsmanager.Secret(\"example\", name=\"example-secret\")\nexample_secret_version = aws.secretsmanager.SecretVersion(\"example\",\n secret_id=example.id,\n secret_string=json.dumps({\n \"sfUser\": \"exampleusername\",\n \"sfPassword\": \"examplepassword\",\n }))\nexample_connection = aws.glue.Connection(\"example\",\n name=\"example\",\n connection_type=\"SNOWFLAKE\",\n connection_properties={\n \"SparkProperties\": pulumi.Output.json_dumps({\n \"secretId\": example.name,\n \"sfRole\": \"EXAMPLEETLROLE\",\n \"sfUrl\": \"exampleorg-exampleconnection.snowflakecomputing.com\",\n }),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.SecretsManager.Secret(\"example\", new()\n {\n Name = \"example-secret\",\n });\n\n var exampleSecretVersion = new Aws.SecretsManager.SecretVersion(\"example\", new()\n {\n SecretId = example.Id,\n SecretString = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"sfUser\"] = \"exampleusername\",\n [\"sfPassword\"] = \"examplepassword\",\n }),\n });\n\n var exampleConnection = new Aws.Glue.Connection(\"example\", new()\n {\n Name = \"example\",\n ConnectionType = \"SNOWFLAKE\",\n ConnectionProperties = \n {\n { \"SparkProperties\", Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n {\n [\"secretId\"] = example.Name,\n [\"sfRole\"] = \"EXAMPLEETLROLE\",\n [\"sfUrl\"] = \"exampleorg-exampleconnection.snowflakecomputing.com\",\n })) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := secretsmanager.NewSecret(ctx, \"example\", \u0026secretsmanager.SecretArgs{\n\t\t\tName: pulumi.String(\"example-secret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"sfUser\": \"exampleusername\",\n\t\t\t\"sfPassword\": \"examplepassword\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = secretsmanager.NewSecretVersion(ctx, \"example\", \u0026secretsmanager.SecretVersionArgs{\n\t\t\tSecretId: example.ID(),\n\t\t\tSecretString: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = glue.NewConnection(ctx, \"example\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tConnectionType: pulumi.String(\"SNOWFLAKE\"),\n\t\t\tConnectionProperties: pulumi.StringMap{\n\t\t\t\t\"SparkProperties\": example.Name.ApplyT(func(name string) (pulumi.String, error) {\n\t\t\t\t\tvar _zero pulumi.String\n\t\t\t\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\t\"secretId\": name,\n\t\t\t\t\t\t\"sfRole\": \"EXAMPLEETLROLE\",\n\t\t\t\t\t\t\"sfUrl\": \"exampleorg-exampleconnection.snowflakecomputing.com\",\n\t\t\t\t\t})\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn _zero, err\n\t\t\t\t\t}\n\t\t\t\t\tjson1 := string(tmpJSON1)\n\t\t\t\t\treturn pulumi.String(json1), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.Secret;\nimport com.pulumi.aws.secretsmanager.SecretArgs;\nimport com.pulumi.aws.secretsmanager.SecretVersion;\nimport com.pulumi.aws.secretsmanager.SecretVersionArgs;\nimport com.pulumi.aws.glue.Connection;\nimport com.pulumi.aws.glue.ConnectionArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Secret(\"example\", SecretArgs.builder()\n .name(\"example-secret\")\n .build());\n\n var exampleSecretVersion = new SecretVersion(\"exampleSecretVersion\", SecretVersionArgs.builder()\n .secretId(example.id())\n .secretString(serializeJson(\n jsonObject(\n jsonProperty(\"sfUser\", \"exampleusername\"),\n jsonProperty(\"sfPassword\", \"examplepassword\")\n )))\n .build());\n\n var exampleConnection = new Connection(\"exampleConnection\", ConnectionArgs.builder()\n .name(\"example\")\n .connectionType(\"SNOWFLAKE\")\n .connectionProperties(Map.of(\"SparkProperties\", example.name().applyValue(_name -\u003e serializeJson(\n jsonObject(\n jsonProperty(\"secretId\", _name),\n jsonProperty(\"sfRole\", \"EXAMPLEETLROLE\"),\n jsonProperty(\"sfUrl\", \"exampleorg-exampleconnection.snowflakecomputing.com\")\n )))))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:secretsmanager:Secret\n properties:\n name: example-secret\n exampleSecretVersion:\n type: aws:secretsmanager:SecretVersion\n name: example\n properties:\n secretId: ${example.id}\n secretString:\n fn::toJSON:\n sfUser: exampleusername\n sfPassword: examplepassword\n exampleConnection:\n type: aws:glue:Connection\n name: example\n properties:\n name: example\n connectionType: SNOWFLAKE\n connectionProperties:\n SparkProperties:\n fn::toJSON:\n secretId: ${example.name}\n sfRole: EXAMPLEETLROLE\n sfUrl: exampleorg-exampleconnection.snowflakecomputing.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### DynamoDB Connection\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.glue.Connection(\"test\", {\n name: \"example\",\n connectionType: \"DYNAMODB\",\n athenaProperties: {\n lambda_function_arn: \"arn:aws:lambda:us-east-1:123456789012:function:athenafederatedcatalog_athena_abcdefgh\",\n disable_spill_encryption: \"false\",\n spill_bucket: \"example-bucket\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.glue.Connection(\"test\",\n name=\"example\",\n connection_type=\"DYNAMODB\",\n athena_properties={\n \"lambda_function_arn\": \"arn:aws:lambda:us-east-1:123456789012:function:athenafederatedcatalog_athena_abcdefgh\",\n \"disable_spill_encryption\": \"false\",\n \"spill_bucket\": \"example-bucket\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Aws.Glue.Connection(\"test\", new()\n {\n Name = \"example\",\n ConnectionType = \"DYNAMODB\",\n AthenaProperties = \n {\n { \"lambda_function_arn\", \"arn:aws:lambda:us-east-1:123456789012:function:athenafederatedcatalog_athena_abcdefgh\" },\n { \"disable_spill_encryption\", \"false\" },\n { \"spill_bucket\", \"example-bucket\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := glue.NewConnection(ctx, \"test\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tConnectionType: pulumi.String(\"DYNAMODB\"),\n\t\t\tAthenaProperties: pulumi.StringMap{\n\t\t\t\t\"lambda_function_arn\": pulumi.String(\"arn:aws:lambda:us-east-1:123456789012:function:athenafederatedcatalog_athena_abcdefgh\"),\n\t\t\t\t\"disable_spill_encryption\": pulumi.String(\"false\"),\n\t\t\t\t\"spill_bucket\": pulumi.String(\"example-bucket\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.glue.Connection;\nimport com.pulumi.aws.glue.ConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Connection(\"test\", ConnectionArgs.builder()\n .name(\"example\")\n .connectionType(\"DYNAMODB\")\n .athenaProperties(Map.ofEntries(\n Map.entry(\"lambda_function_arn\", \"arn:aws:lambda:us-east-1:123456789012:function:athenafederatedcatalog_athena_abcdefgh\"),\n Map.entry(\"disable_spill_encryption\", \"false\"),\n Map.entry(\"spill_bucket\", \"example-bucket\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:glue:Connection\n properties:\n name: example\n connectionType: DYNAMODB\n athenaProperties:\n lambda_function_arn: arn:aws:lambda:us-east-1:123456789012:function:athenafederatedcatalog_athena_abcdefgh\n disable_spill_encryption: 'false'\n spill_bucket: example-bucket\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Glue Connections using the `CATALOG-ID` (AWS account ID if not custom) and `NAME`. For example:\n\n```sh\n$ pulumi import aws:glue/connection:Connection MyConnection 123456789012:MyConnection\n```\n", + "description": "Provides a Glue Connection resource.\n\n## Example Usage\n\n### Non-VPC Connection\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.glue.Connection(\"example\", {\n name: \"example\",\n connectionProperties: {\n JDBC_CONNECTION_URL: \"jdbc:mysql://example.com/exampledatabase\",\n PASSWORD: \"examplepassword\",\n USERNAME: \"exampleusername\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.glue.Connection(\"example\",\n name=\"example\",\n connection_properties={\n \"JDBC_CONNECTION_URL\": \"jdbc:mysql://example.com/exampledatabase\",\n \"PASSWORD\": \"examplepassword\",\n \"USERNAME\": \"exampleusername\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Glue.Connection(\"example\", new()\n {\n Name = \"example\",\n ConnectionProperties = \n {\n { \"JDBC_CONNECTION_URL\", \"jdbc:mysql://example.com/exampledatabase\" },\n { \"PASSWORD\", \"examplepassword\" },\n { \"USERNAME\", \"exampleusername\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := glue.NewConnection(ctx, \"example\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tConnectionProperties: pulumi.StringMap{\n\t\t\t\t\"JDBC_CONNECTION_URL\": pulumi.String(\"jdbc:mysql://example.com/exampledatabase\"),\n\t\t\t\t\"PASSWORD\": pulumi.String(\"examplepassword\"),\n\t\t\t\t\"USERNAME\": pulumi.String(\"exampleusername\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.glue.Connection;\nimport com.pulumi.aws.glue.ConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Connection(\"example\", ConnectionArgs.builder()\n .name(\"example\")\n .connectionProperties(Map.ofEntries(\n Map.entry(\"JDBC_CONNECTION_URL\", \"jdbc:mysql://example.com/exampledatabase\"),\n Map.entry(\"PASSWORD\", \"examplepassword\"),\n Map.entry(\"USERNAME\", \"exampleusername\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:glue:Connection\n properties:\n name: example\n connectionProperties:\n JDBC_CONNECTION_URL: jdbc:mysql://example.com/exampledatabase\n PASSWORD: examplepassword\n USERNAME: exampleusername\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Non-VPC Connection with secret manager reference\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = aws.secretsmanager.getSecret({\n name: \"example-secret\",\n});\nconst exampleConnection = new aws.glue.Connection(\"example\", {\n name: \"example\",\n connectionProperties: {\n JDBC_CONNECTION_URL: \"jdbc:mysql://example.com/exampledatabase\",\n SECRET_ID: example.then(example =\u003e example.name),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.secretsmanager.get_secret(name=\"example-secret\")\nexample_connection = aws.glue.Connection(\"example\",\n name=\"example\",\n connection_properties={\n \"JDBC_CONNECTION_URL\": \"jdbc:mysql://example.com/exampledatabase\",\n \"SECRET_ID\": example.name,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.SecretsManager.GetSecret.Invoke(new()\n {\n Name = \"example-secret\",\n });\n\n var exampleConnection = new Aws.Glue.Connection(\"example\", new()\n {\n Name = \"example\",\n ConnectionProperties = \n {\n { \"JDBC_CONNECTION_URL\", \"jdbc:mysql://example.com/exampledatabase\" },\n { \"SECRET_ID\", example.Apply(getSecretResult =\u003e getSecretResult.Name) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := secretsmanager.LookupSecret(ctx, \u0026secretsmanager.LookupSecretArgs{\n\t\t\tName: pulumi.StringRef(\"example-secret\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = glue.NewConnection(ctx, \"example\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tConnectionProperties: pulumi.StringMap{\n\t\t\t\t\"JDBC_CONNECTION_URL\": pulumi.String(\"jdbc:mysql://example.com/exampledatabase\"),\n\t\t\t\t\"SECRET_ID\": pulumi.String(example.Name),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.SecretsmanagerFunctions;\nimport com.pulumi.aws.secretsmanager.inputs.GetSecretArgs;\nimport com.pulumi.aws.glue.Connection;\nimport com.pulumi.aws.glue.ConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = SecretsmanagerFunctions.getSecret(GetSecretArgs.builder()\n .name(\"example-secret\")\n .build());\n\n var exampleConnection = new Connection(\"exampleConnection\", ConnectionArgs.builder()\n .name(\"example\")\n .connectionProperties(Map.ofEntries(\n Map.entry(\"JDBC_CONNECTION_URL\", \"jdbc:mysql://example.com/exampledatabase\"),\n Map.entry(\"SECRET_ID\", example.name())\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleConnection:\n type: aws:glue:Connection\n name: example\n properties:\n name: example\n connectionProperties:\n JDBC_CONNECTION_URL: jdbc:mysql://example.com/exampledatabase\n SECRET_ID: ${example.name}\nvariables:\n example:\n fn::invoke:\n function: aws:secretsmanager:getSecret\n arguments:\n name: example-secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### VPC Connection\n\nFor more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/populate-add-connection.html#connection-JDBC-VPC).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.glue.Connection(\"example\", {\n name: \"example\",\n connectionProperties: {\n JDBC_CONNECTION_URL: `jdbc:mysql://${exampleAwsRdsCluster.endpoint}/exampledatabase`,\n PASSWORD: \"examplepassword\",\n USERNAME: \"exampleusername\",\n },\n physicalConnectionRequirements: {\n availabilityZone: exampleAwsSubnet.availabilityZone,\n securityGroupIdLists: [exampleAwsSecurityGroup.id],\n subnetId: exampleAwsSubnet.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.glue.Connection(\"example\",\n name=\"example\",\n connection_properties={\n \"JDBC_CONNECTION_URL\": f\"jdbc:mysql://{example_aws_rds_cluster['endpoint']}/exampledatabase\",\n \"PASSWORD\": \"examplepassword\",\n \"USERNAME\": \"exampleusername\",\n },\n physical_connection_requirements={\n \"availability_zone\": example_aws_subnet[\"availabilityZone\"],\n \"security_group_id_lists\": [example_aws_security_group[\"id\"]],\n \"subnet_id\": example_aws_subnet[\"id\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Glue.Connection(\"example\", new()\n {\n Name = \"example\",\n ConnectionProperties = \n {\n { \"JDBC_CONNECTION_URL\", $\"jdbc:mysql://{exampleAwsRdsCluster.Endpoint}/exampledatabase\" },\n { \"PASSWORD\", \"examplepassword\" },\n { \"USERNAME\", \"exampleusername\" },\n },\n PhysicalConnectionRequirements = new Aws.Glue.Inputs.ConnectionPhysicalConnectionRequirementsArgs\n {\n AvailabilityZone = exampleAwsSubnet.AvailabilityZone,\n SecurityGroupIdLists = new[]\n {\n exampleAwsSecurityGroup.Id,\n },\n SubnetId = exampleAwsSubnet.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := glue.NewConnection(ctx, \"example\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tConnectionProperties: pulumi.StringMap{\n\t\t\t\t\"JDBC_CONNECTION_URL\": pulumi.Sprintf(\"jdbc:mysql://%v/exampledatabase\", exampleAwsRdsCluster.Endpoint),\n\t\t\t\t\"PASSWORD\": pulumi.String(\"examplepassword\"),\n\t\t\t\t\"USERNAME\": pulumi.String(\"exampleusername\"),\n\t\t\t},\n\t\t\tPhysicalConnectionRequirements: \u0026glue.ConnectionPhysicalConnectionRequirementsArgs{\n\t\t\t\tAvailabilityZone: pulumi.Any(exampleAwsSubnet.AvailabilityZone),\n\t\t\t\tSecurityGroupIdLists: pulumi.StringArray{\n\t\t\t\t\texampleAwsSecurityGroup.Id,\n\t\t\t\t},\n\t\t\t\tSubnetId: pulumi.Any(exampleAwsSubnet.Id),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.glue.Connection;\nimport com.pulumi.aws.glue.ConnectionArgs;\nimport com.pulumi.aws.glue.inputs.ConnectionPhysicalConnectionRequirementsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Connection(\"example\", ConnectionArgs.builder()\n .name(\"example\")\n .connectionProperties(Map.ofEntries(\n Map.entry(\"JDBC_CONNECTION_URL\", String.format(\"jdbc:mysql://%s/exampledatabase\", exampleAwsRdsCluster.endpoint())),\n Map.entry(\"PASSWORD\", \"examplepassword\"),\n Map.entry(\"USERNAME\", \"exampleusername\")\n ))\n .physicalConnectionRequirements(ConnectionPhysicalConnectionRequirementsArgs.builder()\n .availabilityZone(exampleAwsSubnet.availabilityZone())\n .securityGroupIdLists(exampleAwsSecurityGroup.id())\n .subnetId(exampleAwsSubnet.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:glue:Connection\n properties:\n name: example\n connectionProperties:\n JDBC_CONNECTION_URL: jdbc:mysql://${exampleAwsRdsCluster.endpoint}/exampledatabase\n PASSWORD: examplepassword\n USERNAME: exampleusername\n physicalConnectionRequirements:\n availabilityZone: ${exampleAwsSubnet.availabilityZone}\n securityGroupIdLists:\n - ${exampleAwsSecurityGroup.id}\n subnetId: ${exampleAwsSubnet.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Connection using a custom connector\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// Define the custom connector using the connection_type of `CUSTOM` with the match_criteria of `template_connection`\n// Example here being a snowflake jdbc connector with a secret having user and password as keys\nconst example = aws.secretsmanager.getSecret({\n name: \"example-secret\",\n});\nconst example1 = new aws.glue.Connection(\"example1\", {\n name: \"example1\",\n connectionType: \"CUSTOM\",\n connectionProperties: {\n CONNECTOR_CLASS_NAME: \"net.snowflake.client.jdbc.SnowflakeDriver\",\n CONNECTION_TYPE: \"Jdbc\",\n CONNECTOR_URL: \"s3://example/snowflake-jdbc.jar\",\n JDBC_CONNECTION_URL: \"[[\\\"default=jdbc:snowflake://example.com/?user=${user}\u0026password=${password}\\\"],\\\",\\\"]\",\n },\n matchCriterias: [\"template-connection\"],\n});\n// Reference the connector using match_criteria with the connector created above.\nconst example2 = new aws.glue.Connection(\"example2\", {\n name: \"example2\",\n connectionType: \"CUSTOM\",\n connectionProperties: {\n CONNECTOR_CLASS_NAME: \"net.snowflake.client.jdbc.SnowflakeDriver\",\n CONNECTION_TYPE: \"Jdbc\",\n CONNECTOR_URL: \"s3://example/snowflake-jdbc.jar\",\n JDBC_CONNECTION_URL: \"jdbc:snowflake://example.com/?user=${user}\u0026password=${password}\",\n SECRET_ID: example.then(example =\u003e example.name),\n },\n matchCriterias: [\n \"Connection\",\n example1.name,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\n# Define the custom connector using the connection_type of `CUSTOM` with the match_criteria of `template_connection`\n# Example here being a snowflake jdbc connector with a secret having user and password as keys\nexample = aws.secretsmanager.get_secret(name=\"example-secret\")\nexample1 = aws.glue.Connection(\"example1\",\n name=\"example1\",\n connection_type=\"CUSTOM\",\n connection_properties={\n \"CONNECTOR_CLASS_NAME\": \"net.snowflake.client.jdbc.SnowflakeDriver\",\n \"CONNECTION_TYPE\": \"Jdbc\",\n \"CONNECTOR_URL\": \"s3://example/snowflake-jdbc.jar\",\n \"JDBC_CONNECTION_URL\": \"[[\\\"default=jdbc:snowflake://example.com/?user=${user}\u0026password=${password}\\\"],\\\",\\\"]\",\n },\n match_criterias=[\"template-connection\"])\n# Reference the connector using match_criteria with the connector created above.\nexample2 = aws.glue.Connection(\"example2\",\n name=\"example2\",\n connection_type=\"CUSTOM\",\n connection_properties={\n \"CONNECTOR_CLASS_NAME\": \"net.snowflake.client.jdbc.SnowflakeDriver\",\n \"CONNECTION_TYPE\": \"Jdbc\",\n \"CONNECTOR_URL\": \"s3://example/snowflake-jdbc.jar\",\n \"JDBC_CONNECTION_URL\": \"jdbc:snowflake://example.com/?user=${user}\u0026password=${password}\",\n \"SECRET_ID\": example.name,\n },\n match_criterias=[\n \"Connection\",\n example1.name,\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Define the custom connector using the connection_type of `CUSTOM` with the match_criteria of `template_connection`\n // Example here being a snowflake jdbc connector with a secret having user and password as keys\n var example = Aws.SecretsManager.GetSecret.Invoke(new()\n {\n Name = \"example-secret\",\n });\n\n var example1 = new Aws.Glue.Connection(\"example1\", new()\n {\n Name = \"example1\",\n ConnectionType = \"CUSTOM\",\n ConnectionProperties = \n {\n { \"CONNECTOR_CLASS_NAME\", \"net.snowflake.client.jdbc.SnowflakeDriver\" },\n { \"CONNECTION_TYPE\", \"Jdbc\" },\n { \"CONNECTOR_URL\", \"s3://example/snowflake-jdbc.jar\" },\n { \"JDBC_CONNECTION_URL\", \"[[\\\"default=jdbc:snowflake://example.com/?user=${user}\u0026password=${password}\\\"],\\\",\\\"]\" },\n },\n MatchCriterias = new[]\n {\n \"template-connection\",\n },\n });\n\n // Reference the connector using match_criteria with the connector created above.\n var example2 = new Aws.Glue.Connection(\"example2\", new()\n {\n Name = \"example2\",\n ConnectionType = \"CUSTOM\",\n ConnectionProperties = \n {\n { \"CONNECTOR_CLASS_NAME\", \"net.snowflake.client.jdbc.SnowflakeDriver\" },\n { \"CONNECTION_TYPE\", \"Jdbc\" },\n { \"CONNECTOR_URL\", \"s3://example/snowflake-jdbc.jar\" },\n { \"JDBC_CONNECTION_URL\", \"jdbc:snowflake://example.com/?user=${user}\u0026password=${password}\" },\n { \"SECRET_ID\", example.Apply(getSecretResult =\u003e getSecretResult.Name) },\n },\n MatchCriterias = new[]\n {\n \"Connection\",\n example1.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Define the custom connector using the connection_type of `CUSTOM` with the match_criteria of `template_connection`\n\t\t// Example here being a snowflake jdbc connector with a secret having user and password as keys\n\t\texample, err := secretsmanager.LookupSecret(ctx, \u0026secretsmanager.LookupSecretArgs{\n\t\t\tName: pulumi.StringRef(\"example-secret\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample1, err := glue.NewConnection(ctx, \"example1\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example1\"),\n\t\t\tConnectionType: pulumi.String(\"CUSTOM\"),\n\t\t\tConnectionProperties: pulumi.StringMap{\n\t\t\t\t\"CONNECTOR_CLASS_NAME\": pulumi.String(\"net.snowflake.client.jdbc.SnowflakeDriver\"),\n\t\t\t\t\"CONNECTION_TYPE\": pulumi.String(\"Jdbc\"),\n\t\t\t\t\"CONNECTOR_URL\": pulumi.String(\"s3://example/snowflake-jdbc.jar\"),\n\t\t\t\t\"JDBC_CONNECTION_URL\": pulumi.String(\"[[\\\"default=jdbc:snowflake://example.com/?user=${user}\u0026password=${password}\\\"],\\\",\\\"]\"),\n\t\t\t},\n\t\t\tMatchCriterias: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"template-connection\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Reference the connector using match_criteria with the connector created above.\n\t\t_, err = glue.NewConnection(ctx, \"example2\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example2\"),\n\t\t\tConnectionType: pulumi.String(\"CUSTOM\"),\n\t\t\tConnectionProperties: pulumi.StringMap{\n\t\t\t\t\"CONNECTOR_CLASS_NAME\": pulumi.String(\"net.snowflake.client.jdbc.SnowflakeDriver\"),\n\t\t\t\t\"CONNECTION_TYPE\": pulumi.String(\"Jdbc\"),\n\t\t\t\t\"CONNECTOR_URL\": pulumi.String(\"s3://example/snowflake-jdbc.jar\"),\n\t\t\t\t\"JDBC_CONNECTION_URL\": pulumi.String(\"jdbc:snowflake://example.com/?user=${user}\u0026password=${password}\"),\n\t\t\t\t\"SECRET_ID\": pulumi.String(example.Name),\n\t\t\t},\n\t\t\tMatchCriterias: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Connection\"),\n\t\t\t\texample1.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.SecretsmanagerFunctions;\nimport com.pulumi.aws.secretsmanager.inputs.GetSecretArgs;\nimport com.pulumi.aws.glue.Connection;\nimport com.pulumi.aws.glue.ConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Define the custom connector using the connection_type of `CUSTOM` with the match_criteria of `template_connection`\n // Example here being a snowflake jdbc connector with a secret having user and password as keys\n final var example = SecretsmanagerFunctions.getSecret(GetSecretArgs.builder()\n .name(\"example-secret\")\n .build());\n\n var example1 = new Connection(\"example1\", ConnectionArgs.builder()\n .name(\"example1\")\n .connectionType(\"CUSTOM\")\n .connectionProperties(Map.ofEntries(\n Map.entry(\"CONNECTOR_CLASS_NAME\", \"net.snowflake.client.jdbc.SnowflakeDriver\"),\n Map.entry(\"CONNECTION_TYPE\", \"Jdbc\"),\n Map.entry(\"CONNECTOR_URL\", \"s3://example/snowflake-jdbc.jar\"),\n Map.entry(\"JDBC_CONNECTION_URL\", \"[[\\\"default=jdbc:snowflake://example.com/?user=${user}\u0026password=${password}\\\"],\\\",\\\"]\")\n ))\n .matchCriterias(\"template-connection\")\n .build());\n\n // Reference the connector using match_criteria with the connector created above.\n var example2 = new Connection(\"example2\", ConnectionArgs.builder()\n .name(\"example2\")\n .connectionType(\"CUSTOM\")\n .connectionProperties(Map.ofEntries(\n Map.entry(\"CONNECTOR_CLASS_NAME\", \"net.snowflake.client.jdbc.SnowflakeDriver\"),\n Map.entry(\"CONNECTION_TYPE\", \"Jdbc\"),\n Map.entry(\"CONNECTOR_URL\", \"s3://example/snowflake-jdbc.jar\"),\n Map.entry(\"JDBC_CONNECTION_URL\", \"jdbc:snowflake://example.com/?user=${user}\u0026password=${password}\"),\n Map.entry(\"SECRET_ID\", example.name())\n ))\n .matchCriterias( \n \"Connection\",\n example1.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example1:\n type: aws:glue:Connection\n properties:\n name: example1\n connectionType: CUSTOM\n connectionProperties:\n CONNECTOR_CLASS_NAME: net.snowflake.client.jdbc.SnowflakeDriver\n CONNECTION_TYPE: Jdbc\n CONNECTOR_URL: s3://example/snowflake-jdbc.jar\n JDBC_CONNECTION_URL: '[[\"default=jdbc:snowflake://example.com/?user=$${user}\u0026password=$${password}\"],\",\"]'\n matchCriterias:\n - template-connection\n # Reference the connector using match_criteria with the connector created above.\n example2:\n type: aws:glue:Connection\n properties:\n name: example2\n connectionType: CUSTOM\n connectionProperties:\n CONNECTOR_CLASS_NAME: net.snowflake.client.jdbc.SnowflakeDriver\n CONNECTION_TYPE: Jdbc\n CONNECTOR_URL: s3://example/snowflake-jdbc.jar\n JDBC_CONNECTION_URL: jdbc:snowflake://example.com/?user=$${user}\u0026password=$${password}\n SECRET_ID: ${example.name}\n matchCriterias:\n - Connection\n - ${example1.name}\nvariables:\n # Define the custom connector using the connection_type of `CUSTOM` with the match_criteria of `template_connection`\n # Example here being a snowflake jdbc connector with a secret having user and password as keys\n example:\n fn::invoke:\n function: aws:secretsmanager:getSecret\n arguments:\n name: example-secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Azure Cosmos Connection\n\nFor more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html#connection-properties-azurecosmos).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.secretsmanager.Secret(\"example\", {name: \"example-secret\"});\nconst exampleSecretVersion = new aws.secretsmanager.SecretVersion(\"example\", {\n secretId: example.id,\n secretString: JSON.stringify({\n username: \"exampleusername\",\n password: \"examplepassword\",\n }),\n});\nconst exampleConnection = new aws.glue.Connection(\"example\", {\n name: \"example\",\n connectionType: \"AZURECOSMOS\",\n connectionProperties: {\n SparkProperties: pulumi.jsonStringify({\n secretId: example.name,\n \"spark.cosmos.accountEndpoint\": \"https://exampledbaccount.documents.azure.com:443/\",\n }),\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nexample = aws.secretsmanager.Secret(\"example\", name=\"example-secret\")\nexample_secret_version = aws.secretsmanager.SecretVersion(\"example\",\n secret_id=example.id,\n secret_string=json.dumps({\n \"username\": \"exampleusername\",\n \"password\": \"examplepassword\",\n }))\nexample_connection = aws.glue.Connection(\"example\",\n name=\"example\",\n connection_type=\"AZURECOSMOS\",\n connection_properties={\n \"SparkProperties\": pulumi.Output.json_dumps({\n \"secretId\": example.name,\n \"spark.cosmos.accountEndpoint\": \"https://exampledbaccount.documents.azure.com:443/\",\n }),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.SecretsManager.Secret(\"example\", new()\n {\n Name = \"example-secret\",\n });\n\n var exampleSecretVersion = new Aws.SecretsManager.SecretVersion(\"example\", new()\n {\n SecretId = example.Id,\n SecretString = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"username\"] = \"exampleusername\",\n [\"password\"] = \"examplepassword\",\n }),\n });\n\n var exampleConnection = new Aws.Glue.Connection(\"example\", new()\n {\n Name = \"example\",\n ConnectionType = \"AZURECOSMOS\",\n ConnectionProperties = \n {\n { \"SparkProperties\", Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n {\n [\"secretId\"] = example.Name,\n [\"spark.cosmos.accountEndpoint\"] = \"https://exampledbaccount.documents.azure.com:443/\",\n })) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := secretsmanager.NewSecret(ctx, \"example\", \u0026secretsmanager.SecretArgs{\n\t\t\tName: pulumi.String(\"example-secret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"username\": \"exampleusername\",\n\t\t\t\"password\": \"examplepassword\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = secretsmanager.NewSecretVersion(ctx, \"example\", \u0026secretsmanager.SecretVersionArgs{\n\t\t\tSecretId: example.ID(),\n\t\t\tSecretString: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = glue.NewConnection(ctx, \"example\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tConnectionType: pulumi.String(\"AZURECOSMOS\"),\n\t\t\tConnectionProperties: pulumi.StringMap{\n\t\t\t\t\"SparkProperties\": example.Name.ApplyT(func(name string) (pulumi.String, error) {\n\t\t\t\t\tvar _zero pulumi.String\n\t\t\t\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\t\"secretId\": name,\n\t\t\t\t\t\t\"spark.cosmos.accountEndpoint\": \"https://exampledbaccount.documents.azure.com:443/\",\n\t\t\t\t\t})\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn _zero, err\n\t\t\t\t\t}\n\t\t\t\t\tjson1 := string(tmpJSON1)\n\t\t\t\t\treturn pulumi.String(json1), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.Secret;\nimport com.pulumi.aws.secretsmanager.SecretArgs;\nimport com.pulumi.aws.secretsmanager.SecretVersion;\nimport com.pulumi.aws.secretsmanager.SecretVersionArgs;\nimport com.pulumi.aws.glue.Connection;\nimport com.pulumi.aws.glue.ConnectionArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Secret(\"example\", SecretArgs.builder()\n .name(\"example-secret\")\n .build());\n\n var exampleSecretVersion = new SecretVersion(\"exampleSecretVersion\", SecretVersionArgs.builder()\n .secretId(example.id())\n .secretString(serializeJson(\n jsonObject(\n jsonProperty(\"username\", \"exampleusername\"),\n jsonProperty(\"password\", \"examplepassword\")\n )))\n .build());\n\n var exampleConnection = new Connection(\"exampleConnection\", ConnectionArgs.builder()\n .name(\"example\")\n .connectionType(\"AZURECOSMOS\")\n .connectionProperties(Map.of(\"SparkProperties\", example.name().applyValue(_name -\u003e serializeJson(\n jsonObject(\n jsonProperty(\"secretId\", _name),\n jsonProperty(\"spark.cosmos.accountEndpoint\", \"https://exampledbaccount.documents.azure.com:443/\")\n )))))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:secretsmanager:Secret\n properties:\n name: example-secret\n exampleSecretVersion:\n type: aws:secretsmanager:SecretVersion\n name: example\n properties:\n secretId: ${example.id}\n secretString:\n fn::toJSON:\n username: exampleusername\n password: examplepassword\n exampleConnection:\n type: aws:glue:Connection\n name: example\n properties:\n name: example\n connectionType: AZURECOSMOS\n connectionProperties:\n SparkProperties:\n fn::toJSON:\n secretId: ${example.name}\n spark.cosmos.accountEndpoint: https://exampledbaccount.documents.azure.com:443/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Azure SQL Connection\n\nFor more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html#connection-properties-azuresql).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.secretsmanager.Secret(\"example\", {name: \"example-secret\"});\nconst exampleSecretVersion = new aws.secretsmanager.SecretVersion(\"example\", {\n secretId: example.id,\n secretString: JSON.stringify({\n username: \"exampleusername\",\n password: \"examplepassword\",\n }),\n});\nconst exampleConnection = new aws.glue.Connection(\"example\", {\n name: \"example\",\n connectionType: \"AZURECOSMOS\",\n connectionProperties: {\n SparkProperties: pulumi.jsonStringify({\n secretId: example.name,\n url: \"jdbc:sqlserver:exampledbserver.database.windows.net:1433;database=exampledatabase\",\n }),\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nexample = aws.secretsmanager.Secret(\"example\", name=\"example-secret\")\nexample_secret_version = aws.secretsmanager.SecretVersion(\"example\",\n secret_id=example.id,\n secret_string=json.dumps({\n \"username\": \"exampleusername\",\n \"password\": \"examplepassword\",\n }))\nexample_connection = aws.glue.Connection(\"example\",\n name=\"example\",\n connection_type=\"AZURECOSMOS\",\n connection_properties={\n \"SparkProperties\": pulumi.Output.json_dumps({\n \"secretId\": example.name,\n \"url\": \"jdbc:sqlserver:exampledbserver.database.windows.net:1433;database=exampledatabase\",\n }),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.SecretsManager.Secret(\"example\", new()\n {\n Name = \"example-secret\",\n });\n\n var exampleSecretVersion = new Aws.SecretsManager.SecretVersion(\"example\", new()\n {\n SecretId = example.Id,\n SecretString = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"username\"] = \"exampleusername\",\n [\"password\"] = \"examplepassword\",\n }),\n });\n\n var exampleConnection = new Aws.Glue.Connection(\"example\", new()\n {\n Name = \"example\",\n ConnectionType = \"AZURECOSMOS\",\n ConnectionProperties = \n {\n { \"SparkProperties\", Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n {\n [\"secretId\"] = example.Name,\n [\"url\"] = \"jdbc:sqlserver:exampledbserver.database.windows.net:1433;database=exampledatabase\",\n })) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := secretsmanager.NewSecret(ctx, \"example\", \u0026secretsmanager.SecretArgs{\n\t\t\tName: pulumi.String(\"example-secret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"username\": \"exampleusername\",\n\t\t\t\"password\": \"examplepassword\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = secretsmanager.NewSecretVersion(ctx, \"example\", \u0026secretsmanager.SecretVersionArgs{\n\t\t\tSecretId: example.ID(),\n\t\t\tSecretString: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = glue.NewConnection(ctx, \"example\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tConnectionType: pulumi.String(\"AZURECOSMOS\"),\n\t\t\tConnectionProperties: pulumi.StringMap{\n\t\t\t\t\"SparkProperties\": example.Name.ApplyT(func(name string) (pulumi.String, error) {\n\t\t\t\t\tvar _zero pulumi.String\n\t\t\t\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\t\"secretId\": name,\n\t\t\t\t\t\t\"url\": \"jdbc:sqlserver:exampledbserver.database.windows.net:1433;database=exampledatabase\",\n\t\t\t\t\t})\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn _zero, err\n\t\t\t\t\t}\n\t\t\t\t\tjson1 := string(tmpJSON1)\n\t\t\t\t\treturn pulumi.String(json1), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.Secret;\nimport com.pulumi.aws.secretsmanager.SecretArgs;\nimport com.pulumi.aws.secretsmanager.SecretVersion;\nimport com.pulumi.aws.secretsmanager.SecretVersionArgs;\nimport com.pulumi.aws.glue.Connection;\nimport com.pulumi.aws.glue.ConnectionArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Secret(\"example\", SecretArgs.builder()\n .name(\"example-secret\")\n .build());\n\n var exampleSecretVersion = new SecretVersion(\"exampleSecretVersion\", SecretVersionArgs.builder()\n .secretId(example.id())\n .secretString(serializeJson(\n jsonObject(\n jsonProperty(\"username\", \"exampleusername\"),\n jsonProperty(\"password\", \"examplepassword\")\n )))\n .build());\n\n var exampleConnection = new Connection(\"exampleConnection\", ConnectionArgs.builder()\n .name(\"example\")\n .connectionType(\"AZURECOSMOS\")\n .connectionProperties(Map.of(\"SparkProperties\", example.name().applyValue(_name -\u003e serializeJson(\n jsonObject(\n jsonProperty(\"secretId\", _name),\n jsonProperty(\"url\", \"jdbc:sqlserver:exampledbserver.database.windows.net:1433;database=exampledatabase\")\n )))))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:secretsmanager:Secret\n properties:\n name: example-secret\n exampleSecretVersion:\n type: aws:secretsmanager:SecretVersion\n name: example\n properties:\n secretId: ${example.id}\n secretString:\n fn::toJSON:\n username: exampleusername\n password: examplepassword\n exampleConnection:\n type: aws:glue:Connection\n name: example\n properties:\n name: example\n connectionType: AZURECOSMOS\n connectionProperties:\n SparkProperties:\n fn::toJSON:\n secretId: ${example.name}\n url: jdbc:sqlserver:exampledbserver.database.windows.net:1433;database=exampledatabase\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Google BigQuery Connection\n\nFor more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html#connection-properties-bigquery).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new aws.secretsmanager.Secret(\"example\", {name: \"example-secret\"});\nconst exampleSecretVersion = new aws.secretsmanager.SecretVersion(\"example\", {\n secretId: example.id,\n secretString: JSON.stringify({\n credentials: std.base64encode({\n input: `{\n \\\\\"type\\\\\": \\\\\"service_account\\\\\",\n \\\\\"project_id\\\\\": \\\\\"example-project\\\\\",\n \\\\\"private_key_id\\\\\": \\\\\"example-key\\\\\",\n \\\\\"private_key\\\\\": \\\\\"-----BEGIN RSA PRIVATE KEY-----\\\\\nREDACTED\\\\\n-----END RSA PRIVATE KEY-----\\\\\",\n \\\\\"client_email\\\\\": \\\\\"example-project@appspot.gserviceaccount.com\\\\\",\n \\\\\"client_id\\\\\": example-client\\\\\",\n \\\\\"auth_uri\\\\\": \\\\\"https://accounts.google.com/o/oauth2/auth\\\\\",\n \\\\\"token_uri\\\\\": \\\\\"https://oauth2.googleapis.com/token\\\\\",\n \\\\\"auth_provider_x509_cert_url\\\\\": \\\\\"https://www.googleapis.com/oauth2/v1/certs\\\\\",\n \\\\\"client_x509_cert_url\\\\\": \\\\\"https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com\\\\\",\n \\\\\"universe_domain\\\\\": \\\\\"googleapis.com\\\\\"\n}\n`,\n }).then(invoke =\u003e invoke.result),\n }),\n});\nconst exampleConnection = new aws.glue.Connection(\"example\", {\n name: \"example\",\n connectionType: \"BIGQUERY\",\n connectionProperties: {\n SparkProperties: pulumi.jsonStringify({\n secretId: example.name,\n }),\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.secretsmanager.Secret(\"example\", name=\"example-secret\")\nexample_secret_version = aws.secretsmanager.SecretVersion(\"example\",\n secret_id=example.id,\n secret_string=json.dumps({\n \"credentials\": std.base64encode(input=\"\"\"{\n \\\"type\\\": \\\"service_account\\\",\n \\\"project_id\\\": \\\"example-project\\\",\n \\\"private_key_id\\\": \\\"example-key\\\",\n \\\"private_key\\\": \\\"-----BEGIN RSA PRIVATE KEY-----\\\nREDACTED\\\n-----END RSA PRIVATE KEY-----\\\",\n \\\"client_email\\\": \\\"example-project@appspot.gserviceaccount.com\\\",\n \\\"client_id\\\": example-client\\\",\n \\\"auth_uri\\\": \\\"https://accounts.google.com/o/oauth2/auth\\\",\n \\\"token_uri\\\": \\\"https://oauth2.googleapis.com/token\\\",\n \\\"auth_provider_x509_cert_url\\\": \\\"https://www.googleapis.com/oauth2/v1/certs\\\",\n \\\"client_x509_cert_url\\\": \\\"https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com\\\",\n \\\"universe_domain\\\": \\\"googleapis.com\\\"\n}\n\"\"\").result,\n }))\nexample_connection = aws.glue.Connection(\"example\",\n name=\"example\",\n connection_type=\"BIGQUERY\",\n connection_properties={\n \"SparkProperties\": pulumi.Output.json_dumps({\n \"secretId\": example.name,\n }),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.SecretsManager.Secret(\"example\", new()\n {\n Name = \"example-secret\",\n });\n\n var exampleSecretVersion = new Aws.SecretsManager.SecretVersion(\"example\", new()\n {\n SecretId = example.Id,\n SecretString = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"credentials\"] = Std.Base64encode.Invoke(new()\n {\n Input = @\"{\n \\\"\"type\\\"\": \\\"\"service_account\\\"\",\n \\\"\"project_id\\\"\": \\\"\"example-project\\\"\",\n \\\"\"private_key_id\\\"\": \\\"\"example-key\\\"\",\n \\\"\"private_key\\\"\": \\\"\"-----BEGIN RSA PRIVATE KEY-----\\\nREDACTED\\\n-----END RSA PRIVATE KEY-----\\\"\",\n \\\"\"client_email\\\"\": \\\"\"example-project@appspot.gserviceaccount.com\\\"\",\n \\\"\"client_id\\\"\": example-client\\\"\",\n \\\"\"auth_uri\\\"\": \\\"\"https://accounts.google.com/o/oauth2/auth\\\"\",\n \\\"\"token_uri\\\"\": \\\"\"https://oauth2.googleapis.com/token\\\"\",\n \\\"\"auth_provider_x509_cert_url\\\"\": \\\"\"https://www.googleapis.com/oauth2/v1/certs\\\"\",\n \\\"\"client_x509_cert_url\\\"\": \\\"\"https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com\\\"\",\n \\\"\"universe_domain\\\"\": \\\"\"googleapis.com\\\"\"\n}\n\",\n }).Apply(invoke =\u003e invoke.Result),\n }),\n });\n\n var exampleConnection = new Aws.Glue.Connection(\"example\", new()\n {\n Name = \"example\",\n ConnectionType = \"BIGQUERY\",\n ConnectionProperties = \n {\n { \"SparkProperties\", Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n {\n [\"secretId\"] = example.Name,\n })) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := secretsmanager.NewSecret(ctx, \"example\", \u0026secretsmanager.SecretArgs{\n\t\t\tName: pulumi.String(\"example-secret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"credentials\": std.Base64encode(ctx, map[string]interface{}{\n\t\t\t\t\"input\": `{\n \\\"type\\\": \\\"service_account\\\",\n \\\"project_id\\\": \\\"example-project\\\",\n \\\"private_key_id\\\": \\\"example-key\\\",\n \\\"private_key\\\": \\\"-----BEGIN RSA PRIVATE KEY-----\\\nREDACTED\\\n-----END RSA PRIVATE KEY-----\\\",\n \\\"client_email\\\": \\\"example-project@appspot.gserviceaccount.com\\\",\n \\\"client_id\\\": example-client\\\",\n \\\"auth_uri\\\": \\\"https://accounts.google.com/o/oauth2/auth\\\",\n \\\"token_uri\\\": \\\"https://oauth2.googleapis.com/token\\\",\n \\\"auth_provider_x509_cert_url\\\": \\\"https://www.googleapis.com/oauth2/v1/certs\\\",\n \\\"client_x509_cert_url\\\": \\\"https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com\\\",\n \\\"universe_domain\\\": \\\"googleapis.com\\\"\n}\n`,\n\t\t\t}, nil).Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = secretsmanager.NewSecretVersion(ctx, \"example\", \u0026secretsmanager.SecretVersionArgs{\n\t\t\tSecretId: example.ID(),\n\t\t\tSecretString: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = glue.NewConnection(ctx, \"example\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tConnectionType: pulumi.String(\"BIGQUERY\"),\n\t\t\tConnectionProperties: pulumi.StringMap{\n\t\t\t\t\"SparkProperties\": example.Name.ApplyT(func(name string) (pulumi.String, error) {\n\t\t\t\t\tvar _zero pulumi.String\n\t\t\t\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\t\"secretId\": name,\n\t\t\t\t\t})\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn _zero, err\n\t\t\t\t\t}\n\t\t\t\t\tjson1 := string(tmpJSON1)\n\t\t\t\t\treturn pulumi.String(json1), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.Secret;\nimport com.pulumi.aws.secretsmanager.SecretArgs;\nimport com.pulumi.aws.secretsmanager.SecretVersion;\nimport com.pulumi.aws.secretsmanager.SecretVersionArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.Base64encodeArgs;\nimport com.pulumi.aws.glue.Connection;\nimport com.pulumi.aws.glue.ConnectionArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Secret(\"example\", SecretArgs.builder()\n .name(\"example-secret\")\n .build());\n\n var exampleSecretVersion = new SecretVersion(\"exampleSecretVersion\", SecretVersionArgs.builder()\n .secretId(example.id())\n .secretString(serializeJson(\n jsonObject(\n jsonProperty(\"credentials\", StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"\"\"\n{\n \\\"type\\\": \\\"service_account\\\",\n \\\"project_id\\\": \\\"example-project\\\",\n \\\"private_key_id\\\": \\\"example-key\\\",\n \\\"private_key\\\": \\\"-----BEGIN RSA PRIVATE KEY-----\\\nREDACTED\\\n-----END RSA PRIVATE KEY-----\\\",\n \\\"client_email\\\": \\\"example-project@appspot.gserviceaccount.com\\\",\n \\\"client_id\\\": example-client\\\",\n \\\"auth_uri\\\": \\\"https://accounts.google.com/o/oauth2/auth\\\",\n \\\"token_uri\\\": \\\"https://oauth2.googleapis.com/token\\\",\n \\\"auth_provider_x509_cert_url\\\": \\\"https://www.googleapis.com/oauth2/v1/certs\\\",\n \\\"client_x509_cert_url\\\": \\\"https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com\\\",\n \\\"universe_domain\\\": \\\"googleapis.com\\\"\n}\n \"\"\")\n .build()).result())\n )))\n .build());\n\n var exampleConnection = new Connection(\"exampleConnection\", ConnectionArgs.builder()\n .name(\"example\")\n .connectionType(\"BIGQUERY\")\n .connectionProperties(Map.of(\"SparkProperties\", example.name().applyValue(_name -\u003e serializeJson(\n jsonObject(\n jsonProperty(\"secretId\", _name)\n )))))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:secretsmanager:Secret\n properties:\n name: example-secret\n exampleSecretVersion:\n type: aws:secretsmanager:SecretVersion\n name: example\n properties:\n secretId: ${example.id}\n secretString:\n fn::toJSON:\n credentials:\n fn::invoke:\n function: std:base64encode\n arguments:\n input: |\n {\n \\\"type\\\": \\\"service_account\\\",\n \\\"project_id\\\": \\\"example-project\\\",\n \\\"private_key_id\\\": \\\"example-key\\\",\n \\\"private_key\\\": \\\"-----BEGIN RSA PRIVATE KEY-----\\\n REDACTED\\\n -----END RSA PRIVATE KEY-----\\\",\n \\\"client_email\\\": \\\"example-project@appspot.gserviceaccount.com\\\",\n \\\"client_id\\\": example-client\\\",\n \\\"auth_uri\\\": \\\"https://accounts.google.com/o/oauth2/auth\\\",\n \\\"token_uri\\\": \\\"https://oauth2.googleapis.com/token\\\",\n \\\"auth_provider_x509_cert_url\\\": \\\"https://www.googleapis.com/oauth2/v1/certs\\\",\n \\\"client_x509_cert_url\\\": \\\"https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com\\\",\n \\\"universe_domain\\\": \\\"googleapis.com\\\"\n }\n return: result\n exampleConnection:\n type: aws:glue:Connection\n name: example\n properties:\n name: example\n connectionType: BIGQUERY\n connectionProperties:\n SparkProperties:\n fn::toJSON:\n secretId: ${example.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch Service Connection\n\nFor more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html#connection-properties-opensearch).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.secretsmanager.Secret(\"example\", {name: \"example-secret\"});\nconst exampleSecretVersion = new aws.secretsmanager.SecretVersion(\"example\", {\n secretId: example.id,\n secretString: JSON.stringify({\n \"opensearch.net.http.auth.user\": \"exampleusername\",\n \"opensearch.net.http.auth.pass\": \"examplepassword\",\n }),\n});\nconst exampleConnection = new aws.glue.Connection(\"example\", {\n name: \"example\",\n connectionType: \"OPENSEARCH\",\n connectionProperties: {\n SparkProperties: pulumi.jsonStringify({\n secretId: example.name,\n \"opensearch.nodes\": \"https://search-exampledomain-ixlmh4jieahrau3bfebcgp8cnm.us-east-1.es.amazonaws.com\",\n \"opensearch.port\": \"443\",\n \"opensearch.aws.sigv4.region\": \"us-east-1\",\n \"opensearch.nodes.wan.only\": \"true\",\n \"opensearch.aws.sigv4.enabled\": \"true\",\n }),\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nexample = aws.secretsmanager.Secret(\"example\", name=\"example-secret\")\nexample_secret_version = aws.secretsmanager.SecretVersion(\"example\",\n secret_id=example.id,\n secret_string=json.dumps({\n \"opensearch.net.http.auth.user\": \"exampleusername\",\n \"opensearch.net.http.auth.pass\": \"examplepassword\",\n }))\nexample_connection = aws.glue.Connection(\"example\",\n name=\"example\",\n connection_type=\"OPENSEARCH\",\n connection_properties={\n \"SparkProperties\": pulumi.Output.json_dumps({\n \"secretId\": example.name,\n \"opensearch.nodes\": \"https://search-exampledomain-ixlmh4jieahrau3bfebcgp8cnm.us-east-1.es.amazonaws.com\",\n \"opensearch.port\": \"443\",\n \"opensearch.aws.sigv4.region\": \"us-east-1\",\n \"opensearch.nodes.wan.only\": \"true\",\n \"opensearch.aws.sigv4.enabled\": \"true\",\n }),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.SecretsManager.Secret(\"example\", new()\n {\n Name = \"example-secret\",\n });\n\n var exampleSecretVersion = new Aws.SecretsManager.SecretVersion(\"example\", new()\n {\n SecretId = example.Id,\n SecretString = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"opensearch.net.http.auth.user\"] = \"exampleusername\",\n [\"opensearch.net.http.auth.pass\"] = \"examplepassword\",\n }),\n });\n\n var exampleConnection = new Aws.Glue.Connection(\"example\", new()\n {\n Name = \"example\",\n ConnectionType = \"OPENSEARCH\",\n ConnectionProperties = \n {\n { \"SparkProperties\", Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n {\n [\"secretId\"] = example.Name,\n [\"opensearch.nodes\"] = \"https://search-exampledomain-ixlmh4jieahrau3bfebcgp8cnm.us-east-1.es.amazonaws.com\",\n [\"opensearch.port\"] = \"443\",\n [\"opensearch.aws.sigv4.region\"] = \"us-east-1\",\n [\"opensearch.nodes.wan.only\"] = \"true\",\n [\"opensearch.aws.sigv4.enabled\"] = \"true\",\n })) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := secretsmanager.NewSecret(ctx, \"example\", \u0026secretsmanager.SecretArgs{\n\t\t\tName: pulumi.String(\"example-secret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"opensearch.net.http.auth.user\": \"exampleusername\",\n\t\t\t\"opensearch.net.http.auth.pass\": \"examplepassword\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = secretsmanager.NewSecretVersion(ctx, \"example\", \u0026secretsmanager.SecretVersionArgs{\n\t\t\tSecretId: example.ID(),\n\t\t\tSecretString: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = glue.NewConnection(ctx, \"example\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tConnectionType: pulumi.String(\"OPENSEARCH\"),\n\t\t\tConnectionProperties: pulumi.StringMap{\n\t\t\t\t\"SparkProperties\": example.Name.ApplyT(func(name string) (pulumi.String, error) {\n\t\t\t\t\tvar _zero pulumi.String\n\t\t\t\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\t\"secretId\": name,\n\t\t\t\t\t\t\"opensearch.nodes\": \"https://search-exampledomain-ixlmh4jieahrau3bfebcgp8cnm.us-east-1.es.amazonaws.com\",\n\t\t\t\t\t\t\"opensearch.port\": \"443\",\n\t\t\t\t\t\t\"opensearch.aws.sigv4.region\": \"us-east-1\",\n\t\t\t\t\t\t\"opensearch.nodes.wan.only\": \"true\",\n\t\t\t\t\t\t\"opensearch.aws.sigv4.enabled\": \"true\",\n\t\t\t\t\t})\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn _zero, err\n\t\t\t\t\t}\n\t\t\t\t\tjson1 := string(tmpJSON1)\n\t\t\t\t\treturn pulumi.String(json1), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.Secret;\nimport com.pulumi.aws.secretsmanager.SecretArgs;\nimport com.pulumi.aws.secretsmanager.SecretVersion;\nimport com.pulumi.aws.secretsmanager.SecretVersionArgs;\nimport com.pulumi.aws.glue.Connection;\nimport com.pulumi.aws.glue.ConnectionArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Secret(\"example\", SecretArgs.builder()\n .name(\"example-secret\")\n .build());\n\n var exampleSecretVersion = new SecretVersion(\"exampleSecretVersion\", SecretVersionArgs.builder()\n .secretId(example.id())\n .secretString(serializeJson(\n jsonObject(\n jsonProperty(\"opensearch.net.http.auth.user\", \"exampleusername\"),\n jsonProperty(\"opensearch.net.http.auth.pass\", \"examplepassword\")\n )))\n .build());\n\n var exampleConnection = new Connection(\"exampleConnection\", ConnectionArgs.builder()\n .name(\"example\")\n .connectionType(\"OPENSEARCH\")\n .connectionProperties(Map.of(\"SparkProperties\", example.name().applyValue(_name -\u003e serializeJson(\n jsonObject(\n jsonProperty(\"secretId\", _name),\n jsonProperty(\"opensearch.nodes\", \"https://search-exampledomain-ixlmh4jieahrau3bfebcgp8cnm.us-east-1.es.amazonaws.com\"),\n jsonProperty(\"opensearch.port\", \"443\"),\n jsonProperty(\"opensearch.aws.sigv4.region\", \"us-east-1\"),\n jsonProperty(\"opensearch.nodes.wan.only\", \"true\"),\n jsonProperty(\"opensearch.aws.sigv4.enabled\", \"true\")\n )))))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:secretsmanager:Secret\n properties:\n name: example-secret\n exampleSecretVersion:\n type: aws:secretsmanager:SecretVersion\n name: example\n properties:\n secretId: ${example.id}\n secretString:\n fn::toJSON:\n opensearch.net.http.auth.user: exampleusername\n opensearch.net.http.auth.pass: examplepassword\n exampleConnection:\n type: aws:glue:Connection\n name: example\n properties:\n name: example\n connectionType: OPENSEARCH\n connectionProperties:\n SparkProperties:\n fn::toJSON:\n secretId: ${example.name}\n opensearch.nodes: https://search-exampledomain-ixlmh4jieahrau3bfebcgp8cnm.us-east-1.es.amazonaws.com\n opensearch.port: '443'\n opensearch.aws.sigv4.region: us-east-1\n opensearch.nodes.wan.only: 'true'\n opensearch.aws.sigv4.enabled: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Snowflake Connection\n\nFor more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html#connection-properties-snowflake).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.secretsmanager.Secret(\"example\", {name: \"example-secret\"});\nconst exampleSecretVersion = new aws.secretsmanager.SecretVersion(\"example\", {\n secretId: example.id,\n secretString: JSON.stringify({\n sfUser: \"exampleusername\",\n sfPassword: \"examplepassword\",\n }),\n});\nconst exampleConnection = new aws.glue.Connection(\"example\", {\n name: \"example\",\n connectionType: \"SNOWFLAKE\",\n connectionProperties: {\n SparkProperties: pulumi.jsonStringify({\n secretId: example.name,\n sfRole: \"EXAMPLEETLROLE\",\n sfUrl: \"exampleorg-exampleconnection.snowflakecomputing.com\",\n }),\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nexample = aws.secretsmanager.Secret(\"example\", name=\"example-secret\")\nexample_secret_version = aws.secretsmanager.SecretVersion(\"example\",\n secret_id=example.id,\n secret_string=json.dumps({\n \"sfUser\": \"exampleusername\",\n \"sfPassword\": \"examplepassword\",\n }))\nexample_connection = aws.glue.Connection(\"example\",\n name=\"example\",\n connection_type=\"SNOWFLAKE\",\n connection_properties={\n \"SparkProperties\": pulumi.Output.json_dumps({\n \"secretId\": example.name,\n \"sfRole\": \"EXAMPLEETLROLE\",\n \"sfUrl\": \"exampleorg-exampleconnection.snowflakecomputing.com\",\n }),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.SecretsManager.Secret(\"example\", new()\n {\n Name = \"example-secret\",\n });\n\n var exampleSecretVersion = new Aws.SecretsManager.SecretVersion(\"example\", new()\n {\n SecretId = example.Id,\n SecretString = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"sfUser\"] = \"exampleusername\",\n [\"sfPassword\"] = \"examplepassword\",\n }),\n });\n\n var exampleConnection = new Aws.Glue.Connection(\"example\", new()\n {\n Name = \"example\",\n ConnectionType = \"SNOWFLAKE\",\n ConnectionProperties = \n {\n { \"SparkProperties\", Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n {\n [\"secretId\"] = example.Name,\n [\"sfRole\"] = \"EXAMPLEETLROLE\",\n [\"sfUrl\"] = \"exampleorg-exampleconnection.snowflakecomputing.com\",\n })) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := secretsmanager.NewSecret(ctx, \"example\", \u0026secretsmanager.SecretArgs{\n\t\t\tName: pulumi.String(\"example-secret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"sfUser\": \"exampleusername\",\n\t\t\t\"sfPassword\": \"examplepassword\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = secretsmanager.NewSecretVersion(ctx, \"example\", \u0026secretsmanager.SecretVersionArgs{\n\t\t\tSecretId: example.ID(),\n\t\t\tSecretString: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = glue.NewConnection(ctx, \"example\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tConnectionType: pulumi.String(\"SNOWFLAKE\"),\n\t\t\tConnectionProperties: pulumi.StringMap{\n\t\t\t\t\"SparkProperties\": example.Name.ApplyT(func(name string) (pulumi.String, error) {\n\t\t\t\t\tvar _zero pulumi.String\n\t\t\t\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\t\"secretId\": name,\n\t\t\t\t\t\t\"sfRole\": \"EXAMPLEETLROLE\",\n\t\t\t\t\t\t\"sfUrl\": \"exampleorg-exampleconnection.snowflakecomputing.com\",\n\t\t\t\t\t})\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn _zero, err\n\t\t\t\t\t}\n\t\t\t\t\tjson1 := string(tmpJSON1)\n\t\t\t\t\treturn pulumi.String(json1), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.Secret;\nimport com.pulumi.aws.secretsmanager.SecretArgs;\nimport com.pulumi.aws.secretsmanager.SecretVersion;\nimport com.pulumi.aws.secretsmanager.SecretVersionArgs;\nimport com.pulumi.aws.glue.Connection;\nimport com.pulumi.aws.glue.ConnectionArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Secret(\"example\", SecretArgs.builder()\n .name(\"example-secret\")\n .build());\n\n var exampleSecretVersion = new SecretVersion(\"exampleSecretVersion\", SecretVersionArgs.builder()\n .secretId(example.id())\n .secretString(serializeJson(\n jsonObject(\n jsonProperty(\"sfUser\", \"exampleusername\"),\n jsonProperty(\"sfPassword\", \"examplepassword\")\n )))\n .build());\n\n var exampleConnection = new Connection(\"exampleConnection\", ConnectionArgs.builder()\n .name(\"example\")\n .connectionType(\"SNOWFLAKE\")\n .connectionProperties(Map.of(\"SparkProperties\", example.name().applyValue(_name -\u003e serializeJson(\n jsonObject(\n jsonProperty(\"secretId\", _name),\n jsonProperty(\"sfRole\", \"EXAMPLEETLROLE\"),\n jsonProperty(\"sfUrl\", \"exampleorg-exampleconnection.snowflakecomputing.com\")\n )))))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:secretsmanager:Secret\n properties:\n name: example-secret\n exampleSecretVersion:\n type: aws:secretsmanager:SecretVersion\n name: example\n properties:\n secretId: ${example.id}\n secretString:\n fn::toJSON:\n sfUser: exampleusername\n sfPassword: examplepassword\n exampleConnection:\n type: aws:glue:Connection\n name: example\n properties:\n name: example\n connectionType: SNOWFLAKE\n connectionProperties:\n SparkProperties:\n fn::toJSON:\n secretId: ${example.name}\n sfRole: EXAMPLEETLROLE\n sfUrl: exampleorg-exampleconnection.snowflakecomputing.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### DynamoDB Connection\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.glue.Connection(\"test\", {\n name: \"example\",\n connectionType: \"DYNAMODB\",\n athenaProperties: {\n lambda_function_arn: \"arn:aws:lambda:us-east-1:123456789012:function:athenafederatedcatalog_athena_abcdefgh\",\n disable_spill_encryption: \"false\",\n spill_bucket: \"example-bucket\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.glue.Connection(\"test\",\n name=\"example\",\n connection_type=\"DYNAMODB\",\n athena_properties={\n \"lambda_function_arn\": \"arn:aws:lambda:us-east-1:123456789012:function:athenafederatedcatalog_athena_abcdefgh\",\n \"disable_spill_encryption\": \"false\",\n \"spill_bucket\": \"example-bucket\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Aws.Glue.Connection(\"test\", new()\n {\n Name = \"example\",\n ConnectionType = \"DYNAMODB\",\n AthenaProperties = \n {\n { \"lambda_function_arn\", \"arn:aws:lambda:us-east-1:123456789012:function:athenafederatedcatalog_athena_abcdefgh\" },\n { \"disable_spill_encryption\", \"false\" },\n { \"spill_bucket\", \"example-bucket\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := glue.NewConnection(ctx, \"test\", \u0026glue.ConnectionArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tConnectionType: pulumi.String(\"DYNAMODB\"),\n\t\t\tAthenaProperties: pulumi.StringMap{\n\t\t\t\t\"lambda_function_arn\": pulumi.String(\"arn:aws:lambda:us-east-1:123456789012:function:athenafederatedcatalog_athena_abcdefgh\"),\n\t\t\t\t\"disable_spill_encryption\": pulumi.String(\"false\"),\n\t\t\t\t\"spill_bucket\": pulumi.String(\"example-bucket\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.glue.Connection;\nimport com.pulumi.aws.glue.ConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Connection(\"test\", ConnectionArgs.builder()\n .name(\"example\")\n .connectionType(\"DYNAMODB\")\n .athenaProperties(Map.ofEntries(\n Map.entry(\"lambda_function_arn\", \"arn:aws:lambda:us-east-1:123456789012:function:athenafederatedcatalog_athena_abcdefgh\"),\n Map.entry(\"disable_spill_encryption\", \"false\"),\n Map.entry(\"spill_bucket\", \"example-bucket\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:glue:Connection\n properties:\n name: example\n connectionType: DYNAMODB\n athenaProperties:\n lambda_function_arn: arn:aws:lambda:us-east-1:123456789012:function:athenafederatedcatalog_athena_abcdefgh\n disable_spill_encryption: 'false'\n spill_bucket: example-bucket\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Glue Connections using the `CATALOG-ID` (AWS account ID if not custom) and `NAME`. For example:\n\n```sh\n$ pulumi import aws:glue/connection:Connection MyConnection 123456789012:MyConnection\n```\n", "properties": { "arn": { "type": "string", @@ -307197,7 +307197,7 @@ } }, "aws:glue/crawler:Crawler": { - "description": "Manages a Glue Crawler. More information can be found in the [AWS Glue Developer Guide](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html)\n\n## Example Usage\n\n### DynamoDB Target Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.glue.Crawler(\"example\", {\n databaseName: exampleAwsGlueCatalogDatabase.name,\n name: \"example\",\n role: exampleAwsIamRole.arn,\n dynamodbTargets: [{\n path: \"table-name\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.glue.Crawler(\"example\",\n database_name=example_aws_glue_catalog_database[\"name\"],\n name=\"example\",\n role=example_aws_iam_role[\"arn\"],\n dynamodb_targets=[{\n \"path\": \"table-name\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Glue.Crawler(\"example\", new()\n {\n DatabaseName = exampleAwsGlueCatalogDatabase.Name,\n Name = \"example\",\n Role = exampleAwsIamRole.Arn,\n DynamodbTargets = new[]\n {\n new Aws.Glue.Inputs.CrawlerDynamodbTargetArgs\n {\n Path = \"table-name\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := glue.NewCrawler(ctx, \"example\", \u0026glue.CrawlerArgs{\n\t\t\tDatabaseName: pulumi.Any(exampleAwsGlueCatalogDatabase.Name),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tRole: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tDynamodbTargets: glue.CrawlerDynamodbTargetArray{\n\t\t\t\t\u0026glue.CrawlerDynamodbTargetArgs{\n\t\t\t\t\tPath: pulumi.String(\"table-name\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.glue.Crawler;\nimport com.pulumi.aws.glue.CrawlerArgs;\nimport com.pulumi.aws.glue.inputs.CrawlerDynamodbTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Crawler(\"example\", CrawlerArgs.builder()\n .databaseName(exampleAwsGlueCatalogDatabase.name())\n .name(\"example\")\n .role(exampleAwsIamRole.arn())\n .dynamodbTargets(CrawlerDynamodbTargetArgs.builder()\n .path(\"table-name\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:glue:Crawler\n properties:\n databaseName: ${exampleAwsGlueCatalogDatabase.name}\n name: example\n role: ${exampleAwsIamRole.arn}\n dynamodbTargets:\n - path: table-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### JDBC Target Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.glue.Crawler(\"example\", {\n databaseName: exampleAwsGlueCatalogDatabase.name,\n name: \"example\",\n role: exampleAwsIamRole.arn,\n jdbcTargets: [{\n connectionName: exampleAwsGlueConnection.name,\n path: \"database-name/%\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.glue.Crawler(\"example\",\n database_name=example_aws_glue_catalog_database[\"name\"],\n name=\"example\",\n role=example_aws_iam_role[\"arn\"],\n jdbc_targets=[{\n \"connection_name\": example_aws_glue_connection[\"name\"],\n \"path\": \"database-name/%\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Glue.Crawler(\"example\", new()\n {\n DatabaseName = exampleAwsGlueCatalogDatabase.Name,\n Name = \"example\",\n Role = exampleAwsIamRole.Arn,\n JdbcTargets = new[]\n {\n new Aws.Glue.Inputs.CrawlerJdbcTargetArgs\n {\n ConnectionName = exampleAwsGlueConnection.Name,\n Path = \"database-name/%\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := glue.NewCrawler(ctx, \"example\", \u0026glue.CrawlerArgs{\n\t\t\tDatabaseName: pulumi.Any(exampleAwsGlueCatalogDatabase.Name),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tRole: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tJdbcTargets: glue.CrawlerJdbcTargetArray{\n\t\t\t\t\u0026glue.CrawlerJdbcTargetArgs{\n\t\t\t\t\tConnectionName: pulumi.Any(exampleAwsGlueConnection.Name),\n\t\t\t\t\tPath: pulumi.String(\"database-name/%\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.glue.Crawler;\nimport com.pulumi.aws.glue.CrawlerArgs;\nimport com.pulumi.aws.glue.inputs.CrawlerJdbcTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Crawler(\"example\", CrawlerArgs.builder()\n .databaseName(exampleAwsGlueCatalogDatabase.name())\n .name(\"example\")\n .role(exampleAwsIamRole.arn())\n .jdbcTargets(CrawlerJdbcTargetArgs.builder()\n .connectionName(exampleAwsGlueConnection.name())\n .path(\"database-name/%\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:glue:Crawler\n properties:\n databaseName: ${exampleAwsGlueCatalogDatabase.name}\n name: example\n role: ${exampleAwsIamRole.arn}\n jdbcTargets:\n - connectionName: ${exampleAwsGlueConnection.name}\n path: database-name/%\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### S3 Target Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.glue.Crawler(\"example\", {\n databaseName: exampleAwsGlueCatalogDatabase.name,\n name: \"example\",\n role: exampleAwsIamRole.arn,\n s3Targets: [{\n path: `s3://${exampleAwsS3Bucket.bucket}`,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.glue.Crawler(\"example\",\n database_name=example_aws_glue_catalog_database[\"name\"],\n name=\"example\",\n role=example_aws_iam_role[\"arn\"],\n s3_targets=[{\n \"path\": f\"s3://{example_aws_s3_bucket['bucket']}\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Glue.Crawler(\"example\", new()\n {\n DatabaseName = exampleAwsGlueCatalogDatabase.Name,\n Name = \"example\",\n Role = exampleAwsIamRole.Arn,\n S3Targets = new[]\n {\n new Aws.Glue.Inputs.CrawlerS3TargetArgs\n {\n Path = $\"s3://{exampleAwsS3Bucket.Bucket}\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := glue.NewCrawler(ctx, \"example\", \u0026glue.CrawlerArgs{\n\t\t\tDatabaseName: pulumi.Any(exampleAwsGlueCatalogDatabase.Name),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tRole: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tS3Targets: glue.CrawlerS3TargetArray{\n\t\t\t\t\u0026glue.CrawlerS3TargetArgs{\n\t\t\t\t\tPath: pulumi.Sprintf(\"s3://%v\", exampleAwsS3Bucket.Bucket),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.glue.Crawler;\nimport com.pulumi.aws.glue.CrawlerArgs;\nimport com.pulumi.aws.glue.inputs.CrawlerS3TargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Crawler(\"example\", CrawlerArgs.builder()\n .databaseName(exampleAwsGlueCatalogDatabase.name())\n .name(\"example\")\n .role(exampleAwsIamRole.arn())\n .s3Targets(CrawlerS3TargetArgs.builder()\n .path(String.format(\"s3://%s\", exampleAwsS3Bucket.bucket()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:glue:Crawler\n properties:\n databaseName: ${exampleAwsGlueCatalogDatabase.name}\n name: example\n role: ${exampleAwsIamRole.arn}\n s3Targets:\n - path: s3://${exampleAwsS3Bucket.bucket}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Catalog Target Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.glue.Crawler(\"example\", {\n databaseName: exampleAwsGlueCatalogDatabase.name,\n name: \"example\",\n role: exampleAwsIamRole.arn,\n catalogTargets: [{\n databaseName: exampleAwsGlueCatalogDatabase.name,\n tables: [exampleAwsGlueCatalogTable.name],\n }],\n schemaChangePolicy: {\n deleteBehavior: \"LOG\",\n },\n configuration: `{\n \"Version\":1.0,\n \"Grouping\": {\n \"TableGroupingPolicy\": \"CombineCompatibleSchemas\"\n }\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.glue.Crawler(\"example\",\n database_name=example_aws_glue_catalog_database[\"name\"],\n name=\"example\",\n role=example_aws_iam_role[\"arn\"],\n catalog_targets=[{\n \"database_name\": example_aws_glue_catalog_database[\"name\"],\n \"tables\": [example_aws_glue_catalog_table[\"name\"]],\n }],\n schema_change_policy={\n \"delete_behavior\": \"LOG\",\n },\n configuration=\"\"\"{\n \"Version\":1.0,\n \"Grouping\": {\n \"TableGroupingPolicy\": \"CombineCompatibleSchemas\"\n }\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Glue.Crawler(\"example\", new()\n {\n DatabaseName = exampleAwsGlueCatalogDatabase.Name,\n Name = \"example\",\n Role = exampleAwsIamRole.Arn,\n CatalogTargets = new[]\n {\n new Aws.Glue.Inputs.CrawlerCatalogTargetArgs\n {\n DatabaseName = exampleAwsGlueCatalogDatabase.Name,\n Tables = new[]\n {\n exampleAwsGlueCatalogTable.Name,\n },\n },\n },\n SchemaChangePolicy = new Aws.Glue.Inputs.CrawlerSchemaChangePolicyArgs\n {\n DeleteBehavior = \"LOG\",\n },\n Configuration = @\"{\n \"\"Version\"\":1.0,\n \"\"Grouping\"\": {\n \"\"TableGroupingPolicy\"\": \"\"CombineCompatibleSchemas\"\"\n }\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := glue.NewCrawler(ctx, \"example\", \u0026glue.CrawlerArgs{\n\t\t\tDatabaseName: pulumi.Any(exampleAwsGlueCatalogDatabase.Name),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tRole: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tCatalogTargets: glue.CrawlerCatalogTargetArray{\n\t\t\t\t\u0026glue.CrawlerCatalogTargetArgs{\n\t\t\t\t\tDatabaseName: pulumi.Any(exampleAwsGlueCatalogDatabase.Name),\n\t\t\t\t\tTables: pulumi.StringArray{\n\t\t\t\t\t\texampleAwsGlueCatalogTable.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSchemaChangePolicy: \u0026glue.CrawlerSchemaChangePolicyArgs{\n\t\t\t\tDeleteBehavior: pulumi.String(\"LOG\"),\n\t\t\t},\n\t\t\tConfiguration: pulumi.String(`{\n \"Version\":1.0,\n \"Grouping\": {\n \"TableGroupingPolicy\": \"CombineCompatibleSchemas\"\n }\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.glue.Crawler;\nimport com.pulumi.aws.glue.CrawlerArgs;\nimport com.pulumi.aws.glue.inputs.CrawlerCatalogTargetArgs;\nimport com.pulumi.aws.glue.inputs.CrawlerSchemaChangePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Crawler(\"example\", CrawlerArgs.builder()\n .databaseName(exampleAwsGlueCatalogDatabase.name())\n .name(\"example\")\n .role(exampleAwsIamRole.arn())\n .catalogTargets(CrawlerCatalogTargetArgs.builder()\n .databaseName(exampleAwsGlueCatalogDatabase.name())\n .tables(exampleAwsGlueCatalogTable.name())\n .build())\n .schemaChangePolicy(CrawlerSchemaChangePolicyArgs.builder()\n .deleteBehavior(\"LOG\")\n .build())\n .configuration(\"\"\"\n{\n \"Version\":1.0,\n \"Grouping\": {\n \"TableGroupingPolicy\": \"CombineCompatibleSchemas\"\n }\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:glue:Crawler\n properties:\n databaseName: ${exampleAwsGlueCatalogDatabase.name}\n name: example\n role: ${exampleAwsIamRole.arn}\n catalogTargets:\n - databaseName: ${exampleAwsGlueCatalogDatabase.name}\n tables:\n - ${exampleAwsGlueCatalogTable.name}\n schemaChangePolicy:\n deleteBehavior: LOG\n configuration: |\n {\n \"Version\":1.0,\n \"Grouping\": {\n \"TableGroupingPolicy\": \"CombineCompatibleSchemas\"\n }\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### MongoDB Target Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.glue.Crawler(\"example\", {\n databaseName: exampleAwsGlueCatalogDatabase.name,\n name: \"example\",\n role: exampleAwsIamRole.arn,\n mongodbTargets: [{\n connectionName: exampleAwsGlueConnection.name,\n path: \"database-name/%\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.glue.Crawler(\"example\",\n database_name=example_aws_glue_catalog_database[\"name\"],\n name=\"example\",\n role=example_aws_iam_role[\"arn\"],\n mongodb_targets=[{\n \"connection_name\": example_aws_glue_connection[\"name\"],\n \"path\": \"database-name/%\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Glue.Crawler(\"example\", new()\n {\n DatabaseName = exampleAwsGlueCatalogDatabase.Name,\n Name = \"example\",\n Role = exampleAwsIamRole.Arn,\n MongodbTargets = new[]\n {\n new Aws.Glue.Inputs.CrawlerMongodbTargetArgs\n {\n ConnectionName = exampleAwsGlueConnection.Name,\n Path = \"database-name/%\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := glue.NewCrawler(ctx, \"example\", \u0026glue.CrawlerArgs{\n\t\t\tDatabaseName: pulumi.Any(exampleAwsGlueCatalogDatabase.Name),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tRole: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tMongodbTargets: glue.CrawlerMongodbTargetArray{\n\t\t\t\t\u0026glue.CrawlerMongodbTargetArgs{\n\t\t\t\t\tConnectionName: pulumi.Any(exampleAwsGlueConnection.Name),\n\t\t\t\t\tPath: pulumi.String(\"database-name/%\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.glue.Crawler;\nimport com.pulumi.aws.glue.CrawlerArgs;\nimport com.pulumi.aws.glue.inputs.CrawlerMongodbTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Crawler(\"example\", CrawlerArgs.builder()\n .databaseName(exampleAwsGlueCatalogDatabase.name())\n .name(\"example\")\n .role(exampleAwsIamRole.arn())\n .mongodbTargets(CrawlerMongodbTargetArgs.builder()\n .connectionName(exampleAwsGlueConnection.name())\n .path(\"database-name/%\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:glue:Crawler\n properties:\n databaseName: ${exampleAwsGlueCatalogDatabase.name}\n name: example\n role: ${exampleAwsIamRole.arn}\n mongodbTargets:\n - connectionName: ${exampleAwsGlueConnection.name}\n path: database-name/%\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Configuration Settings Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst eventsCrawler = new aws.glue.Crawler(\"events_crawler\", {\n databaseName: glueDatabase.name,\n schedule: \"cron(0 1 * * ? *)\",\n name: `events_crawler_${environmentName}`,\n role: glueRole.arn,\n tags: tags,\n configuration: JSON.stringify({\n Grouping: {\n TableGroupingPolicy: \"CombineCompatibleSchemas\",\n },\n CrawlerOutput: {\n Partitions: {\n AddOrUpdateBehavior: \"InheritFromTable\",\n },\n },\n Version: 1,\n }),\n s3Targets: [{\n path: `s3://${dataLakeBucket.bucket}`,\n }],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nevents_crawler = aws.glue.Crawler(\"events_crawler\",\n database_name=glue_database[\"name\"],\n schedule=\"cron(0 1 * * ? *)\",\n name=f\"events_crawler_{environment_name}\",\n role=glue_role[\"arn\"],\n tags=tags,\n configuration=json.dumps({\n \"Grouping\": {\n \"TableGroupingPolicy\": \"CombineCompatibleSchemas\",\n },\n \"CrawlerOutput\": {\n \"Partitions\": {\n \"AddOrUpdateBehavior\": \"InheritFromTable\",\n },\n },\n \"Version\": 1,\n }),\n s3_targets=[{\n \"path\": f\"s3://{data_lake_bucket['bucket']}\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var eventsCrawler = new Aws.Glue.Crawler(\"events_crawler\", new()\n {\n DatabaseName = glueDatabase.Name,\n Schedule = \"cron(0 1 * * ? *)\",\n Name = $\"events_crawler_{environmentName}\",\n Role = glueRole.Arn,\n Tags = tags,\n Configuration = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"Grouping\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"TableGroupingPolicy\"] = \"CombineCompatibleSchemas\",\n },\n [\"CrawlerOutput\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"Partitions\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"AddOrUpdateBehavior\"] = \"InheritFromTable\",\n },\n },\n [\"Version\"] = 1,\n }),\n S3Targets = new[]\n {\n new Aws.Glue.Inputs.CrawlerS3TargetArgs\n {\n Path = $\"s3://{dataLakeBucket.Bucket}\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"Grouping\": map[string]interface{}{\n\t\t\t\t\"TableGroupingPolicy\": \"CombineCompatibleSchemas\",\n\t\t\t},\n\t\t\t\"CrawlerOutput\": map[string]interface{}{\n\t\t\t\t\"Partitions\": map[string]interface{}{\n\t\t\t\t\t\"AddOrUpdateBehavior\": \"InheritFromTable\",\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"Version\": 1,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = glue.NewCrawler(ctx, \"events_crawler\", \u0026glue.CrawlerArgs{\n\t\t\tDatabaseName: pulumi.Any(glueDatabase.Name),\n\t\t\tSchedule: pulumi.String(\"cron(0 1 * * ? *)\"),\n\t\t\tName: pulumi.Sprintf(\"events_crawler_%v\", environmentName),\n\t\t\tRole: pulumi.Any(glueRole.Arn),\n\t\t\tTags: pulumi.Any(tags),\n\t\t\tConfiguration: pulumi.String(json0),\n\t\t\tS3Targets: glue.CrawlerS3TargetArray{\n\t\t\t\t\u0026glue.CrawlerS3TargetArgs{\n\t\t\t\t\tPath: pulumi.Sprintf(\"s3://%v\", dataLakeBucket.Bucket),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.glue.Crawler;\nimport com.pulumi.aws.glue.CrawlerArgs;\nimport com.pulumi.aws.glue.inputs.CrawlerS3TargetArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var eventsCrawler = new Crawler(\"eventsCrawler\", CrawlerArgs.builder()\n .databaseName(glueDatabase.name())\n .schedule(\"cron(0 1 * * ? *)\")\n .name(String.format(\"events_crawler_%s\", environmentName))\n .role(glueRole.arn())\n .tags(tags)\n .configuration(serializeJson(\n jsonObject(\n jsonProperty(\"Grouping\", jsonObject(\n jsonProperty(\"TableGroupingPolicy\", \"CombineCompatibleSchemas\")\n )),\n jsonProperty(\"CrawlerOutput\", jsonObject(\n jsonProperty(\"Partitions\", jsonObject(\n jsonProperty(\"AddOrUpdateBehavior\", \"InheritFromTable\")\n ))\n )),\n jsonProperty(\"Version\", 1)\n )))\n .s3Targets(CrawlerS3TargetArgs.builder()\n .path(String.format(\"s3://%s\", dataLakeBucket.bucket()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n eventsCrawler:\n type: aws:glue:Crawler\n name: events_crawler\n properties:\n databaseName: ${glueDatabase.name}\n schedule: cron(0 1 * * ? *)\n name: events_crawler_${environmentName}\n role: ${glueRole.arn}\n tags: ${tags}\n configuration:\n fn::toJSON:\n Grouping:\n TableGroupingPolicy: CombineCompatibleSchemas\n CrawlerOutput:\n Partitions:\n AddOrUpdateBehavior: InheritFromTable\n Version: 1\n s3Targets:\n - path: s3://${dataLakeBucket.bucket}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Glue Crawlers using `name`. For example:\n\n```sh\n$ pulumi import aws:glue/crawler:Crawler MyJob MyJob\n```\n", + "description": "Manages a Glue Crawler. More information can be found in the [AWS Glue Developer Guide](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html)\n\n## Example Usage\n\n### DynamoDB Target Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.glue.Crawler(\"example\", {\n databaseName: exampleAwsGlueCatalogDatabase.name,\n name: \"example\",\n role: exampleAwsIamRole.arn,\n dynamodbTargets: [{\n path: \"table-name\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.glue.Crawler(\"example\",\n database_name=example_aws_glue_catalog_database[\"name\"],\n name=\"example\",\n role=example_aws_iam_role[\"arn\"],\n dynamodb_targets=[{\n \"path\": \"table-name\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Glue.Crawler(\"example\", new()\n {\n DatabaseName = exampleAwsGlueCatalogDatabase.Name,\n Name = \"example\",\n Role = exampleAwsIamRole.Arn,\n DynamodbTargets = new[]\n {\n new Aws.Glue.Inputs.CrawlerDynamodbTargetArgs\n {\n Path = \"table-name\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := glue.NewCrawler(ctx, \"example\", \u0026glue.CrawlerArgs{\n\t\t\tDatabaseName: pulumi.Any(exampleAwsGlueCatalogDatabase.Name),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tRole: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tDynamodbTargets: glue.CrawlerDynamodbTargetArray{\n\t\t\t\t\u0026glue.CrawlerDynamodbTargetArgs{\n\t\t\t\t\tPath: pulumi.String(\"table-name\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.glue.Crawler;\nimport com.pulumi.aws.glue.CrawlerArgs;\nimport com.pulumi.aws.glue.inputs.CrawlerDynamodbTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Crawler(\"example\", CrawlerArgs.builder()\n .databaseName(exampleAwsGlueCatalogDatabase.name())\n .name(\"example\")\n .role(exampleAwsIamRole.arn())\n .dynamodbTargets(CrawlerDynamodbTargetArgs.builder()\n .path(\"table-name\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:glue:Crawler\n properties:\n databaseName: ${exampleAwsGlueCatalogDatabase.name}\n name: example\n role: ${exampleAwsIamRole.arn}\n dynamodbTargets:\n - path: table-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### JDBC Target Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.glue.Crawler(\"example\", {\n databaseName: exampleAwsGlueCatalogDatabase.name,\n name: \"example\",\n role: exampleAwsIamRole.arn,\n jdbcTargets: [{\n connectionName: exampleAwsGlueConnection.name,\n path: \"database-name/%\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.glue.Crawler(\"example\",\n database_name=example_aws_glue_catalog_database[\"name\"],\n name=\"example\",\n role=example_aws_iam_role[\"arn\"],\n jdbc_targets=[{\n \"connection_name\": example_aws_glue_connection[\"name\"],\n \"path\": \"database-name/%\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Glue.Crawler(\"example\", new()\n {\n DatabaseName = exampleAwsGlueCatalogDatabase.Name,\n Name = \"example\",\n Role = exampleAwsIamRole.Arn,\n JdbcTargets = new[]\n {\n new Aws.Glue.Inputs.CrawlerJdbcTargetArgs\n {\n ConnectionName = exampleAwsGlueConnection.Name,\n Path = \"database-name/%\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := glue.NewCrawler(ctx, \"example\", \u0026glue.CrawlerArgs{\n\t\t\tDatabaseName: pulumi.Any(exampleAwsGlueCatalogDatabase.Name),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tRole: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tJdbcTargets: glue.CrawlerJdbcTargetArray{\n\t\t\t\t\u0026glue.CrawlerJdbcTargetArgs{\n\t\t\t\t\tConnectionName: pulumi.Any(exampleAwsGlueConnection.Name),\n\t\t\t\t\tPath: pulumi.String(\"database-name/%\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.glue.Crawler;\nimport com.pulumi.aws.glue.CrawlerArgs;\nimport com.pulumi.aws.glue.inputs.CrawlerJdbcTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Crawler(\"example\", CrawlerArgs.builder()\n .databaseName(exampleAwsGlueCatalogDatabase.name())\n .name(\"example\")\n .role(exampleAwsIamRole.arn())\n .jdbcTargets(CrawlerJdbcTargetArgs.builder()\n .connectionName(exampleAwsGlueConnection.name())\n .path(\"database-name/%\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:glue:Crawler\n properties:\n databaseName: ${exampleAwsGlueCatalogDatabase.name}\n name: example\n role: ${exampleAwsIamRole.arn}\n jdbcTargets:\n - connectionName: ${exampleAwsGlueConnection.name}\n path: database-name/%\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### S3 Target Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.glue.Crawler(\"example\", {\n databaseName: exampleAwsGlueCatalogDatabase.name,\n name: \"example\",\n role: exampleAwsIamRole.arn,\n s3Targets: [{\n path: `s3://${exampleAwsS3Bucket.bucket}`,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.glue.Crawler(\"example\",\n database_name=example_aws_glue_catalog_database[\"name\"],\n name=\"example\",\n role=example_aws_iam_role[\"arn\"],\n s3_targets=[{\n \"path\": f\"s3://{example_aws_s3_bucket['bucket']}\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Glue.Crawler(\"example\", new()\n {\n DatabaseName = exampleAwsGlueCatalogDatabase.Name,\n Name = \"example\",\n Role = exampleAwsIamRole.Arn,\n S3Targets = new[]\n {\n new Aws.Glue.Inputs.CrawlerS3TargetArgs\n {\n Path = $\"s3://{exampleAwsS3Bucket.Bucket}\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := glue.NewCrawler(ctx, \"example\", \u0026glue.CrawlerArgs{\n\t\t\tDatabaseName: pulumi.Any(exampleAwsGlueCatalogDatabase.Name),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tRole: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tS3Targets: glue.CrawlerS3TargetArray{\n\t\t\t\t\u0026glue.CrawlerS3TargetArgs{\n\t\t\t\t\tPath: pulumi.Sprintf(\"s3://%v\", exampleAwsS3Bucket.Bucket),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.glue.Crawler;\nimport com.pulumi.aws.glue.CrawlerArgs;\nimport com.pulumi.aws.glue.inputs.CrawlerS3TargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Crawler(\"example\", CrawlerArgs.builder()\n .databaseName(exampleAwsGlueCatalogDatabase.name())\n .name(\"example\")\n .role(exampleAwsIamRole.arn())\n .s3Targets(CrawlerS3TargetArgs.builder()\n .path(String.format(\"s3://%s\", exampleAwsS3Bucket.bucket()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:glue:Crawler\n properties:\n databaseName: ${exampleAwsGlueCatalogDatabase.name}\n name: example\n role: ${exampleAwsIamRole.arn}\n s3Targets:\n - path: s3://${exampleAwsS3Bucket.bucket}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Catalog Target Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.glue.Crawler(\"example\", {\n databaseName: exampleAwsGlueCatalogDatabase.name,\n name: \"example\",\n role: exampleAwsIamRole.arn,\n catalogTargets: [{\n databaseName: exampleAwsGlueCatalogDatabase.name,\n tables: [exampleAwsGlueCatalogTable.name],\n }],\n schemaChangePolicy: {\n deleteBehavior: \"LOG\",\n },\n configuration: `{\n \\\\\"Version\\\\\":1.0,\n \\\\\"Grouping\\\\\": {\n \\\\\"TableGroupingPolicy\\\\\": \\\\\"CombineCompatibleSchemas\\\\\"\n }\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.glue.Crawler(\"example\",\n database_name=example_aws_glue_catalog_database[\"name\"],\n name=\"example\",\n role=example_aws_iam_role[\"arn\"],\n catalog_targets=[{\n \"database_name\": example_aws_glue_catalog_database[\"name\"],\n \"tables\": [example_aws_glue_catalog_table[\"name\"]],\n }],\n schema_change_policy={\n \"delete_behavior\": \"LOG\",\n },\n configuration=\"\"\"{\n \\\"Version\\\":1.0,\n \\\"Grouping\\\": {\n \\\"TableGroupingPolicy\\\": \\\"CombineCompatibleSchemas\\\"\n }\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Glue.Crawler(\"example\", new()\n {\n DatabaseName = exampleAwsGlueCatalogDatabase.Name,\n Name = \"example\",\n Role = exampleAwsIamRole.Arn,\n CatalogTargets = new[]\n {\n new Aws.Glue.Inputs.CrawlerCatalogTargetArgs\n {\n DatabaseName = exampleAwsGlueCatalogDatabase.Name,\n Tables = new[]\n {\n exampleAwsGlueCatalogTable.Name,\n },\n },\n },\n SchemaChangePolicy = new Aws.Glue.Inputs.CrawlerSchemaChangePolicyArgs\n {\n DeleteBehavior = \"LOG\",\n },\n Configuration = @\"{\n \\\"\"Version\\\"\":1.0,\n \\\"\"Grouping\\\"\": {\n \\\"\"TableGroupingPolicy\\\"\": \\\"\"CombineCompatibleSchemas\\\"\"\n }\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := glue.NewCrawler(ctx, \"example\", \u0026glue.CrawlerArgs{\n\t\t\tDatabaseName: pulumi.Any(exampleAwsGlueCatalogDatabase.Name),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tRole: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tCatalogTargets: glue.CrawlerCatalogTargetArray{\n\t\t\t\t\u0026glue.CrawlerCatalogTargetArgs{\n\t\t\t\t\tDatabaseName: pulumi.Any(exampleAwsGlueCatalogDatabase.Name),\n\t\t\t\t\tTables: pulumi.StringArray{\n\t\t\t\t\t\texampleAwsGlueCatalogTable.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSchemaChangePolicy: \u0026glue.CrawlerSchemaChangePolicyArgs{\n\t\t\t\tDeleteBehavior: pulumi.String(\"LOG\"),\n\t\t\t},\n\t\t\tConfiguration: pulumi.String(`{\n \\\"Version\\\":1.0,\n \\\"Grouping\\\": {\n \\\"TableGroupingPolicy\\\": \\\"CombineCompatibleSchemas\\\"\n }\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.glue.Crawler;\nimport com.pulumi.aws.glue.CrawlerArgs;\nimport com.pulumi.aws.glue.inputs.CrawlerCatalogTargetArgs;\nimport com.pulumi.aws.glue.inputs.CrawlerSchemaChangePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Crawler(\"example\", CrawlerArgs.builder()\n .databaseName(exampleAwsGlueCatalogDatabase.name())\n .name(\"example\")\n .role(exampleAwsIamRole.arn())\n .catalogTargets(CrawlerCatalogTargetArgs.builder()\n .databaseName(exampleAwsGlueCatalogDatabase.name())\n .tables(exampleAwsGlueCatalogTable.name())\n .build())\n .schemaChangePolicy(CrawlerSchemaChangePolicyArgs.builder()\n .deleteBehavior(\"LOG\")\n .build())\n .configuration(\"\"\"\n{\n \\\"Version\\\":1.0,\n \\\"Grouping\\\": {\n \\\"TableGroupingPolicy\\\": \\\"CombineCompatibleSchemas\\\"\n }\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:glue:Crawler\n properties:\n databaseName: ${exampleAwsGlueCatalogDatabase.name}\n name: example\n role: ${exampleAwsIamRole.arn}\n catalogTargets:\n - databaseName: ${exampleAwsGlueCatalogDatabase.name}\n tables:\n - ${exampleAwsGlueCatalogTable.name}\n schemaChangePolicy:\n deleteBehavior: LOG\n configuration: |\n {\n \\\"Version\\\":1.0,\n \\\"Grouping\\\": {\n \\\"TableGroupingPolicy\\\": \\\"CombineCompatibleSchemas\\\"\n }\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### MongoDB Target Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.glue.Crawler(\"example\", {\n databaseName: exampleAwsGlueCatalogDatabase.name,\n name: \"example\",\n role: exampleAwsIamRole.arn,\n mongodbTargets: [{\n connectionName: exampleAwsGlueConnection.name,\n path: \"database-name/%\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.glue.Crawler(\"example\",\n database_name=example_aws_glue_catalog_database[\"name\"],\n name=\"example\",\n role=example_aws_iam_role[\"arn\"],\n mongodb_targets=[{\n \"connection_name\": example_aws_glue_connection[\"name\"],\n \"path\": \"database-name/%\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Glue.Crawler(\"example\", new()\n {\n DatabaseName = exampleAwsGlueCatalogDatabase.Name,\n Name = \"example\",\n Role = exampleAwsIamRole.Arn,\n MongodbTargets = new[]\n {\n new Aws.Glue.Inputs.CrawlerMongodbTargetArgs\n {\n ConnectionName = exampleAwsGlueConnection.Name,\n Path = \"database-name/%\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := glue.NewCrawler(ctx, \"example\", \u0026glue.CrawlerArgs{\n\t\t\tDatabaseName: pulumi.Any(exampleAwsGlueCatalogDatabase.Name),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tRole: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tMongodbTargets: glue.CrawlerMongodbTargetArray{\n\t\t\t\t\u0026glue.CrawlerMongodbTargetArgs{\n\t\t\t\t\tConnectionName: pulumi.Any(exampleAwsGlueConnection.Name),\n\t\t\t\t\tPath: pulumi.String(\"database-name/%\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.glue.Crawler;\nimport com.pulumi.aws.glue.CrawlerArgs;\nimport com.pulumi.aws.glue.inputs.CrawlerMongodbTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Crawler(\"example\", CrawlerArgs.builder()\n .databaseName(exampleAwsGlueCatalogDatabase.name())\n .name(\"example\")\n .role(exampleAwsIamRole.arn())\n .mongodbTargets(CrawlerMongodbTargetArgs.builder()\n .connectionName(exampleAwsGlueConnection.name())\n .path(\"database-name/%\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:glue:Crawler\n properties:\n databaseName: ${exampleAwsGlueCatalogDatabase.name}\n name: example\n role: ${exampleAwsIamRole.arn}\n mongodbTargets:\n - connectionName: ${exampleAwsGlueConnection.name}\n path: database-name/%\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Configuration Settings Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst eventsCrawler = new aws.glue.Crawler(\"events_crawler\", {\n databaseName: glueDatabase.name,\n schedule: \"cron(0 1 * * ? *)\",\n name: `events_crawler_${environmentName}`,\n role: glueRole.arn,\n tags: tags,\n configuration: JSON.stringify({\n Grouping: {\n TableGroupingPolicy: \"CombineCompatibleSchemas\",\n },\n CrawlerOutput: {\n Partitions: {\n AddOrUpdateBehavior: \"InheritFromTable\",\n },\n },\n Version: 1,\n }),\n s3Targets: [{\n path: `s3://${dataLakeBucket.bucket}`,\n }],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nevents_crawler = aws.glue.Crawler(\"events_crawler\",\n database_name=glue_database[\"name\"],\n schedule=\"cron(0 1 * * ? *)\",\n name=f\"events_crawler_{environment_name}\",\n role=glue_role[\"arn\"],\n tags=tags,\n configuration=json.dumps({\n \"Grouping\": {\n \"TableGroupingPolicy\": \"CombineCompatibleSchemas\",\n },\n \"CrawlerOutput\": {\n \"Partitions\": {\n \"AddOrUpdateBehavior\": \"InheritFromTable\",\n },\n },\n \"Version\": 1,\n }),\n s3_targets=[{\n \"path\": f\"s3://{data_lake_bucket['bucket']}\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var eventsCrawler = new Aws.Glue.Crawler(\"events_crawler\", new()\n {\n DatabaseName = glueDatabase.Name,\n Schedule = \"cron(0 1 * * ? *)\",\n Name = $\"events_crawler_{environmentName}\",\n Role = glueRole.Arn,\n Tags = tags,\n Configuration = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"Grouping\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"TableGroupingPolicy\"] = \"CombineCompatibleSchemas\",\n },\n [\"CrawlerOutput\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"Partitions\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"AddOrUpdateBehavior\"] = \"InheritFromTable\",\n },\n },\n [\"Version\"] = 1,\n }),\n S3Targets = new[]\n {\n new Aws.Glue.Inputs.CrawlerS3TargetArgs\n {\n Path = $\"s3://{dataLakeBucket.Bucket}\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"Grouping\": map[string]interface{}{\n\t\t\t\t\"TableGroupingPolicy\": \"CombineCompatibleSchemas\",\n\t\t\t},\n\t\t\t\"CrawlerOutput\": map[string]interface{}{\n\t\t\t\t\"Partitions\": map[string]interface{}{\n\t\t\t\t\t\"AddOrUpdateBehavior\": \"InheritFromTable\",\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"Version\": 1,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = glue.NewCrawler(ctx, \"events_crawler\", \u0026glue.CrawlerArgs{\n\t\t\tDatabaseName: pulumi.Any(glueDatabase.Name),\n\t\t\tSchedule: pulumi.String(\"cron(0 1 * * ? *)\"),\n\t\t\tName: pulumi.Sprintf(\"events_crawler_%v\", environmentName),\n\t\t\tRole: pulumi.Any(glueRole.Arn),\n\t\t\tTags: pulumi.Any(tags),\n\t\t\tConfiguration: pulumi.String(json0),\n\t\t\tS3Targets: glue.CrawlerS3TargetArray{\n\t\t\t\t\u0026glue.CrawlerS3TargetArgs{\n\t\t\t\t\tPath: pulumi.Sprintf(\"s3://%v\", dataLakeBucket.Bucket),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.glue.Crawler;\nimport com.pulumi.aws.glue.CrawlerArgs;\nimport com.pulumi.aws.glue.inputs.CrawlerS3TargetArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var eventsCrawler = new Crawler(\"eventsCrawler\", CrawlerArgs.builder()\n .databaseName(glueDatabase.name())\n .schedule(\"cron(0 1 * * ? *)\")\n .name(String.format(\"events_crawler_%s\", environmentName))\n .role(glueRole.arn())\n .tags(tags)\n .configuration(serializeJson(\n jsonObject(\n jsonProperty(\"Grouping\", jsonObject(\n jsonProperty(\"TableGroupingPolicy\", \"CombineCompatibleSchemas\")\n )),\n jsonProperty(\"CrawlerOutput\", jsonObject(\n jsonProperty(\"Partitions\", jsonObject(\n jsonProperty(\"AddOrUpdateBehavior\", \"InheritFromTable\")\n ))\n )),\n jsonProperty(\"Version\", 1)\n )))\n .s3Targets(CrawlerS3TargetArgs.builder()\n .path(String.format(\"s3://%s\", dataLakeBucket.bucket()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n eventsCrawler:\n type: aws:glue:Crawler\n name: events_crawler\n properties:\n databaseName: ${glueDatabase.name}\n schedule: cron(0 1 * * ? *)\n name: events_crawler_${environmentName}\n role: ${glueRole.arn}\n tags: ${tags}\n configuration:\n fn::toJSON:\n Grouping:\n TableGroupingPolicy: CombineCompatibleSchemas\n CrawlerOutput:\n Partitions:\n AddOrUpdateBehavior: InheritFromTable\n Version: 1\n s3Targets:\n - path: s3://${dataLakeBucket.bucket}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Glue Crawlers using `name`. For example:\n\n```sh\n$ pulumi import aws:glue/crawler:Crawler MyJob MyJob\n```\n", "properties": { "arn": { "type": "string", @@ -318236,7 +318236,7 @@ } }, "aws:imagebuilder/workflow:Workflow": { - "description": "Resource for managing an AWS EC2 Image Builder Workflow.\n\n\u003e Image Builder manages the workflows for the distribution stage. Therefore, using the DISTRIBUTION workflow type results in an error.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.imagebuilder.Workflow(\"example\", {\n name: \"example\",\n version: \"1.0.0\",\n type: \"TEST\",\n data: `name: example\ndescription: Workflow to test an image\nschemaVersion: 1.0\n\nparameters:\n - name: waitForActionAtEnd\n type: boolean\n\nsteps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \"ssmAgent\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.: \".stepOutputs.LaunchTestInstance.instanceId\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \".parameters.waitForActionAtEnd\"\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.imagebuilder.Workflow(\"example\",\n name=\"example\",\n version=\"1.0.0\",\n type=\"TEST\",\n data=\"\"\"name: example\ndescription: Workflow to test an image\nschemaVersion: 1.0\n\nparameters:\n - name: waitForActionAtEnd\n type: boolean\n\nsteps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \"ssmAgent\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.$: \"$.stepOutputs.LaunchTestInstance.instanceId\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \"$.parameters.waitForActionAtEnd\"\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ImageBuilder.Workflow(\"example\", new()\n {\n Name = \"example\",\n Version = \"1.0.0\",\n Type = \"TEST\",\n Data = @\"name: example\ndescription: Workflow to test an image\nschemaVersion: 1.0\n\nparameters:\n - name: waitForActionAtEnd\n type: boolean\n\nsteps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \"\"ssmAgent\"\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.$: \"\"$.stepOutputs.LaunchTestInstance.instanceId\"\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \"\"$.parameters.waitForActionAtEnd\"\"\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/imagebuilder\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := imagebuilder.NewWorkflow(ctx, \"example\", \u0026imagebuilder.WorkflowArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tVersion: pulumi.String(\"1.0.0\"),\n\t\t\tType: pulumi.String(\"TEST\"),\n\t\t\tData: pulumi.String(`name: example\ndescription: Workflow to test an image\nschemaVersion: 1.0\n\nparameters:\n - name: waitForActionAtEnd\n type: boolean\n\nsteps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \"ssmAgent\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.$: \"$.stepOutputs.LaunchTestInstance.instanceId\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \"$.parameters.waitForActionAtEnd\"\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.imagebuilder.Workflow;\nimport com.pulumi.aws.imagebuilder.WorkflowArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Workflow(\"example\", WorkflowArgs.builder()\n .name(\"example\")\n .version(\"1.0.0\")\n .type(\"TEST\")\n .data(\"\"\"\nname: example\ndescription: Workflow to test an image\nschemaVersion: 1.0\n\nparameters:\n - name: waitForActionAtEnd\n type: boolean\n\nsteps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \"ssmAgent\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.$: \"$.stepOutputs.LaunchTestInstance.instanceId\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \"$.parameters.waitForActionAtEnd\"\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:imagebuilder:Workflow\n properties:\n name: example\n version: 1.0.0\n type: TEST\n data: |\n name: example\n description: Workflow to test an image\n schemaVersion: 1.0\n\n parameters:\n - name: waitForActionAtEnd\n type: boolean\n\n steps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \"ssmAgent\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.$: \"$.stepOutputs.LaunchTestInstance.instanceId\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \"$.parameters.waitForActionAtEnd\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n- `arn` (String) Amazon Resource Name (ARN) of the Image Builder workflow.\n\nUsing `pulumi import`, import EC2 Image Builder Workflow using the `arn`. For example:\n\nconsole\n\n% pulumi import aws_imagebuilder_workflow.example arn:aws:imagebuilder:us-east-1:aws:workflow/test/example/1.0.1/1\n\nCertain resource arguments, such as `uri`, cannot be read via the API and imported into Terraform. Terraform will display a difference for these arguments the first run after import if declared in the Terraform configuration for an imported resource.\n\n", + "description": "Resource for managing an AWS EC2 Image Builder Workflow.\n\n\u003e Image Builder manages the workflows for the distribution stage. Therefore, using the DISTRIBUTION workflow type results in an error.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.imagebuilder.Workflow(\"example\", {\n name: \"example\",\n version: \"1.0.0\",\n type: \"TEST\",\n data: `name: example\ndescription: Workflow to test an image\nschemaVersion: 1.0\n\nparameters:\n - name: waitForActionAtEnd\n type: boolean\n\nsteps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \\\\\"ssmAgent\\\\\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.: \\\\\".stepOutputs.LaunchTestInstance.instanceId\\\\\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \\\\\".parameters.waitForActionAtEnd\\\\\"\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.imagebuilder.Workflow(\"example\",\n name=\"example\",\n version=\"1.0.0\",\n type=\"TEST\",\n data=\"\"\"name: example\ndescription: Workflow to test an image\nschemaVersion: 1.0\n\nparameters:\n - name: waitForActionAtEnd\n type: boolean\n\nsteps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \\\"ssmAgent\\\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.$: \\\"$.stepOutputs.LaunchTestInstance.instanceId\\\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \\\"$.parameters.waitForActionAtEnd\\\"\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ImageBuilder.Workflow(\"example\", new()\n {\n Name = \"example\",\n Version = \"1.0.0\",\n Type = \"TEST\",\n Data = @\"name: example\ndescription: Workflow to test an image\nschemaVersion: 1.0\n\nparameters:\n - name: waitForActionAtEnd\n type: boolean\n\nsteps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \\\"\"ssmAgent\\\"\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.$: \\\"\"$.stepOutputs.LaunchTestInstance.instanceId\\\"\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \\\"\"$.parameters.waitForActionAtEnd\\\"\"\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/imagebuilder\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := imagebuilder.NewWorkflow(ctx, \"example\", \u0026imagebuilder.WorkflowArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tVersion: pulumi.String(\"1.0.0\"),\n\t\t\tType: pulumi.String(\"TEST\"),\n\t\t\tData: pulumi.String(`name: example\ndescription: Workflow to test an image\nschemaVersion: 1.0\n\nparameters:\n - name: waitForActionAtEnd\n type: boolean\n\nsteps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \\\"ssmAgent\\\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.$: \\\"$.stepOutputs.LaunchTestInstance.instanceId\\\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \\\"$.parameters.waitForActionAtEnd\\\"\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.imagebuilder.Workflow;\nimport com.pulumi.aws.imagebuilder.WorkflowArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Workflow(\"example\", WorkflowArgs.builder()\n .name(\"example\")\n .version(\"1.0.0\")\n .type(\"TEST\")\n .data(\"\"\"\nname: example\ndescription: Workflow to test an image\nschemaVersion: 1.0\n\nparameters:\n - name: waitForActionAtEnd\n type: boolean\n\nsteps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \\\"ssmAgent\\\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.$: \\\"$.stepOutputs.LaunchTestInstance.instanceId\\\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \\\"$.parameters.waitForActionAtEnd\\\"\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:imagebuilder:Workflow\n properties:\n name: example\n version: 1.0.0\n type: TEST\n data: |\n name: example\n description: Workflow to test an image\n schemaVersion: 1.0\n\n parameters:\n - name: waitForActionAtEnd\n type: boolean\n\n steps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \\\"ssmAgent\\\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.$: \\\"$.stepOutputs.LaunchTestInstance.instanceId\\\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \\\"$.parameters.waitForActionAtEnd\\\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n- `arn` (String) Amazon Resource Name (ARN) of the Image Builder workflow.\n\nUsing `pulumi import`, import EC2 Image Builder Workflow using the `arn`. For example:\n\nconsole\n\n% pulumi import aws_imagebuilder_workflow.example arn:aws:imagebuilder:us-east-1:aws:workflow/test/example/1.0.1/1\n\nCertain resource arguments, such as `uri`, cannot be read via the API and imported into Terraform. Terraform will display a difference for these arguments the first run after import if declared in the Terraform configuration for an imported resource.\n\n", "properties": { "arn": { "type": "string", @@ -319437,7 +319437,7 @@ } }, "aws:iot/caCertificate:CaCertificate": { - "description": "Creates and manages an AWS IoT CA Certificate.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as tls from \"@pulumi/tls\";\n\nconst caPrivateKey = new tls.index.PrivateKey(\"ca\", {algorithm: \"RSA\"});\nconst ca = new tls.index.SelfSignedCert(\"ca\", {\n privateKeyPem: caPrivateKey.privateKeyPem,\n subject: [{\n commonName: \"example.com\",\n organization: \"ACME Examples, Inc\",\n }],\n validityPeriodHours: 12,\n allowedUses: [\n \"key_encipherment\",\n \"digital_signature\",\n \"server_auth\",\n ],\n isCaCertificate: true,\n});\nconst verificationPrivateKey = new tls.index.PrivateKey(\"verification\", {algorithm: \"RSA\"});\nconst example = aws.iot.getRegistrationCode({});\nconst verification = new tls.index.CertRequest(\"verification\", {\n privateKeyPem: verificationPrivateKey.privateKeyPem,\n subject: [{\n commonName: example.registrationCode,\n }],\n});\nconst verificationLocallySignedCert = new tls.index.LocallySignedCert(\"verification\", {\n certRequestPem: verification.certRequestPem,\n caPrivateKeyPem: caPrivateKey.privateKeyPem,\n caCertPem: ca.certPem,\n validityPeriodHours: 12,\n allowedUses: [\n \"key_encipherment\",\n \"digital_signature\",\n \"server_auth\",\n ],\n});\nconst exampleCaCertificate = new aws.iot.CaCertificate(\"example\", {\n active: true,\n caCertificatePem: ca.certPem,\n verificationCertificatePem: verificationLocallySignedCert.certPem,\n allowAutoRegistration: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_tls as tls\n\nca_private_key = tls.index.PrivateKey(\"ca\", algorithm=RSA)\nca = tls.index.SelfSignedCert(\"ca\",\n private_key_pem=ca_private_key.private_key_pem,\n subject=[{\n commonName: example.com,\n organization: ACME Examples, Inc,\n }],\n validity_period_hours=12,\n allowed_uses=[\n key_encipherment,\n digital_signature,\n server_auth,\n ],\n is_ca_certificate=True)\nverification_private_key = tls.index.PrivateKey(\"verification\", algorithm=RSA)\nexample = aws.iot.get_registration_code()\nverification = tls.index.CertRequest(\"verification\",\n private_key_pem=verification_private_key.private_key_pem,\n subject=[{\n commonName: example.registration_code,\n }])\nverification_locally_signed_cert = tls.index.LocallySignedCert(\"verification\",\n cert_request_pem=verification.cert_request_pem,\n ca_private_key_pem=ca_private_key.private_key_pem,\n ca_cert_pem=ca.cert_pem,\n validity_period_hours=12,\n allowed_uses=[\n key_encipherment,\n digital_signature,\n server_auth,\n ])\nexample_ca_certificate = aws.iot.CaCertificate(\"example\",\n active=True,\n ca_certificate_pem=ca[\"certPem\"],\n verification_certificate_pem=verification_locally_signed_cert[\"certPem\"],\n allow_auto_registration=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Tls = Pulumi.Tls;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var caPrivateKey = new Tls.Index.PrivateKey(\"ca\", new()\n {\n Algorithm = \"RSA\",\n });\n\n var ca = new Tls.Index.SelfSignedCert(\"ca\", new()\n {\n PrivateKeyPem = caPrivateKey.PrivateKeyPem,\n Subject = new[]\n {\n \n {\n { \"commonName\", \"example.com\" },\n { \"organization\", \"ACME Examples, Inc\" },\n },\n },\n ValidityPeriodHours = 12,\n AllowedUses = new[]\n {\n \"key_encipherment\",\n \"digital_signature\",\n \"server_auth\",\n },\n IsCaCertificate = true,\n });\n\n var verificationPrivateKey = new Tls.Index.PrivateKey(\"verification\", new()\n {\n Algorithm = \"RSA\",\n });\n\n var example = Aws.Iot.GetRegistrationCode.Invoke();\n\n var verification = new Tls.Index.CertRequest(\"verification\", new()\n {\n PrivateKeyPem = verificationPrivateKey.PrivateKeyPem,\n Subject = new[]\n {\n \n {\n { \"commonName\", example.Apply(getRegistrationCodeResult =\u003e getRegistrationCodeResult.RegistrationCode) },\n },\n },\n });\n\n var verificationLocallySignedCert = new Tls.Index.LocallySignedCert(\"verification\", new()\n {\n CertRequestPem = verification.CertRequestPem,\n CaPrivateKeyPem = caPrivateKey.PrivateKeyPem,\n CaCertPem = ca.CertPem,\n ValidityPeriodHours = 12,\n AllowedUses = new[]\n {\n \"key_encipherment\",\n \"digital_signature\",\n \"server_auth\",\n },\n });\n\n var exampleCaCertificate = new Aws.Iot.CaCertificate(\"example\", new()\n {\n Active = true,\n CaCertificatePem = ca.CertPem,\n VerificationCertificatePem = verificationLocallySignedCert.CertPem,\n AllowAutoRegistration = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iot\"\n\t\"github.com/pulumi/pulumi-tls/sdk/v4/go/tls\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcaPrivateKey, err := tls.NewPrivateKey(ctx, \"ca\", \u0026tls.PrivateKeyArgs{\n\t\t\tAlgorithm: \"RSA\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tca, err := tls.NewSelfSignedCert(ctx, \"ca\", \u0026tls.SelfSignedCertArgs{\n\t\t\tPrivateKeyPem: caPrivateKey.PrivateKeyPem,\n\t\t\tSubject: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"commonName\": \"example.com\",\n\t\t\t\t\t\"organization\": \"ACME Examples, Inc\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tValidityPeriodHours: 12,\n\t\t\tAllowedUses: []string{\n\t\t\t\t\"key_encipherment\",\n\t\t\t\t\"digital_signature\",\n\t\t\t\t\"server_auth\",\n\t\t\t},\n\t\t\tIsCaCertificate: true,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tverificationPrivateKey, err := tls.NewPrivateKey(ctx, \"verification\", \u0026tls.PrivateKeyArgs{\n\t\t\tAlgorithm: \"RSA\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := iot.GetRegistrationCode(ctx, \u0026iot.GetRegistrationCodeArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tverification, err := tls.NewCertRequest(ctx, \"verification\", \u0026tls.CertRequestArgs{\n\t\t\tPrivateKeyPem: verificationPrivateKey.PrivateKeyPem,\n\t\t\tSubject: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"commonName\": example.RegistrationCode,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tverificationLocallySignedCert, err := tls.NewLocallySignedCert(ctx, \"verification\", \u0026tls.LocallySignedCertArgs{\n\t\t\tCertRequestPem: verification.CertRequestPem,\n\t\t\tCaPrivateKeyPem: caPrivateKey.PrivateKeyPem,\n\t\t\tCaCertPem: ca.CertPem,\n\t\t\tValidityPeriodHours: 12,\n\t\t\tAllowedUses: []string{\n\t\t\t\t\"key_encipherment\",\n\t\t\t\t\"digital_signature\",\n\t\t\t\t\"server_auth\",\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iot.NewCaCertificate(ctx, \"example\", \u0026iot.CaCertificateArgs{\n\t\t\tActive: pulumi.Bool(true),\n\t\t\tCaCertificatePem: ca.CertPem,\n\t\t\tVerificationCertificatePem: verificationLocallySignedCert.CertPem,\n\t\t\tAllowAutoRegistration: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.tls.privateKey;\nimport com.pulumi.tls.privateKeyArgs;\nimport com.pulumi.tls.selfSignedCert;\nimport com.pulumi.tls.selfSignedCertArgs;\nimport com.pulumi.aws.iot.IotFunctions;\nimport com.pulumi.aws.iot.inputs.GetRegistrationCodeArgs;\nimport com.pulumi.tls.certRequest;\nimport com.pulumi.tls.certRequestArgs;\nimport com.pulumi.tls.locallySignedCert;\nimport com.pulumi.tls.locallySignedCertArgs;\nimport com.pulumi.aws.iot.CaCertificate;\nimport com.pulumi.aws.iot.CaCertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var caPrivateKey = new PrivateKey(\"caPrivateKey\", PrivateKeyArgs.builder()\n .algorithm(\"RSA\")\n .build());\n\n var ca = new SelfSignedCert(\"ca\", SelfSignedCertArgs.builder()\n .privateKeyPem(caPrivateKey.privateKeyPem())\n .subject(List.of(Map.ofEntries(\n Map.entry(\"commonName\", \"example.com\"),\n Map.entry(\"organization\", \"ACME Examples, Inc\")\n )))\n .validityPeriodHours(12)\n .allowedUses(List.of( \n \"key_encipherment\",\n \"digital_signature\",\n \"server_auth\"))\n .isCaCertificate(true)\n .build());\n\n var verificationPrivateKey = new PrivateKey(\"verificationPrivateKey\", PrivateKeyArgs.builder()\n .algorithm(\"RSA\")\n .build());\n\n final var example = IotFunctions.getRegistrationCode(GetRegistrationCodeArgs.builder()\n .build());\n\n var verification = new CertRequest(\"verification\", CertRequestArgs.builder()\n .privateKeyPem(verificationPrivateKey.privateKeyPem())\n .subject(List.of(Map.of(\"commonName\", example.registrationCode())))\n .build());\n\n var verificationLocallySignedCert = new LocallySignedCert(\"verificationLocallySignedCert\", LocallySignedCertArgs.builder()\n .certRequestPem(verification.certRequestPem())\n .caPrivateKeyPem(caPrivateKey.privateKeyPem())\n .caCertPem(ca.certPem())\n .validityPeriodHours(12)\n .allowedUses(List.of( \n \"key_encipherment\",\n \"digital_signature\",\n \"server_auth\"))\n .build());\n\n var exampleCaCertificate = new CaCertificate(\"exampleCaCertificate\", CaCertificateArgs.builder()\n .active(true)\n .caCertificatePem(ca.certPem())\n .verificationCertificatePem(verificationLocallySignedCert.certPem())\n .allowAutoRegistration(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ca:\n type: tls:selfSignedCert\n properties:\n privateKeyPem: ${caPrivateKey.privateKeyPem}\n subject:\n - commonName: example.com\n organization: ACME Examples, Inc\n validityPeriodHours: 12\n allowedUses:\n - key_encipherment\n - digital_signature\n - server_auth\n isCaCertificate: true\n caPrivateKey:\n type: tls:privateKey\n name: ca\n properties:\n algorithm: RSA\n verification:\n type: tls:certRequest\n properties:\n privateKeyPem: ${verificationPrivateKey.privateKeyPem}\n subject:\n - commonName: ${example.registrationCode}\n verificationPrivateKey:\n type: tls:privateKey\n name: verification\n properties:\n algorithm: RSA\n verificationLocallySignedCert:\n type: tls:locallySignedCert\n name: verification\n properties:\n certRequestPem: ${verification.certRequestPem}\n caPrivateKeyPem: ${caPrivateKey.privateKeyPem}\n caCertPem: ${ca.certPem}\n validityPeriodHours: 12\n allowedUses:\n - key_encipherment\n - digital_signature\n - server_auth\n exampleCaCertificate:\n type: aws:iot:CaCertificate\n name: example\n properties:\n active: true\n caCertificatePem: ${ca.certPem}\n verificationCertificatePem: ${verificationLocallySignedCert.certPem}\n allowAutoRegistration: true\nvariables:\n example:\n fn::invoke:\n function: aws:iot:getRegistrationCode\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Creates and manages an AWS IoT CA Certificate.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n ca:\n type: tls:SelfSignedCert\n properties:\n privateKeyPem: ${caPrivateKey.privateKeyPem}\n subject:\n - commonName: example.com\n organization: ACME Examples, Inc\n validityPeriodHours: 12\n allowedUses:\n - key_encipherment\n - digital_signature\n - server_auth\n isCaCertificate: true\n caPrivateKey:\n type: tls:PrivateKey\n name: ca\n properties:\n algorithm: RSA\n verification:\n type: tls:CertRequest\n properties:\n privateKeyPem: ${verificationPrivateKey.privateKeyPem}\n subject:\n - commonName: ${example.registrationCode}\n verificationPrivateKey:\n type: tls:PrivateKey\n name: verification\n properties:\n algorithm: RSA\n verificationLocallySignedCert:\n type: tls:LocallySignedCert\n name: verification\n properties:\n certRequestPem: ${verification.certRequestPem}\n caPrivateKeyPem: ${caPrivateKey.privateKeyPem}\n caCertPem: ${ca.certPem}\n validityPeriodHours: 12\n allowedUses:\n - key_encipherment\n - digital_signature\n - server_auth\n exampleCaCertificate:\n type: aws:iot:CaCertificate\n name: example\n properties:\n active: true\n caCertificatePem: ${ca.certPem}\n verificationCertificatePem: ${verificationLocallySignedCert.certPem}\n allowAutoRegistration: true\nvariables:\n example:\n fn::invoke:\n function: aws:iot:getRegistrationCode\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "properties": { "active": { "type": "boolean", @@ -324116,7 +324116,7 @@ } }, "aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream": { - "description": "Provides a Kinesis Firehose Delivery Stream resource. Amazon Kinesis Firehose is a fully managed, elastic service to easily deliver real-time data streams to destinations such as Amazon S3 , Amazon Redshift and Snowflake.\n\nFor more details, see the [Amazon Kinesis Firehose Documentation](https://aws.amazon.com/documentation/firehose/).\n\n## Example Usage\n\n### Extended S3 Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst bucket = new aws.s3.Bucket(\"bucket\", {bucket: \"tf-test-bucket\"});\nconst firehoseAssumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"firehose.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst firehoseRole = new aws.iam.Role(\"firehose_role\", {\n name: \"firehose_test_role\",\n assumeRolePolicy: firehoseAssumeRole.then(firehoseAssumeRole =\u003e firehoseAssumeRole.json),\n});\nconst lambdaAssumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"lambda.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst lambdaIam = new aws.iam.Role(\"lambda_iam\", {\n name: \"lambda_iam\",\n assumeRolePolicy: lambdaAssumeRole.then(lambdaAssumeRole =\u003e lambdaAssumeRole.json),\n});\nconst lambdaProcessor = new aws.lambda.Function(\"lambda_processor\", {\n code: new pulumi.asset.FileArchive(\"lambda.zip\"),\n name: \"firehose_lambda_processor\",\n role: lambdaIam.arn,\n handler: \"exports.handler\",\n runtime: aws.lambda.Runtime.NodeJS20dX,\n});\nconst extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", {\n name: \"kinesis-firehose-extended-s3-test-stream\",\n destination: \"extended_s3\",\n extendedS3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: pulumi.interpolate`${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\nconst bucketAcl = new aws.s3.BucketAcl(\"bucket_acl\", {\n bucket: bucket.id,\n acl: \"private\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nbucket = aws.s3.Bucket(\"bucket\", bucket=\"tf-test-bucket\")\nfirehose_assume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"firehose.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nfirehose_role = aws.iam.Role(\"firehose_role\",\n name=\"firehose_test_role\",\n assume_role_policy=firehose_assume_role.json)\nlambda_assume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"lambda.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nlambda_iam = aws.iam.Role(\"lambda_iam\",\n name=\"lambda_iam\",\n assume_role_policy=lambda_assume_role.json)\nlambda_processor = aws.lambda_.Function(\"lambda_processor\",\n code=pulumi.FileArchive(\"lambda.zip\"),\n name=\"firehose_lambda_processor\",\n role=lambda_iam.arn,\n handler=\"exports.handler\",\n runtime=aws.lambda_.Runtime.NODE_JS20D_X)\nextended_s3_stream = aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\",\n name=\"kinesis-firehose-extended-s3-test-stream\",\n destination=\"extended_s3\",\n extended_s3_configuration={\n \"role_arn\": firehose_role.arn,\n \"bucket_arn\": bucket.arn,\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": lambda_processor.arn.apply(lambda arn: f\"{arn}:$LATEST\"),\n }],\n }],\n },\n })\nbucket_acl = aws.s3.BucketAcl(\"bucket_acl\",\n bucket=bucket.id,\n acl=\"private\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Aws.S3.Bucket(\"bucket\", new()\n {\n BucketName = \"tf-test-bucket\",\n });\n\n var firehoseAssumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"firehose.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var firehoseRole = new Aws.Iam.Role(\"firehose_role\", new()\n {\n Name = \"firehose_test_role\",\n AssumeRolePolicy = firehoseAssumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var lambdaAssumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"lambda.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var lambdaIam = new Aws.Iam.Role(\"lambda_iam\", new()\n {\n Name = \"lambda_iam\",\n AssumeRolePolicy = lambdaAssumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var lambdaProcessor = new Aws.Lambda.Function(\"lambda_processor\", new()\n {\n Code = new FileArchive(\"lambda.zip\"),\n Name = \"firehose_lambda_processor\",\n Role = lambdaIam.Arn,\n Handler = \"exports.handler\",\n Runtime = Aws.Lambda.Runtime.NodeJS20dX,\n });\n\n var extendedS3Stream = new Aws.Kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", new()\n {\n Name = \"kinesis-firehose-extended-s3-test-stream\",\n Destination = \"extended_s3\",\n ExtendedS3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = lambdaProcessor.Arn.Apply(arn =\u003e $\"{arn}:$LATEST\"),\n },\n },\n },\n },\n },\n },\n });\n\n var bucketAcl = new Aws.S3.BucketAcl(\"bucket_acl\", new()\n {\n Bucket = bucket.Id,\n Acl = \"private\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/s3\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := s3.NewBucket(ctx, \"bucket\", \u0026s3.BucketArgs{\n\t\t\tBucket: pulumi.String(\"tf-test-bucket\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirehoseAssumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"firehose.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirehoseRole, err := iam.NewRole(ctx, \"firehose_role\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"firehose_test_role\"),\n\t\t\tAssumeRolePolicy: pulumi.String(firehoseAssumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlambdaAssumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"lambda.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlambdaIam, err := iam.NewRole(ctx, \"lambda_iam\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"lambda_iam\"),\n\t\t\tAssumeRolePolicy: pulumi.String(lambdaAssumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlambdaProcessor, err := lambda.NewFunction(ctx, \"lambda_processor\", \u0026lambda.FunctionArgs{\n\t\t\tCode: pulumi.NewFileArchive(\"lambda.zip\"),\n\t\t\tName: pulumi.String(\"firehose_lambda_processor\"),\n\t\t\tRole: lambdaIam.Arn,\n\t\t\tHandler: pulumi.String(\"exports.handler\"),\n\t\t\tRuntime: pulumi.String(lambda.RuntimeNodeJS20dX),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"extended_s3_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-extended-s3-test-stream\"),\n\t\t\tDestination: pulumi.String(\"extended_s3\"),\n\t\t\tExtendedS3Configuration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{\n\t\t\t\tRoleArn: firehoseRole.Arn,\n\t\t\t\tBucketArn: bucket.Arn,\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: lambdaProcessor.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\t\t\t\t\t\t\treturn fmt.Sprintf(\"%v:$LATEST\", arn), nil\n\t\t\t\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = s3.NewBucketAcl(ctx, \"bucket_acl\", \u0026s3.BucketAclArgs{\n\t\t\tBucket: bucket.ID(),\n\t\t\tAcl: pulumi.String(\"private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.s3.Bucket;\nimport com.pulumi.aws.s3.BucketArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.lambda.Function;\nimport com.pulumi.aws.lambda.FunctionArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs;\nimport com.pulumi.aws.s3.BucketAcl;\nimport com.pulumi.aws.s3.BucketAclArgs;\nimport com.pulumi.asset.FileArchive;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .bucket(\"tf-test-bucket\")\n .build());\n\n final var firehoseAssumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"firehose.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var firehoseRole = new Role(\"firehoseRole\", RoleArgs.builder()\n .name(\"firehose_test_role\")\n .assumeRolePolicy(firehoseAssumeRole.json())\n .build());\n\n final var lambdaAssumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"lambda.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var lambdaIam = new Role(\"lambdaIam\", RoleArgs.builder()\n .name(\"lambda_iam\")\n .assumeRolePolicy(lambdaAssumeRole.json())\n .build());\n\n var lambdaProcessor = new Function(\"lambdaProcessor\", FunctionArgs.builder()\n .code(new FileArchive(\"lambda.zip\"))\n .name(\"firehose_lambda_processor\")\n .role(lambdaIam.arn())\n .handler(\"exports.handler\")\n .runtime(\"nodejs20.x\")\n .build());\n\n var extendedS3Stream = new FirehoseDeliveryStream(\"extendedS3Stream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-extended-s3-test-stream\")\n .destination(\"extended_s3\")\n .extendedS3Configuration(FirehoseDeliveryStreamExtendedS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .processingConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs.builder()\n .enabled(true)\n .processors(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(lambdaProcessor.arn().applyValue(_arn -\u003e String.format(\"%s:$LATEST\", _arn)))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var bucketAcl = new BucketAcl(\"bucketAcl\", BucketAclArgs.builder()\n .bucket(bucket.id())\n .acl(\"private\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedS3Stream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: extended_s3_stream\n properties:\n name: kinesis-firehose-extended-s3-test-stream\n destination: extended_s3\n extendedS3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n bucket:\n type: aws:s3:Bucket\n properties:\n bucket: tf-test-bucket\n bucketAcl:\n type: aws:s3:BucketAcl\n name: bucket_acl\n properties:\n bucket: ${bucket.id}\n acl: private\n firehoseRole:\n type: aws:iam:Role\n name: firehose_role\n properties:\n name: firehose_test_role\n assumeRolePolicy: ${firehoseAssumeRole.json}\n lambdaIam:\n type: aws:iam:Role\n name: lambda_iam\n properties:\n name: lambda_iam\n assumeRolePolicy: ${lambdaAssumeRole.json}\n lambdaProcessor:\n type: aws:lambda:Function\n name: lambda_processor\n properties:\n code:\n fn::FileArchive: lambda.zip\n name: firehose_lambda_processor\n role: ${lambdaIam.arn}\n handler: exports.handler\n runtime: nodejs20.x\nvariables:\n firehoseAssumeRole:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - firehose.amazonaws.com\n actions:\n - sts:AssumeRole\n lambdaAssumeRole:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - lambda.amazonaws.com\n actions:\n - sts:AssumeRole\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Extended S3 Destination with dynamic partitioning\n\nThese examples use built-in Firehose functionality, rather than requiring a lambda.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", {\n name: \"kinesis-firehose-extended-s3-test-stream\",\n destination: \"extended_s3\",\n extendedS3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 64,\n dynamicPartitioningConfiguration: {\n enabled: true,\n },\n prefix: \"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n errorOutputPrefix: \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n processingConfiguration: {\n enabled: true,\n processors: [\n {\n type: \"RecordDeAggregation\",\n parameters: [{\n parameterName: \"SubRecordType\",\n parameterValue: \"JSON\",\n }],\n },\n {\n type: \"AppendDelimiterToRecord\",\n },\n {\n type: \"MetadataExtraction\",\n parameters: [\n {\n parameterName: \"JsonParsingEngine\",\n parameterValue: \"JQ-1.6\",\n },\n {\n parameterName: \"MetadataExtractionQuery\",\n parameterValue: \"{customer_id:.customer_id}\",\n },\n ],\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nextended_s3_stream = aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\",\n name=\"kinesis-firehose-extended-s3-test-stream\",\n destination=\"extended_s3\",\n extended_s3_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 64,\n \"dynamic_partitioning_configuration\": {\n \"enabled\": True,\n },\n \"prefix\": \"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n \"error_output_prefix\": \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [\n {\n \"type\": \"RecordDeAggregation\",\n \"parameters\": [{\n \"parameter_name\": \"SubRecordType\",\n \"parameter_value\": \"JSON\",\n }],\n },\n {\n \"type\": \"AppendDelimiterToRecord\",\n },\n {\n \"type\": \"MetadataExtraction\",\n \"parameters\": [\n {\n \"parameter_name\": \"JsonParsingEngine\",\n \"parameter_value\": \"JQ-1.6\",\n },\n {\n \"parameter_name\": \"MetadataExtractionQuery\",\n \"parameter_value\": \"{customer_id:.customer_id}\",\n },\n ],\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var extendedS3Stream = new Aws.Kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", new()\n {\n Name = \"kinesis-firehose-extended-s3-test-stream\",\n Destination = \"extended_s3\",\n ExtendedS3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 64,\n DynamicPartitioningConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs\n {\n Enabled = true,\n },\n Prefix = \"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n ErrorOutputPrefix = \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"RecordDeAggregation\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"SubRecordType\",\n ParameterValue = \"JSON\",\n },\n },\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"AppendDelimiterToRecord\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"MetadataExtraction\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"JsonParsingEngine\",\n ParameterValue = \"JQ-1.6\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"MetadataExtractionQuery\",\n ParameterValue = \"{customer_id:.customer_id}\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"extended_s3_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-extended-s3-test-stream\"),\n\t\t\tDestination: pulumi.String(\"extended_s3\"),\n\t\t\tExtendedS3Configuration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\tBufferingSize: pulumi.Int(64),\n\t\t\t\tDynamicPartitioningConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tPrefix: pulumi.String(\"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\"),\n\t\t\t\tErrorOutputPrefix: pulumi.String(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\"),\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"RecordDeAggregation\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"SubRecordType\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"JSON\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"AppendDelimiterToRecord\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"MetadataExtraction\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"JsonParsingEngine\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"JQ-1.6\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"MetadataExtractionQuery\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"{customer_id:.customer_id}\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var extendedS3Stream = new FirehoseDeliveryStream(\"extendedS3Stream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-extended-s3-test-stream\")\n .destination(\"extended_s3\")\n .extendedS3Configuration(FirehoseDeliveryStreamExtendedS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(64)\n .dynamicPartitioningConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs.builder()\n .enabled(true)\n .build())\n .prefix(\"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\")\n .errorOutputPrefix(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\")\n .processingConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs.builder()\n .enabled(true)\n .processors( \n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"RecordDeAggregation\")\n .parameters(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"SubRecordType\")\n .parameterValue(\"JSON\")\n .build())\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"AppendDelimiterToRecord\")\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"MetadataExtraction\")\n .parameters( \n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"JsonParsingEngine\")\n .parameterValue(\"JQ-1.6\")\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"MetadataExtractionQuery\")\n .parameterValue(\"{customer_id:.customer_id}\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedS3Stream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: extended_s3_stream\n properties:\n name: kinesis-firehose-extended-s3-test-stream\n destination: extended_s3\n extendedS3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 64\n dynamicPartitioningConfiguration:\n enabled: 'true'\n prefix: data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\n errorOutputPrefix: errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: RecordDeAggregation\n parameters:\n - parameterName: SubRecordType\n parameterValue: JSON\n - type: AppendDelimiterToRecord\n - type: MetadataExtraction\n parameters:\n - parameterName: JsonParsingEngine\n parameterValue: JQ-1.6\n - parameterName: MetadataExtractionQuery\n parameterValue: '{customer_id:.customer_id}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nMultiple Dynamic Partitioning Keys (maximum of 50) can be added by comma separating the \u003cspan pulumi-lang-nodejs=\"`parameterValue`\" pulumi-lang-dotnet=\"`ParameterValue`\" pulumi-lang-go=\"`parameterValue`\" pulumi-lang-python=\"`parameter_value`\" pulumi-lang-yaml=\"`parameterValue`\" pulumi-lang-java=\"`parameterValue`\"\u003e`parameter_value`\u003c/span\u003e.\n\nThe following example adds the Dynamic Partitioning Keys: \u003cspan pulumi-lang-nodejs=\"`storeId`\" pulumi-lang-dotnet=\"`StoreId`\" pulumi-lang-go=\"`storeId`\" pulumi-lang-python=\"`store_id`\" pulumi-lang-yaml=\"`storeId`\" pulumi-lang-java=\"`storeId`\"\u003e`store_id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`customerId`\" pulumi-lang-dotnet=\"`CustomerId`\" pulumi-lang-go=\"`customerId`\" pulumi-lang-python=\"`customer_id`\" pulumi-lang-yaml=\"`customerId`\" pulumi-lang-java=\"`customerId`\"\u003e`customer_id`\u003c/span\u003e to the S3 prefix.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", {\n name: \"kinesis-firehose-extended-s3-test-stream\",\n destination: \"extended_s3\",\n extendedS3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 64,\n dynamicPartitioningConfiguration: {\n enabled: true,\n },\n prefix: \"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n errorOutputPrefix: \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"MetadataExtraction\",\n parameters: [\n {\n parameterName: \"JsonParsingEngine\",\n parameterValue: \"JQ-1.6\",\n },\n {\n parameterName: \"MetadataExtractionQuery\",\n parameterValue: \"{store_id:.store_id,customer_id:.customer_id}\",\n },\n ],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nextended_s3_stream = aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\",\n name=\"kinesis-firehose-extended-s3-test-stream\",\n destination=\"extended_s3\",\n extended_s3_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 64,\n \"dynamic_partitioning_configuration\": {\n \"enabled\": True,\n },\n \"prefix\": \"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n \"error_output_prefix\": \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"MetadataExtraction\",\n \"parameters\": [\n {\n \"parameter_name\": \"JsonParsingEngine\",\n \"parameter_value\": \"JQ-1.6\",\n },\n {\n \"parameter_name\": \"MetadataExtractionQuery\",\n \"parameter_value\": \"{store_id:.store_id,customer_id:.customer_id}\",\n },\n ],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var extendedS3Stream = new Aws.Kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", new()\n {\n Name = \"kinesis-firehose-extended-s3-test-stream\",\n Destination = \"extended_s3\",\n ExtendedS3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 64,\n DynamicPartitioningConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs\n {\n Enabled = true,\n },\n Prefix = \"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n ErrorOutputPrefix = \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"MetadataExtraction\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"JsonParsingEngine\",\n ParameterValue = \"JQ-1.6\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"MetadataExtractionQuery\",\n ParameterValue = \"{store_id:.store_id,customer_id:.customer_id}\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"extended_s3_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-extended-s3-test-stream\"),\n\t\t\tDestination: pulumi.String(\"extended_s3\"),\n\t\t\tExtendedS3Configuration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\tBufferingSize: pulumi.Int(64),\n\t\t\t\tDynamicPartitioningConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tPrefix: pulumi.String(\"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\"),\n\t\t\t\tErrorOutputPrefix: pulumi.String(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\"),\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"MetadataExtraction\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"JsonParsingEngine\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"JQ-1.6\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"MetadataExtractionQuery\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"{store_id:.store_id,customer_id:.customer_id}\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var extendedS3Stream = new FirehoseDeliveryStream(\"extendedS3Stream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-extended-s3-test-stream\")\n .destination(\"extended_s3\")\n .extendedS3Configuration(FirehoseDeliveryStreamExtendedS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(64)\n .dynamicPartitioningConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs.builder()\n .enabled(true)\n .build())\n .prefix(\"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\")\n .errorOutputPrefix(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\")\n .processingConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs.builder()\n .enabled(true)\n .processors(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"MetadataExtraction\")\n .parameters( \n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"JsonParsingEngine\")\n .parameterValue(\"JQ-1.6\")\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"MetadataExtractionQuery\")\n .parameterValue(\"{store_id:.store_id,customer_id:.customer_id}\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedS3Stream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: extended_s3_stream\n properties:\n name: kinesis-firehose-extended-s3-test-stream\n destination: extended_s3\n extendedS3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 64\n dynamicPartitioningConfiguration:\n enabled: 'true'\n prefix: data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\n errorOutputPrefix: errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: MetadataExtraction\n parameters:\n - parameterName: JsonParsingEngine\n parameterValue: JQ-1.6\n - parameterName: MetadataExtractionQuery\n parameterValue: '{store_id:.store_id,customer_id:.customer_id}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redshift Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.redshift.Cluster(\"test_cluster\", {\n clusterIdentifier: \"tf-redshift-cluster\",\n databaseName: \"test\",\n masterUsername: \"testuser\",\n masterPassword: \"T3stPass\",\n nodeType: \"dc1.large\",\n clusterType: \"single-node\",\n});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"redshift\",\n redshiftConfiguration: {\n roleArn: firehoseRole.arn,\n clusterJdbcurl: pulumi.interpolate`jdbc:redshift://${testCluster.endpoint}/${testCluster.databaseName}`,\n username: \"testuser\",\n password: \"T3stPass\",\n dataTableName: \"test-table\",\n copyOptions: \"delimiter '|'\",\n dataTableColumns: \"test-col\",\n s3BackupMode: \"Enabled\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n s3BackupConfiguration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 15,\n bufferingInterval: 300,\n compressionFormat: \"GZIP\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.redshift.Cluster(\"test_cluster\",\n cluster_identifier=\"tf-redshift-cluster\",\n database_name=\"test\",\n master_username=\"testuser\",\n master_password=\"T3stPass\",\n node_type=\"dc1.large\",\n cluster_type=\"single-node\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"redshift\",\n redshift_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"cluster_jdbcurl\": pulumi.Output.all(\n endpoint=test_cluster.endpoint,\n database_name=test_cluster.database_name\n).apply(lambda resolved_outputs: f\"jdbc:redshift://{resolved_outputs['endpoint']}/{resolved_outputs['database_name']}\")\n,\n \"username\": \"testuser\",\n \"password\": \"T3stPass\",\n \"data_table_name\": \"test-table\",\n \"copy_options\": \"delimiter '|'\",\n \"data_table_columns\": \"test-col\",\n \"s3_backup_mode\": \"Enabled\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"s3_backup_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 15,\n \"buffering_interval\": 300,\n \"compression_format\": \"GZIP\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.RedShift.Cluster(\"test_cluster\", new()\n {\n ClusterIdentifier = \"tf-redshift-cluster\",\n DatabaseName = \"test\",\n MasterUsername = \"testuser\",\n MasterPassword = \"T3stPass\",\n NodeType = \"dc1.large\",\n ClusterType = \"single-node\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"redshift\",\n RedshiftConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamRedshiftConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n ClusterJdbcurl = Output.Tuple(testCluster.Endpoint, testCluster.DatabaseName).Apply(values =\u003e\n {\n var endpoint = values.Item1;\n var databaseName = values.Item2;\n return $\"jdbc:redshift://{endpoint}/{databaseName}\";\n }),\n Username = \"testuser\",\n Password = \"T3stPass\",\n DataTableName = \"test-table\",\n CopyOptions = \"delimiter '|'\",\n DataTableColumns = \"test-col\",\n S3BackupMode = \"Enabled\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n S3BackupConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 15,\n BufferingInterval = 300,\n CompressionFormat = \"GZIP\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/redshift\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := redshift.NewCluster(ctx, \"test_cluster\", \u0026redshift.ClusterArgs{\n\t\t\tClusterIdentifier: pulumi.String(\"tf-redshift-cluster\"),\n\t\t\tDatabaseName: pulumi.String(\"test\"),\n\t\t\tMasterUsername: pulumi.String(\"testuser\"),\n\t\t\tMasterPassword: pulumi.String(\"T3stPass\"),\n\t\t\tNodeType: pulumi.String(\"dc1.large\"),\n\t\t\tClusterType: pulumi.String(\"single-node\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"redshift\"),\n\t\t\tRedshiftConfiguration: \u0026kinesis.FirehoseDeliveryStreamRedshiftConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tClusterJdbcurl: pulumi.All(testCluster.Endpoint, testCluster.DatabaseName).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tendpoint := _args[0].(string)\n\t\t\t\t\tdatabaseName := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"jdbc:redshift://%v/%v\", endpoint, databaseName), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tUsername: pulumi.String(\"testuser\"),\n\t\t\t\tPassword: pulumi.String(\"T3stPass\"),\n\t\t\t\tDataTableName: pulumi.String(\"test-table\"),\n\t\t\t\tCopyOptions: pulumi.String(\"delimiter '|'\"),\n\t\t\t\tDataTableColumns: pulumi.String(\"test-col\"),\n\t\t\t\tS3BackupMode: pulumi.String(\"Enabled\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tS3BackupConfiguration: \u0026kinesis.FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(15),\n\t\t\t\t\tBufferingInterval: pulumi.Int(300),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.redshift.Cluster;\nimport com.pulumi.aws.redshift.ClusterArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamRedshiftConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Cluster(\"testCluster\", ClusterArgs.builder()\n .clusterIdentifier(\"tf-redshift-cluster\")\n .databaseName(\"test\")\n .masterUsername(\"testuser\")\n .masterPassword(\"T3stPass\")\n .nodeType(\"dc1.large\")\n .clusterType(\"single-node\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"redshift\")\n .redshiftConfiguration(FirehoseDeliveryStreamRedshiftConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .clusterJdbcurl(Output.tuple(testCluster.endpoint(), testCluster.databaseName()).applyValue(values -\u003e {\n var endpoint = values.t1;\n var databaseName = values.t2;\n return String.format(\"jdbc:redshift://%s/%s\", endpoint,databaseName);\n }))\n .username(\"testuser\")\n .password(\"T3stPass\")\n .dataTableName(\"test-table\")\n .copyOptions(\"delimiter '|'\")\n .dataTableColumns(\"test-col\")\n .s3BackupMode(\"Enabled\")\n .s3Configuration(FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .s3BackupConfiguration(FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(15)\n .bufferingInterval(300)\n .compressionFormat(\"GZIP\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:redshift:Cluster\n name: test_cluster\n properties:\n clusterIdentifier: tf-redshift-cluster\n databaseName: test\n masterUsername: testuser\n masterPassword: T3stPass\n nodeType: dc1.large\n clusterType: single-node\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: redshift\n redshiftConfiguration:\n roleArn: ${firehoseRole.arn}\n clusterJdbcurl: jdbc:redshift://${testCluster.endpoint}/${testCluster.databaseName}\n username: testuser\n password: T3stPass\n dataTableName: test-table\n copyOptions: delimiter '|'\n dataTableColumns: test-col\n s3BackupMode: Enabled\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n s3BackupConfiguration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 15\n bufferingInterval: 300\n compressionFormat: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Elasticsearch Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.elasticsearch.Domain(\"test_cluster\", {domainName: \"firehose-es-test\"});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"elasticsearch\",\n elasticsearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehoseRole.arn,\n indexName: \"test\",\n typeName: \"test\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.elasticsearch.Domain(\"test_cluster\", domain_name=\"firehose-es-test\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"elasticsearch\",\n elasticsearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose_role[\"arn\"],\n \"index_name\": \"test\",\n \"type_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.ElasticSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"firehose-es-test\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"elasticsearch\",\n ElasticsearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehoseRole.Arn,\n IndexName = \"test\",\n TypeName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := elasticsearch.NewDomain(ctx, \"test_cluster\", \u0026elasticsearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"firehose-es-test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"elasticsearch\"),\n\t\t\tElasticsearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tTypeName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"firehose-es-test\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"elasticsearch\")\n .elasticsearchConfiguration(FirehoseDeliveryStreamElasticsearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehoseRole.arn())\n .indexName(\"test\")\n .typeName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .processingConfiguration(FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs.builder()\n .enabled(true)\n .processors(FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:elasticsearch:Domain\n name: test_cluster\n properties:\n domainName: firehose-es-test\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: elasticsearch\n elasticsearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehoseRole.arn}\n indexName: test\n typeName: test\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Elasticsearch Destination With VPC\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.elasticsearch.Domain(\"test_cluster\", {\n domainName: \"es-test\",\n clusterConfig: {\n instanceCount: 2,\n zoneAwarenessEnabled: true,\n instanceType: \"t2.small.elasticsearch\",\n },\n ebsOptions: {\n ebsEnabled: true,\n volumeSize: 10,\n },\n vpcOptions: {\n securityGroupIds: [first.id],\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n },\n});\nconst firehose_elasticsearch = aws.iam.getPolicyDocumentOutput({\n statements: [\n {\n effect: \"Allow\",\n actions: [\"es:*\"],\n resources: [\n testCluster.arn,\n pulumi.interpolate`${testCluster.arn}/*`,\n ],\n },\n {\n effect: \"Allow\",\n actions: [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\",\n ],\n resources: [\"*\"],\n },\n ],\n});\nconst firehose_elasticsearchRolePolicy = new aws.iam.RolePolicy(\"firehose-elasticsearch\", {\n name: \"elasticsearch\",\n role: firehose.id,\n policy: firehose_elasticsearch.apply(firehose_elasticsearch =\u003e firehose_elasticsearch.json),\n});\nconst test = new aws.kinesis.FirehoseDeliveryStream(\"test\", {\n name: \"kinesis-firehose-es\",\n destination: \"elasticsearch\",\n elasticsearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehose.arn,\n indexName: \"test\",\n typeName: \"test\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n },\n vpcConfig: {\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n securityGroupIds: [first.id],\n roleArn: firehose.arn,\n },\n },\n}, {\n dependsOn: [firehose_elasticsearchRolePolicy],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.elasticsearch.Domain(\"test_cluster\",\n domain_name=\"es-test\",\n cluster_config={\n \"instance_count\": 2,\n \"zone_awareness_enabled\": True,\n \"instance_type\": \"t2.small.elasticsearch\",\n },\n ebs_options={\n \"ebs_enabled\": True,\n \"volume_size\": 10,\n },\n vpc_options={\n \"security_group_ids\": [first[\"id\"]],\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n })\nfirehose_elasticsearch = aws.iam.get_policy_document_output(statements=[\n {\n \"effect\": \"Allow\",\n \"actions\": [\"es:*\"],\n \"resources\": [\n test_cluster.arn,\n test_cluster.arn.apply(lambda arn: f\"{arn}/*\"),\n ],\n },\n {\n \"effect\": \"Allow\",\n \"actions\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\",\n ],\n \"resources\": [\"*\"],\n },\n])\nfirehose_elasticsearch_role_policy = aws.iam.RolePolicy(\"firehose-elasticsearch\",\n name=\"elasticsearch\",\n role=firehose[\"id\"],\n policy=firehose_elasticsearch.json)\ntest = aws.kinesis.FirehoseDeliveryStream(\"test\",\n name=\"kinesis-firehose-es\",\n destination=\"elasticsearch\",\n elasticsearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose[\"arn\"],\n \"index_name\": \"test\",\n \"type_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n },\n \"vpc_config\": {\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n \"security_group_ids\": [first[\"id\"]],\n \"role_arn\": firehose[\"arn\"],\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[firehose_elasticsearch_role_policy]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.ElasticSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"es-test\",\n ClusterConfig = new Aws.ElasticSearch.Inputs.DomainClusterConfigArgs\n {\n InstanceCount = 2,\n ZoneAwarenessEnabled = true,\n InstanceType = \"t2.small.elasticsearch\",\n },\n EbsOptions = new Aws.ElasticSearch.Inputs.DomainEbsOptionsArgs\n {\n EbsEnabled = true,\n VolumeSize = 10,\n },\n VpcOptions = new Aws.ElasticSearch.Inputs.DomainVpcOptionsArgs\n {\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n },\n });\n\n var firehose_elasticsearch = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"es:*\",\n },\n Resources = new[]\n {\n testCluster.Arn,\n $\"{testCluster.Arn}/*\",\n },\n },\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\",\n },\n Resources = new[]\n {\n \"*\",\n },\n },\n },\n });\n\n var firehose_elasticsearchRolePolicy = new Aws.Iam.RolePolicy(\"firehose-elasticsearch\", new()\n {\n Name = \"elasticsearch\",\n Role = firehose.Id,\n Policy = firehose_elasticsearch.Apply(firehose_elasticsearch =\u003e firehose_elasticsearch.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json)),\n });\n\n var test = new Aws.Kinesis.FirehoseDeliveryStream(\"test\", new()\n {\n Name = \"kinesis-firehose-es\",\n Destination = \"elasticsearch\",\n ElasticsearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehose.Arn,\n IndexName = \"test\",\n TypeName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n },\n VpcConfig = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs\n {\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n RoleArn = firehose.Arn,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firehose_elasticsearchRolePolicy,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := elasticsearch.NewDomain(ctx, \"test_cluster\", \u0026elasticsearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"es-test\"),\n\t\t\tClusterConfig: \u0026elasticsearch.DomainClusterConfigArgs{\n\t\t\t\tInstanceCount: pulumi.Int(2),\n\t\t\t\tZoneAwarenessEnabled: pulumi.Bool(true),\n\t\t\t\tInstanceType: pulumi.String(\"t2.small.elasticsearch\"),\n\t\t\t},\n\t\t\tEbsOptions: \u0026elasticsearch.DomainEbsOptionsArgs{\n\t\t\t\tEbsEnabled: pulumi.Bool(true),\n\t\t\t\tVolumeSize: pulumi.Int(10),\n\t\t\t},\n\t\t\tVpcOptions: \u0026elasticsearch.DomainVpcOptionsArgs{\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tfirst.Id,\n\t\t\t\t},\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\tsecond.Id,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirehose_elasticsearch := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{\n\t\t\tStatements: iam.GetPolicyDocumentStatementArray{\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"es:*\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\ttestCluster.Arn,\n\t\t\t\t\t\ttestCluster.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"%v/*\", arn), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeVpcs\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeVpcAttribute\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeSubnets\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeSecurityGroups\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeNetworkInterfaces\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:CreateNetworkInterface\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:CreateNetworkInterfacePermission\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DeleteNetworkInterface\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tfirehose_elasticsearchRolePolicy, err := iam.NewRolePolicy(ctx, \"firehose-elasticsearch\", \u0026iam.RolePolicyArgs{\n\t\t\tName: pulumi.String(\"elasticsearch\"),\n\t\t\tRole: pulumi.Any(firehose.Id),\n\t\t\tPolicy: pulumi.String(firehose_elasticsearch.ApplyT(func(firehose_elasticsearch iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026firehose_elasticsearch.Json, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-es\"),\n\t\t\tDestination: pulumi.String(\"elasticsearch\"),\n\t\t\tElasticsearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tTypeName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t},\n\t\t\t\tVpcConfig: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs{\n\t\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\t\tsecond.Id,\n\t\t\t\t\t},\n\t\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\t\tfirst.Id,\n\t\t\t\t\t},\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirehose_elasticsearchRolePolicy,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainClusterConfigArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainEbsOptionsArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainVpcOptionsArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"es-test\")\n .clusterConfig(DomainClusterConfigArgs.builder()\n .instanceCount(2)\n .zoneAwarenessEnabled(true)\n .instanceType(\"t2.small.elasticsearch\")\n .build())\n .ebsOptions(DomainEbsOptionsArgs.builder()\n .ebsEnabled(true)\n .volumeSize(10)\n .build())\n .vpcOptions(DomainVpcOptionsArgs.builder()\n .securityGroupIds(first.id())\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .build())\n .build());\n\n final var firehose-elasticsearch = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements( \n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"es:*\")\n .resources( \n testCluster.arn(),\n testCluster.arn().applyValue(_arn -\u003e String.format(\"%s/*\", _arn)))\n .build(),\n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions( \n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\")\n .resources(\"*\")\n .build())\n .build());\n\n var firehose_elasticsearchRolePolicy = new RolePolicy(\"firehose-elasticsearchRolePolicy\", RolePolicyArgs.builder()\n .name(\"elasticsearch\")\n .role(firehose.id())\n .policy(firehose_elasticsearch.applyValue(_firehose_elasticsearch -\u003e _firehose_elasticsearch.json()))\n .build());\n\n var test = new FirehoseDeliveryStream(\"test\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-es\")\n .destination(\"elasticsearch\")\n .elasticsearchConfiguration(FirehoseDeliveryStreamElasticsearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehose.arn())\n .indexName(\"test\")\n .typeName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .build())\n .vpcConfig(FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs.builder()\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .securityGroupIds(first.id())\n .roleArn(firehose.arn())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firehose_elasticsearchRolePolicy)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:elasticsearch:Domain\n name: test_cluster\n properties:\n domainName: es-test\n clusterConfig:\n instanceCount: 2\n zoneAwarenessEnabled: true\n instanceType: t2.small.elasticsearch\n ebsOptions:\n ebsEnabled: true\n volumeSize: 10\n vpcOptions:\n securityGroupIds:\n - ${first.id}\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n firehose-elasticsearchRolePolicy:\n type: aws:iam:RolePolicy\n name: firehose-elasticsearch\n properties:\n name: elasticsearch\n role: ${firehose.id}\n policy: ${[\"firehose-elasticsearch\"].json}\n test:\n type: aws:kinesis:FirehoseDeliveryStream\n properties:\n name: kinesis-firehose-es\n destination: elasticsearch\n elasticsearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehose.arn}\n indexName: test\n typeName: test\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n vpcConfig:\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n securityGroupIds:\n - ${first.id}\n roleArn: ${firehose.arn}\n options:\n dependsOn:\n - ${[\"firehose-elasticsearchRolePolicy\"]}\nvariables:\n firehose-elasticsearch:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n actions:\n - es:*\n resources:\n - ${testCluster.arn}\n - ${testCluster.arn}/*\n - effect: Allow\n actions:\n - ec2:DescribeVpcs\n - ec2:DescribeVpcAttribute\n - ec2:DescribeSubnets\n - ec2:DescribeSecurityGroups\n - ec2:DescribeNetworkInterfaces\n - ec2:CreateNetworkInterface\n - ec2:CreateNetworkInterfacePermission\n - ec2:DeleteNetworkInterface\n resources:\n - '*'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.opensearch.Domain(\"test_cluster\", {domainName: \"firehose-os-test\"});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"opensearch\",\n opensearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehoseRole.arn,\n indexName: \"test\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.opensearch.Domain(\"test_cluster\", domain_name=\"firehose-os-test\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"opensearch\",\n opensearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose_role[\"arn\"],\n \"index_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.OpenSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"firehose-os-test\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"opensearch\",\n OpensearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehoseRole.Arn,\n IndexName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/opensearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := opensearch.NewDomain(ctx, \"test_cluster\", \u0026opensearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"firehose-os-test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"opensearch\"),\n\t\t\tOpensearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.opensearch.Domain;\nimport com.pulumi.aws.opensearch.DomainArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"firehose-os-test\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"opensearch\")\n .opensearchConfiguration(FirehoseDeliveryStreamOpensearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehoseRole.arn())\n .indexName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .processingConfiguration(FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs.builder()\n .enabled(true)\n .processors(FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:opensearch:Domain\n name: test_cluster\n properties:\n domainName: firehose-os-test\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: opensearch\n opensearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehoseRole.arn}\n indexName: test\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch Destination With VPC\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.opensearch.Domain(\"test_cluster\", {\n domainName: \"es-test\",\n clusterConfig: {\n instanceCount: 2,\n zoneAwarenessEnabled: true,\n instanceType: \"m4.large.search\",\n },\n ebsOptions: {\n ebsEnabled: true,\n volumeSize: 10,\n },\n vpcOptions: {\n securityGroupIds: [first.id],\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n },\n});\nconst firehose_opensearch = new aws.iam.RolePolicy(\"firehose-opensearch\", {\n name: \"opensearch\",\n role: firehose.id,\n policy: pulumi.interpolate`{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"${testCluster.arn}\",\n \"${testCluster.arn}/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n}\n`,\n});\nconst test = new aws.kinesis.FirehoseDeliveryStream(\"test\", {\n name: \"pulumi-kinesis-firehose-os\",\n destination: \"opensearch\",\n opensearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehose.arn,\n indexName: \"test\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n },\n vpcConfig: {\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n securityGroupIds: [first.id],\n roleArn: firehose.arn,\n },\n },\n}, {\n dependsOn: [firehose_opensearch],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.opensearch.Domain(\"test_cluster\",\n domain_name=\"es-test\",\n cluster_config={\n \"instance_count\": 2,\n \"zone_awareness_enabled\": True,\n \"instance_type\": \"m4.large.search\",\n },\n ebs_options={\n \"ebs_enabled\": True,\n \"volume_size\": 10,\n },\n vpc_options={\n \"security_group_ids\": [first[\"id\"]],\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n })\nfirehose_opensearch = aws.iam.RolePolicy(\"firehose-opensearch\",\n name=\"opensearch\",\n role=firehose[\"id\"],\n policy=pulumi.Output.all(\n testClusterArn=test_cluster.arn,\n testClusterArn1=test_cluster.arn\n).apply(lambda resolved_outputs: f\"\"\"{{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {{\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"{resolved_outputs['testClusterArn']}\",\n \"{resolved_outputs['testClusterArn1']}/*\"\n ]\n }},\n {{\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }}\n ]\n}}\n\"\"\")\n)\ntest = aws.kinesis.FirehoseDeliveryStream(\"test\",\n name=\"pulumi-kinesis-firehose-os\",\n destination=\"opensearch\",\n opensearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose[\"arn\"],\n \"index_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n },\n \"vpc_config\": {\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n \"security_group_ids\": [first[\"id\"]],\n \"role_arn\": firehose[\"arn\"],\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[firehose_opensearch]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.OpenSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"es-test\",\n ClusterConfig = new Aws.OpenSearch.Inputs.DomainClusterConfigArgs\n {\n InstanceCount = 2,\n ZoneAwarenessEnabled = true,\n InstanceType = \"m4.large.search\",\n },\n EbsOptions = new Aws.OpenSearch.Inputs.DomainEbsOptionsArgs\n {\n EbsEnabled = true,\n VolumeSize = 10,\n },\n VpcOptions = new Aws.OpenSearch.Inputs.DomainVpcOptionsArgs\n {\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n },\n });\n\n var firehose_opensearch = new Aws.Iam.RolePolicy(\"firehose-opensearch\", new()\n {\n Name = \"opensearch\",\n Role = firehose.Id,\n Policy = Output.Tuple(testCluster.Arn, testCluster.Arn).Apply(values =\u003e\n {\n var testClusterArn = values.Item1;\n var testClusterArn1 = values.Item2;\n return @$\"{{\n \"\"Version\"\": \"\"2012-10-17\"\",\n \"\"Statement\"\": [\n {{\n \"\"Effect\"\": \"\"Allow\"\",\n \"\"Action\"\": [\n \"\"es:*\"\"\n ],\n \"\"Resource\"\": [\n \"\"{testClusterArn}\"\",\n \"\"{testClusterArn1}/*\"\"\n ]\n }},\n {{\n \"\"Effect\"\": \"\"Allow\"\",\n \"\"Action\"\": [\n \"\"ec2:DescribeVpcs\"\",\n \"\"ec2:DescribeVpcAttribute\"\",\n \"\"ec2:DescribeSubnets\"\",\n \"\"ec2:DescribeSecurityGroups\"\",\n \"\"ec2:DescribeNetworkInterfaces\"\",\n \"\"ec2:CreateNetworkInterface\"\",\n \"\"ec2:CreateNetworkInterfacePermission\"\",\n \"\"ec2:DeleteNetworkInterface\"\"\n ],\n \"\"Resource\"\": [\n \"\"*\"\"\n ]\n }}\n ]\n}}\n\";\n }),\n });\n\n var test = new Aws.Kinesis.FirehoseDeliveryStream(\"test\", new()\n {\n Name = \"pulumi-kinesis-firehose-os\",\n Destination = \"opensearch\",\n OpensearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehose.Arn,\n IndexName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n },\n VpcConfig = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs\n {\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n RoleArn = firehose.Arn,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firehose_opensearch,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/opensearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := opensearch.NewDomain(ctx, \"test_cluster\", \u0026opensearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"es-test\"),\n\t\t\tClusterConfig: \u0026opensearch.DomainClusterConfigArgs{\n\t\t\t\tInstanceCount: pulumi.Int(2),\n\t\t\t\tZoneAwarenessEnabled: pulumi.Bool(true),\n\t\t\t\tInstanceType: pulumi.String(\"m4.large.search\"),\n\t\t\t},\n\t\t\tEbsOptions: \u0026opensearch.DomainEbsOptionsArgs{\n\t\t\t\tEbsEnabled: pulumi.Bool(true),\n\t\t\t\tVolumeSize: pulumi.Int(10),\n\t\t\t},\n\t\t\tVpcOptions: \u0026opensearch.DomainVpcOptionsArgs{\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tfirst.Id,\n\t\t\t\t},\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\tsecond.Id,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirehose_opensearch, err := iam.NewRolePolicy(ctx, \"firehose-opensearch\", \u0026iam.RolePolicyArgs{\n\t\t\tName: pulumi.String(\"opensearch\"),\n\t\t\tRole: pulumi.Any(firehose.Id),\n\t\t\tPolicy: pulumi.All(testCluster.Arn, testCluster.Arn).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\ttestClusterArn := _args[0].(string)\n\t\t\t\ttestClusterArn1 := _args[1].(string)\n\t\t\t\treturn fmt.Sprintf(`{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"%v\",\n \"%v/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n}\n`, testClusterArn, testClusterArn1), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"pulumi-kinesis-firehose-os\"),\n\t\t\tDestination: pulumi.String(\"opensearch\"),\n\t\t\tOpensearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t},\n\t\t\t\tVpcConfig: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs{\n\t\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\t\tsecond.Id,\n\t\t\t\t\t},\n\t\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\t\tfirst.Id,\n\t\t\t\t\t},\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirehose_opensearch,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.opensearch.Domain;\nimport com.pulumi.aws.opensearch.DomainArgs;\nimport com.pulumi.aws.opensearch.inputs.DomainClusterConfigArgs;\nimport com.pulumi.aws.opensearch.inputs.DomainEbsOptionsArgs;\nimport com.pulumi.aws.opensearch.inputs.DomainVpcOptionsArgs;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"es-test\")\n .clusterConfig(DomainClusterConfigArgs.builder()\n .instanceCount(2)\n .zoneAwarenessEnabled(true)\n .instanceType(\"m4.large.search\")\n .build())\n .ebsOptions(DomainEbsOptionsArgs.builder()\n .ebsEnabled(true)\n .volumeSize(10)\n .build())\n .vpcOptions(DomainVpcOptionsArgs.builder()\n .securityGroupIds(first.id())\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .build())\n .build());\n\n var firehose_opensearch = new RolePolicy(\"firehose-opensearch\", RolePolicyArgs.builder()\n .name(\"opensearch\")\n .role(firehose.id())\n .policy(Output.tuple(testCluster.arn(), testCluster.arn()).applyValue(values -\u003e {\n var testClusterArn = values.t1;\n var testClusterArn1 = values.t2;\n return \"\"\"\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"%s\",\n \"%s/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n}\n\", testClusterArn,testClusterArn1);\n }))\n .build());\n\n var test = new FirehoseDeliveryStream(\"test\", FirehoseDeliveryStreamArgs.builder()\n .name(\"pulumi-kinesis-firehose-os\")\n .destination(\"opensearch\")\n .opensearchConfiguration(FirehoseDeliveryStreamOpensearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehose.arn())\n .indexName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .build())\n .vpcConfig(FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs.builder()\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .securityGroupIds(first.id())\n .roleArn(firehose.arn())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firehose_opensearch)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:opensearch:Domain\n name: test_cluster\n properties:\n domainName: es-test\n clusterConfig:\n instanceCount: 2\n zoneAwarenessEnabled: true\n instanceType: m4.large.search\n ebsOptions:\n ebsEnabled: true\n volumeSize: 10\n vpcOptions:\n securityGroupIds:\n - ${first.id}\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n firehose-opensearch:\n type: aws:iam:RolePolicy\n properties:\n name: opensearch\n role: ${firehose.id}\n policy: |\n {\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"${testCluster.arn}\",\n \"${testCluster.arn}/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n }\n test:\n type: aws:kinesis:FirehoseDeliveryStream\n properties:\n name: pulumi-kinesis-firehose-os\n destination: opensearch\n opensearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehose.arn}\n indexName: test\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n vpcConfig:\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n securityGroupIds:\n - ${first.id}\n roleArn: ${firehose.arn}\n options:\n dependsOn:\n - ${[\"firehose-opensearch\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch Serverless Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCollection = new aws.opensearch.ServerlessCollection(\"test_collection\", {name: \"firehose-osserverless-test\"});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"opensearchserverless\",\n opensearchserverlessConfiguration: {\n collectionEndpoint: testCollection.collectionEndpoint,\n roleArn: firehoseRole.arn,\n indexName: \"test\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_collection = aws.opensearch.ServerlessCollection(\"test_collection\", name=\"firehose-osserverless-test\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"opensearchserverless\",\n opensearchserverless_configuration={\n \"collection_endpoint\": test_collection.collection_endpoint,\n \"role_arn\": firehose_role[\"arn\"],\n \"index_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCollection = new Aws.OpenSearch.ServerlessCollection(\"test_collection\", new()\n {\n Name = \"firehose-osserverless-test\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"opensearchserverless\",\n OpensearchserverlessConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs\n {\n CollectionEndpoint = testCollection.CollectionEndpoint,\n RoleArn = firehoseRole.Arn,\n IndexName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/opensearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCollection, err := opensearch.NewServerlessCollection(ctx, \"test_collection\", \u0026opensearch.ServerlessCollectionArgs{\n\t\t\tName: pulumi.String(\"firehose-osserverless-test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"opensearchserverless\"),\n\t\t\tOpensearchserverlessConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs{\n\t\t\t\tCollectionEndpoint: testCollection.CollectionEndpoint,\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.opensearch.ServerlessCollection;\nimport com.pulumi.aws.opensearch.ServerlessCollectionArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCollection = new ServerlessCollection(\"testCollection\", ServerlessCollectionArgs.builder()\n .name(\"firehose-osserverless-test\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"opensearchserverless\")\n .opensearchserverlessConfiguration(FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs.builder()\n .collectionEndpoint(testCollection.collectionEndpoint())\n .roleArn(firehoseRole.arn())\n .indexName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .processingConfiguration(FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs.builder()\n .enabled(true)\n .processors(FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCollection:\n type: aws:opensearch:ServerlessCollection\n name: test_collection\n properties:\n name: firehose-osserverless-test\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: opensearchserverless\n opensearchserverlessConfiguration:\n collectionEndpoint: ${testCollection.collectionEndpoint}\n roleArn: ${firehoseRole.arn}\n indexName: test\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Iceberg Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst current = aws.getCallerIdentity({});\nconst currentGetPartition = aws.getPartition({});\nconst currentGetRegion = aws.getRegion({});\nconst bucket = new aws.s3.Bucket(\"bucket\", {\n bucket: \"test-bucket\",\n forceDestroy: true,\n});\nconst test = new aws.glue.CatalogDatabase(\"test\", {name: \"test\"});\nconst testCatalogTable = new aws.glue.CatalogTable(\"test\", {\n name: \"test\",\n databaseName: test.name,\n parameters: {\n format: \"parquet\",\n },\n tableType: \"EXTERNAL_TABLE\",\n openTableFormatInput: {\n icebergInput: {\n metadataOperation: \"CREATE\",\n version: \"2\",\n },\n },\n storageDescriptor: {\n location: pulumi.interpolate`s3://${bucket.id}`,\n columns: [{\n name: \"my_column_1\",\n type: \"int\",\n }],\n },\n});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"iceberg\",\n icebergConfiguration: {\n roleArn: firehoseRole.arn,\n catalogArn: Promise.all([currentGetPartition, currentGetRegion, current]).then(([currentGetPartition, currentGetRegion, current]) =\u003e `arn:${currentGetPartition.partition}:glue:${currentGetRegion.region}:${current.accountId}:catalog`),\n bufferingSize: 10,\n bufferingInterval: 400,\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n },\n destinationTableConfigurations: [{\n databaseName: test.name,\n tableName: testCatalogTable.name,\n }],\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncurrent = aws.get_caller_identity()\ncurrent_get_partition = aws.get_partition()\ncurrent_get_region = aws.get_region()\nbucket = aws.s3.Bucket(\"bucket\",\n bucket=\"test-bucket\",\n force_destroy=True)\ntest = aws.glue.CatalogDatabase(\"test\", name=\"test\")\ntest_catalog_table = aws.glue.CatalogTable(\"test\",\n name=\"test\",\n database_name=test.name,\n parameters={\n \"format\": \"parquet\",\n },\n table_type=\"EXTERNAL_TABLE\",\n open_table_format_input={\n \"iceberg_input\": {\n \"metadata_operation\": \"CREATE\",\n \"version\": \"2\",\n },\n },\n storage_descriptor={\n \"location\": bucket.id.apply(lambda id: f\"s3://{id}\"),\n \"columns\": [{\n \"name\": \"my_column_1\",\n \"type\": \"int\",\n }],\n })\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"iceberg\",\n iceberg_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"catalog_arn\": f\"arn:{current_get_partition.partition}:glue:{current_get_region.region}:{current.account_id}:catalog\",\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket.arn,\n },\n \"destination_table_configurations\": [{\n \"database_name\": test.name,\n \"table_name\": test_catalog_table.name,\n }],\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Aws.GetCallerIdentity.Invoke();\n\n var currentGetPartition = Aws.GetPartition.Invoke();\n\n var currentGetRegion = Aws.GetRegion.Invoke();\n\n var bucket = new Aws.S3.Bucket(\"bucket\", new()\n {\n BucketName = \"test-bucket\",\n ForceDestroy = true,\n });\n\n var test = new Aws.Glue.CatalogDatabase(\"test\", new()\n {\n Name = \"test\",\n });\n\n var testCatalogTable = new Aws.Glue.CatalogTable(\"test\", new()\n {\n Name = \"test\",\n DatabaseName = test.Name,\n Parameters = \n {\n { \"format\", \"parquet\" },\n },\n TableType = \"EXTERNAL_TABLE\",\n OpenTableFormatInput = new Aws.Glue.Inputs.CatalogTableOpenTableFormatInputArgs\n {\n IcebergInput = new Aws.Glue.Inputs.CatalogTableOpenTableFormatInputIcebergInputArgs\n {\n MetadataOperation = \"CREATE\",\n Version = \"2\",\n },\n },\n StorageDescriptor = new Aws.Glue.Inputs.CatalogTableStorageDescriptorArgs\n {\n Location = bucket.Id.Apply(id =\u003e $\"s3://{id}\"),\n Columns = new[]\n {\n new Aws.Glue.Inputs.CatalogTableStorageDescriptorColumnArgs\n {\n Name = \"my_column_1\",\n Type = \"int\",\n },\n },\n },\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"iceberg\",\n IcebergConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n CatalogArn = Output.Tuple(currentGetPartition, currentGetRegion, current).Apply(values =\u003e\n {\n var currentGetPartition = values.Item1;\n var currentGetRegion = values.Item2;\n var current = values.Item3;\n return $\"arn:{currentGetPartition.Apply(getPartitionResult =\u003e getPartitionResult.Partition)}:glue:{currentGetRegion.Apply(getRegionResult =\u003e getRegionResult.Region)}:{current.Apply(getCallerIdentityResult =\u003e getCallerIdentityResult.AccountId)}:catalog\";\n }),\n BufferingSize = 10,\n BufferingInterval = 400,\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n },\n DestinationTableConfigurations = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArgs\n {\n DatabaseName = test.Name,\n TableName = testCatalogTable.Name,\n },\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/s3\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := aws.GetCallerIdentity(ctx, \u0026aws.GetCallerIdentityArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcurrentGetPartition, err := aws.GetPartition(ctx, \u0026aws.GetPartitionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcurrentGetRegion, err := aws.GetRegion(ctx, \u0026aws.GetRegionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := s3.NewBucket(ctx, \"bucket\", \u0026s3.BucketArgs{\n\t\t\tBucket: pulumi.String(\"test-bucket\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := glue.NewCatalogDatabase(ctx, \"test\", \u0026glue.CatalogDatabaseArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestCatalogTable, err := glue.NewCatalogTable(ctx, \"test\", \u0026glue.CatalogTableArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tDatabaseName: test.Name,\n\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\"format\": pulumi.String(\"parquet\"),\n\t\t\t},\n\t\t\tTableType: pulumi.String(\"EXTERNAL_TABLE\"),\n\t\t\tOpenTableFormatInput: \u0026glue.CatalogTableOpenTableFormatInputArgs{\n\t\t\t\tIcebergInput: \u0026glue.CatalogTableOpenTableFormatInputIcebergInputArgs{\n\t\t\t\t\tMetadataOperation: pulumi.String(\"CREATE\"),\n\t\t\t\t\tVersion: pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorageDescriptor: \u0026glue.CatalogTableStorageDescriptorArgs{\n\t\t\t\tLocation: bucket.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"s3://%v\", id), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tColumns: glue.CatalogTableStorageDescriptorColumnArray{\n\t\t\t\t\t\u0026glue.CatalogTableStorageDescriptorColumnArgs{\n\t\t\t\t\t\tName: pulumi.String(\"my_column_1\"),\n\t\t\t\t\t\tType: pulumi.String(\"int\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"iceberg\"),\n\t\t\tIcebergConfiguration: \u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tCatalogArn: pulumi.Sprintf(\"arn:%v:glue:%v:%v:catalog\", currentGetPartition.Partition, currentGetRegion.Region, current.AccountId),\n\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: bucket.Arn,\n\t\t\t\t},\n\t\t\t\tDestinationTableConfigurations: kinesis.FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArray{\n\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArgs{\n\t\t\t\t\t\tDatabaseName: test.Name,\n\t\t\t\t\t\tTableName: testCatalogTable.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.AwsFunctions;\nimport com.pulumi.aws.inputs.GetCallerIdentityArgs;\nimport com.pulumi.aws.inputs.GetPartitionArgs;\nimport com.pulumi.aws.inputs.GetRegionArgs;\nimport com.pulumi.aws.s3.Bucket;\nimport com.pulumi.aws.s3.BucketArgs;\nimport com.pulumi.aws.glue.CatalogDatabase;\nimport com.pulumi.aws.glue.CatalogDatabaseArgs;\nimport com.pulumi.aws.glue.CatalogTable;\nimport com.pulumi.aws.glue.CatalogTableArgs;\nimport com.pulumi.aws.glue.inputs.CatalogTableOpenTableFormatInputArgs;\nimport com.pulumi.aws.glue.inputs.CatalogTableOpenTableFormatInputIcebergInputArgs;\nimport com.pulumi.aws.glue.inputs.CatalogTableStorageDescriptorArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamIcebergConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()\n .build());\n\n final var currentGetPartition = AwsFunctions.getPartition(GetPartitionArgs.builder()\n .build());\n\n final var currentGetRegion = AwsFunctions.getRegion(GetRegionArgs.builder()\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .bucket(\"test-bucket\")\n .forceDestroy(true)\n .build());\n\n var test = new CatalogDatabase(\"test\", CatalogDatabaseArgs.builder()\n .name(\"test\")\n .build());\n\n var testCatalogTable = new CatalogTable(\"testCatalogTable\", CatalogTableArgs.builder()\n .name(\"test\")\n .databaseName(test.name())\n .parameters(Map.of(\"format\", \"parquet\"))\n .tableType(\"EXTERNAL_TABLE\")\n .openTableFormatInput(CatalogTableOpenTableFormatInputArgs.builder()\n .icebergInput(CatalogTableOpenTableFormatInputIcebergInputArgs.builder()\n .metadataOperation(\"CREATE\")\n .version(\"2\")\n .build())\n .build())\n .storageDescriptor(CatalogTableStorageDescriptorArgs.builder()\n .location(bucket.id().applyValue(_id -\u003e String.format(\"s3://%s\", _id)))\n .columns(CatalogTableStorageDescriptorColumnArgs.builder()\n .name(\"my_column_1\")\n .type(\"int\")\n .build())\n .build())\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"iceberg\")\n .icebergConfiguration(FirehoseDeliveryStreamIcebergConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .catalogArn(String.format(\"arn:%s:glue:%s:%s:catalog\", currentGetPartition.partition(),currentGetRegion.region(),current.accountId()))\n .bufferingSize(10)\n .bufferingInterval(400)\n .s3Configuration(FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .build())\n .destinationTableConfigurations(FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArgs.builder()\n .databaseName(test.name())\n .tableName(testCatalogTable.name())\n .build())\n .processingConfiguration(FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs.builder()\n .enabled(true)\n .processors(FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: aws:s3:Bucket\n properties:\n bucket: test-bucket\n forceDestroy: true\n test:\n type: aws:glue:CatalogDatabase\n properties:\n name: test\n testCatalogTable:\n type: aws:glue:CatalogTable\n name: test\n properties:\n name: test\n databaseName: ${test.name}\n parameters:\n format: parquet\n tableType: EXTERNAL_TABLE\n openTableFormatInput:\n icebergInput:\n metadataOperation: CREATE\n version: 2\n storageDescriptor:\n location: s3://${bucket.id}\n columns:\n - name: my_column_1\n type: int\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: iceberg\n icebergConfiguration:\n roleArn: ${firehoseRole.arn}\n catalogArn: arn:${currentGetPartition.partition}:glue:${currentGetRegion.region}:${current.accountId}:catalog\n bufferingSize: 10\n bufferingInterval: 400\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n destinationTableConfigurations:\n - databaseName: ${test.name}\n tableName: ${testCatalogTable.name}\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\nvariables:\n current:\n fn::invoke:\n function: aws:getCallerIdentity\n arguments: {}\n currentGetPartition:\n fn::invoke:\n function: aws:getPartition\n arguments: {}\n currentGetRegion:\n fn::invoke:\n function: aws:getRegion\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Splunk Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"splunk\",\n splunkConfiguration: {\n hecEndpoint: \"https://http-inputs-mydomain.splunkcloud.com:443\",\n hecToken: \"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\",\n hecAcknowledgmentTimeout: 600,\n hecEndpointType: \"Event\",\n s3BackupMode: \"FailedEventsOnly\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"splunk\",\n splunk_configuration={\n \"hec_endpoint\": \"https://http-inputs-mydomain.splunkcloud.com:443\",\n \"hec_token\": \"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\",\n \"hec_acknowledgment_timeout\": 600,\n \"hec_endpoint_type\": \"Event\",\n \"s3_backup_mode\": \"FailedEventsOnly\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"splunk\",\n SplunkConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSplunkConfigurationArgs\n {\n HecEndpoint = \"https://http-inputs-mydomain.splunkcloud.com:443\",\n HecToken = \"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\",\n HecAcknowledgmentTimeout = 600,\n HecEndpointType = \"Event\",\n S3BackupMode = \"FailedEventsOnly\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"splunk\"),\n\t\t\tSplunkConfiguration: \u0026kinesis.FirehoseDeliveryStreamSplunkConfigurationArgs{\n\t\t\t\tHecEndpoint: pulumi.String(\"https://http-inputs-mydomain.splunkcloud.com:443\"),\n\t\t\t\tHecToken: pulumi.String(\"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\"),\n\t\t\t\tHecAcknowledgmentTimeout: pulumi.Int(600),\n\t\t\t\tHecEndpointType: pulumi.String(\"Event\"),\n\t\t\t\tS3BackupMode: pulumi.String(\"FailedEventsOnly\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSplunkConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"splunk\")\n .splunkConfiguration(FirehoseDeliveryStreamSplunkConfigurationArgs.builder()\n .hecEndpoint(\"https://http-inputs-mydomain.splunkcloud.com:443\")\n .hecToken(\"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\")\n .hecAcknowledgmentTimeout(600)\n .hecEndpointType(\"Event\")\n .s3BackupMode(\"FailedEventsOnly\")\n .s3Configuration(FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: splunk\n splunkConfiguration:\n hecEndpoint: https://http-inputs-mydomain.splunkcloud.com:443\n hecToken: 51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\n hecAcknowledgmentTimeout: 600\n hecEndpointType: Event\n s3BackupMode: FailedEventsOnly\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### HTTP Endpoint (e.g., New Relic) Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"http_endpoint\",\n httpEndpointConfiguration: {\n url: \"https://aws-api.newrelic.com/firehose/v1\",\n name: \"New Relic\",\n accessKey: \"my-key\",\n bufferingSize: 15,\n bufferingInterval: 600,\n roleArn: firehose.arn,\n s3BackupMode: \"FailedDataOnly\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n requestConfiguration: {\n contentEncoding: \"GZIP\",\n commonAttributes: [\n {\n name: \"testname\",\n value: \"testvalue\",\n },\n {\n name: \"testname2\",\n value: \"testvalue2\",\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"http_endpoint\",\n http_endpoint_configuration={\n \"url\": \"https://aws-api.newrelic.com/firehose/v1\",\n \"name\": \"New Relic\",\n \"access_key\": \"my-key\",\n \"buffering_size\": 15,\n \"buffering_interval\": 600,\n \"role_arn\": firehose[\"arn\"],\n \"s3_backup_mode\": \"FailedDataOnly\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"request_configuration\": {\n \"content_encoding\": \"GZIP\",\n \"common_attributes\": [\n {\n \"name\": \"testname\",\n \"value\": \"testvalue\",\n },\n {\n \"name\": \"testname2\",\n \"value\": \"testvalue2\",\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"http_endpoint\",\n HttpEndpointConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationArgs\n {\n Url = \"https://aws-api.newrelic.com/firehose/v1\",\n Name = \"New Relic\",\n AccessKey = \"my-key\",\n BufferingSize = 15,\n BufferingInterval = 600,\n RoleArn = firehose.Arn,\n S3BackupMode = \"FailedDataOnly\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n RequestConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs\n {\n ContentEncoding = \"GZIP\",\n CommonAttributes = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs\n {\n Name = \"testname\",\n Value = \"testvalue\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs\n {\n Name = \"testname2\",\n Value = \"testvalue2\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"http_endpoint\"),\n\t\t\tHttpEndpointConfiguration: \u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationArgs{\n\t\t\t\tUrl: pulumi.String(\"https://aws-api.newrelic.com/firehose/v1\"),\n\t\t\t\tName: pulumi.String(\"New Relic\"),\n\t\t\t\tAccessKey: pulumi.String(\"my-key\"),\n\t\t\t\tBufferingSize: pulumi.Int(15),\n\t\t\t\tBufferingInterval: pulumi.Int(600),\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tS3BackupMode: pulumi.String(\"FailedDataOnly\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tRequestConfiguration: \u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs{\n\t\t\t\t\tContentEncoding: pulumi.String(\"GZIP\"),\n\t\t\t\t\tCommonAttributes: kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"testname\"),\n\t\t\t\t\t\t\tValue: pulumi.String(\"testvalue\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"testname2\"),\n\t\t\t\t\t\t\tValue: pulumi.String(\"testvalue2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamHttpEndpointConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"http_endpoint\")\n .httpEndpointConfiguration(FirehoseDeliveryStreamHttpEndpointConfigurationArgs.builder()\n .url(\"https://aws-api.newrelic.com/firehose/v1\")\n .name(\"New Relic\")\n .accessKey(\"my-key\")\n .bufferingSize(15)\n .bufferingInterval(600)\n .roleArn(firehose.arn())\n .s3BackupMode(\"FailedDataOnly\")\n .s3Configuration(FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .requestConfiguration(FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs.builder()\n .contentEncoding(\"GZIP\")\n .commonAttributes( \n FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs.builder()\n .name(\"testname\")\n .value(\"testvalue\")\n .build(),\n FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs.builder()\n .name(\"testname2\")\n .value(\"testvalue2\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: http_endpoint\n httpEndpointConfiguration:\n url: https://aws-api.newrelic.com/firehose/v1\n name: New Relic\n accessKey: my-key\n bufferingSize: 15\n bufferingInterval: 600\n roleArn: ${firehose.arn}\n s3BackupMode: FailedDataOnly\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n requestConfiguration:\n contentEncoding: GZIP\n commonAttributes:\n - name: testname\n value: testvalue\n - name: testname2\n value: testvalue2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Snowflake Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleSnowflakeDestination = new aws.kinesis.FirehoseDeliveryStream(\"example_snowflake_destination\", {\n name: \"example-snowflake-destination\",\n destination: \"snowflake\",\n snowflakeConfiguration: {\n accountUrl: \"https://example.snowflakecomputing.com\",\n bufferingSize: 15,\n bufferingInterval: 600,\n database: \"example-db\",\n privateKey: \"...\",\n roleArn: firehose.arn,\n schema: \"example-schema\",\n table: \"example-table\",\n user: \"example-usr\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_snowflake_destination = aws.kinesis.FirehoseDeliveryStream(\"example_snowflake_destination\",\n name=\"example-snowflake-destination\",\n destination=\"snowflake\",\n snowflake_configuration={\n \"account_url\": \"https://example.snowflakecomputing.com\",\n \"buffering_size\": 15,\n \"buffering_interval\": 600,\n \"database\": \"example-db\",\n \"private_key\": \"...\",\n \"role_arn\": firehose[\"arn\"],\n \"schema\": \"example-schema\",\n \"table\": \"example-table\",\n \"user\": \"example-usr\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleSnowflakeDestination = new Aws.Kinesis.FirehoseDeliveryStream(\"example_snowflake_destination\", new()\n {\n Name = \"example-snowflake-destination\",\n Destination = \"snowflake\",\n SnowflakeConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSnowflakeConfigurationArgs\n {\n AccountUrl = \"https://example.snowflakecomputing.com\",\n BufferingSize = 15,\n BufferingInterval = 600,\n Database = \"example-db\",\n PrivateKey = \"...\",\n RoleArn = firehose.Arn,\n Schema = \"example-schema\",\n Table = \"example-table\",\n User = \"example-usr\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"example_snowflake_destination\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"example-snowflake-destination\"),\n\t\t\tDestination: pulumi.String(\"snowflake\"),\n\t\t\tSnowflakeConfiguration: \u0026kinesis.FirehoseDeliveryStreamSnowflakeConfigurationArgs{\n\t\t\t\tAccountUrl: pulumi.String(\"https://example.snowflakecomputing.com\"),\n\t\t\t\tBufferingSize: pulumi.Int(15),\n\t\t\t\tBufferingInterval: pulumi.Int(600),\n\t\t\t\tDatabase: pulumi.String(\"example-db\"),\n\t\t\t\tPrivateKey: pulumi.String(\"...\"),\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tSchema: pulumi.String(\"example-schema\"),\n\t\t\t\tTable: pulumi.String(\"example-table\"),\n\t\t\t\tUser: pulumi.String(\"example-usr\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSnowflakeConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleSnowflakeDestination = new FirehoseDeliveryStream(\"exampleSnowflakeDestination\", FirehoseDeliveryStreamArgs.builder()\n .name(\"example-snowflake-destination\")\n .destination(\"snowflake\")\n .snowflakeConfiguration(FirehoseDeliveryStreamSnowflakeConfigurationArgs.builder()\n .accountUrl(\"https://example.snowflakecomputing.com\")\n .bufferingSize(15)\n .bufferingInterval(600)\n .database(\"example-db\")\n .privateKey(\"...\")\n .roleArn(firehose.arn())\n .schema(\"example-schema\")\n .table(\"example-table\")\n .user(\"example-usr\")\n .s3Configuration(FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleSnowflakeDestination:\n type: aws:kinesis:FirehoseDeliveryStream\n name: example_snowflake_destination\n properties:\n name: example-snowflake-destination\n destination: snowflake\n snowflakeConfiguration:\n accountUrl: https://example.snowflakecomputing.com\n bufferingSize: 15\n bufferingInterval: 600\n database: example-db\n privateKey: '...'\n roleArn: ${firehose.arn}\n schema: example-schema\n table: example-table\n user: example-usr\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Kinesis Firehose Delivery streams using the stream ARN. For example:\n\n```sh\n$ pulumi import aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream foo arn:aws:firehose:us-east-1:XXX:deliverystream/example\n```\nNote: Import does not work for stream destination `s3`. Consider using `extended_s3` since `s3` destination is deprecated.\n\n", + "description": "Provides a Kinesis Firehose Delivery Stream resource. Amazon Kinesis Firehose is a fully managed, elastic service to easily deliver real-time data streams to destinations such as Amazon S3 , Amazon Redshift and Snowflake.\n\nFor more details, see the [Amazon Kinesis Firehose Documentation](https://aws.amazon.com/documentation/firehose/).\n\n## Example Usage\n\n### Extended S3 Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst bucket = new aws.s3.Bucket(\"bucket\", {bucket: \"tf-test-bucket\"});\nconst firehoseAssumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"firehose.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst firehoseRole = new aws.iam.Role(\"firehose_role\", {\n name: \"firehose_test_role\",\n assumeRolePolicy: firehoseAssumeRole.then(firehoseAssumeRole =\u003e firehoseAssumeRole.json),\n});\nconst lambdaAssumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"lambda.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst lambdaIam = new aws.iam.Role(\"lambda_iam\", {\n name: \"lambda_iam\",\n assumeRolePolicy: lambdaAssumeRole.then(lambdaAssumeRole =\u003e lambdaAssumeRole.json),\n});\nconst lambdaProcessor = new aws.lambda.Function(\"lambda_processor\", {\n code: new pulumi.asset.FileArchive(\"lambda.zip\"),\n name: \"firehose_lambda_processor\",\n role: lambdaIam.arn,\n handler: \"exports.handler\",\n runtime: aws.lambda.Runtime.NodeJS20dX,\n});\nconst extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", {\n name: \"kinesis-firehose-extended-s3-test-stream\",\n destination: \"extended_s3\",\n extendedS3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: pulumi.interpolate`${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\nconst bucketAcl = new aws.s3.BucketAcl(\"bucket_acl\", {\n bucket: bucket.id,\n acl: \"private\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nbucket = aws.s3.Bucket(\"bucket\", bucket=\"tf-test-bucket\")\nfirehose_assume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"firehose.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nfirehose_role = aws.iam.Role(\"firehose_role\",\n name=\"firehose_test_role\",\n assume_role_policy=firehose_assume_role.json)\nlambda_assume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"lambda.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nlambda_iam = aws.iam.Role(\"lambda_iam\",\n name=\"lambda_iam\",\n assume_role_policy=lambda_assume_role.json)\nlambda_processor = aws.lambda_.Function(\"lambda_processor\",\n code=pulumi.FileArchive(\"lambda.zip\"),\n name=\"firehose_lambda_processor\",\n role=lambda_iam.arn,\n handler=\"exports.handler\",\n runtime=aws.lambda_.Runtime.NODE_JS20D_X)\nextended_s3_stream = aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\",\n name=\"kinesis-firehose-extended-s3-test-stream\",\n destination=\"extended_s3\",\n extended_s3_configuration={\n \"role_arn\": firehose_role.arn,\n \"bucket_arn\": bucket.arn,\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": lambda_processor.arn.apply(lambda arn: f\"{arn}:$LATEST\"),\n }],\n }],\n },\n })\nbucket_acl = aws.s3.BucketAcl(\"bucket_acl\",\n bucket=bucket.id,\n acl=\"private\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Aws.S3.Bucket(\"bucket\", new()\n {\n BucketName = \"tf-test-bucket\",\n });\n\n var firehoseAssumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"firehose.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var firehoseRole = new Aws.Iam.Role(\"firehose_role\", new()\n {\n Name = \"firehose_test_role\",\n AssumeRolePolicy = firehoseAssumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var lambdaAssumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"lambda.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var lambdaIam = new Aws.Iam.Role(\"lambda_iam\", new()\n {\n Name = \"lambda_iam\",\n AssumeRolePolicy = lambdaAssumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var lambdaProcessor = new Aws.Lambda.Function(\"lambda_processor\", new()\n {\n Code = new FileArchive(\"lambda.zip\"),\n Name = \"firehose_lambda_processor\",\n Role = lambdaIam.Arn,\n Handler = \"exports.handler\",\n Runtime = Aws.Lambda.Runtime.NodeJS20dX,\n });\n\n var extendedS3Stream = new Aws.Kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", new()\n {\n Name = \"kinesis-firehose-extended-s3-test-stream\",\n Destination = \"extended_s3\",\n ExtendedS3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = lambdaProcessor.Arn.Apply(arn =\u003e $\"{arn}:$LATEST\"),\n },\n },\n },\n },\n },\n },\n });\n\n var bucketAcl = new Aws.S3.BucketAcl(\"bucket_acl\", new()\n {\n Bucket = bucket.Id,\n Acl = \"private\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/s3\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := s3.NewBucket(ctx, \"bucket\", \u0026s3.BucketArgs{\n\t\t\tBucket: pulumi.String(\"tf-test-bucket\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirehoseAssumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"firehose.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirehoseRole, err := iam.NewRole(ctx, \"firehose_role\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"firehose_test_role\"),\n\t\t\tAssumeRolePolicy: pulumi.String(firehoseAssumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlambdaAssumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"lambda.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlambdaIam, err := iam.NewRole(ctx, \"lambda_iam\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"lambda_iam\"),\n\t\t\tAssumeRolePolicy: pulumi.String(lambdaAssumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlambdaProcessor, err := lambda.NewFunction(ctx, \"lambda_processor\", \u0026lambda.FunctionArgs{\n\t\t\tCode: pulumi.NewFileArchive(\"lambda.zip\"),\n\t\t\tName: pulumi.String(\"firehose_lambda_processor\"),\n\t\t\tRole: lambdaIam.Arn,\n\t\t\tHandler: pulumi.String(\"exports.handler\"),\n\t\t\tRuntime: pulumi.String(lambda.RuntimeNodeJS20dX),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"extended_s3_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-extended-s3-test-stream\"),\n\t\t\tDestination: pulumi.String(\"extended_s3\"),\n\t\t\tExtendedS3Configuration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{\n\t\t\t\tRoleArn: firehoseRole.Arn,\n\t\t\t\tBucketArn: bucket.Arn,\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: lambdaProcessor.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\t\t\t\t\t\t\treturn fmt.Sprintf(\"%v:$LATEST\", arn), nil\n\t\t\t\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = s3.NewBucketAcl(ctx, \"bucket_acl\", \u0026s3.BucketAclArgs{\n\t\t\tBucket: bucket.ID(),\n\t\t\tAcl: pulumi.String(\"private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.s3.Bucket;\nimport com.pulumi.aws.s3.BucketArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.lambda.Function;\nimport com.pulumi.aws.lambda.FunctionArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs;\nimport com.pulumi.aws.s3.BucketAcl;\nimport com.pulumi.aws.s3.BucketAclArgs;\nimport com.pulumi.asset.FileArchive;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .bucket(\"tf-test-bucket\")\n .build());\n\n final var firehoseAssumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"firehose.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var firehoseRole = new Role(\"firehoseRole\", RoleArgs.builder()\n .name(\"firehose_test_role\")\n .assumeRolePolicy(firehoseAssumeRole.json())\n .build());\n\n final var lambdaAssumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"lambda.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var lambdaIam = new Role(\"lambdaIam\", RoleArgs.builder()\n .name(\"lambda_iam\")\n .assumeRolePolicy(lambdaAssumeRole.json())\n .build());\n\n var lambdaProcessor = new Function(\"lambdaProcessor\", FunctionArgs.builder()\n .code(new FileArchive(\"lambda.zip\"))\n .name(\"firehose_lambda_processor\")\n .role(lambdaIam.arn())\n .handler(\"exports.handler\")\n .runtime(\"nodejs20.x\")\n .build());\n\n var extendedS3Stream = new FirehoseDeliveryStream(\"extendedS3Stream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-extended-s3-test-stream\")\n .destination(\"extended_s3\")\n .extendedS3Configuration(FirehoseDeliveryStreamExtendedS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .processingConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs.builder()\n .enabled(true)\n .processors(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(lambdaProcessor.arn().applyValue(_arn -\u003e String.format(\"%s:$LATEST\", _arn)))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var bucketAcl = new BucketAcl(\"bucketAcl\", BucketAclArgs.builder()\n .bucket(bucket.id())\n .acl(\"private\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedS3Stream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: extended_s3_stream\n properties:\n name: kinesis-firehose-extended-s3-test-stream\n destination: extended_s3\n extendedS3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n bucket:\n type: aws:s3:Bucket\n properties:\n bucket: tf-test-bucket\n bucketAcl:\n type: aws:s3:BucketAcl\n name: bucket_acl\n properties:\n bucket: ${bucket.id}\n acl: private\n firehoseRole:\n type: aws:iam:Role\n name: firehose_role\n properties:\n name: firehose_test_role\n assumeRolePolicy: ${firehoseAssumeRole.json}\n lambdaIam:\n type: aws:iam:Role\n name: lambda_iam\n properties:\n name: lambda_iam\n assumeRolePolicy: ${lambdaAssumeRole.json}\n lambdaProcessor:\n type: aws:lambda:Function\n name: lambda_processor\n properties:\n code:\n fn::FileArchive: lambda.zip\n name: firehose_lambda_processor\n role: ${lambdaIam.arn}\n handler: exports.handler\n runtime: nodejs20.x\nvariables:\n firehoseAssumeRole:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - firehose.amazonaws.com\n actions:\n - sts:AssumeRole\n lambdaAssumeRole:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - lambda.amazonaws.com\n actions:\n - sts:AssumeRole\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Extended S3 Destination with dynamic partitioning\n\nThese examples use built-in Firehose functionality, rather than requiring a lambda.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", {\n name: \"kinesis-firehose-extended-s3-test-stream\",\n destination: \"extended_s3\",\n extendedS3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 64,\n dynamicPartitioningConfiguration: {\n enabled: true,\n },\n prefix: \"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n errorOutputPrefix: \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n processingConfiguration: {\n enabled: true,\n processors: [\n {\n type: \"RecordDeAggregation\",\n parameters: [{\n parameterName: \"SubRecordType\",\n parameterValue: \"JSON\",\n }],\n },\n {\n type: \"AppendDelimiterToRecord\",\n },\n {\n type: \"MetadataExtraction\",\n parameters: [\n {\n parameterName: \"JsonParsingEngine\",\n parameterValue: \"JQ-1.6\",\n },\n {\n parameterName: \"MetadataExtractionQuery\",\n parameterValue: \"{customer_id:.customer_id}\",\n },\n ],\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nextended_s3_stream = aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\",\n name=\"kinesis-firehose-extended-s3-test-stream\",\n destination=\"extended_s3\",\n extended_s3_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 64,\n \"dynamic_partitioning_configuration\": {\n \"enabled\": True,\n },\n \"prefix\": \"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n \"error_output_prefix\": \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [\n {\n \"type\": \"RecordDeAggregation\",\n \"parameters\": [{\n \"parameter_name\": \"SubRecordType\",\n \"parameter_value\": \"JSON\",\n }],\n },\n {\n \"type\": \"AppendDelimiterToRecord\",\n },\n {\n \"type\": \"MetadataExtraction\",\n \"parameters\": [\n {\n \"parameter_name\": \"JsonParsingEngine\",\n \"parameter_value\": \"JQ-1.6\",\n },\n {\n \"parameter_name\": \"MetadataExtractionQuery\",\n \"parameter_value\": \"{customer_id:.customer_id}\",\n },\n ],\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var extendedS3Stream = new Aws.Kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", new()\n {\n Name = \"kinesis-firehose-extended-s3-test-stream\",\n Destination = \"extended_s3\",\n ExtendedS3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 64,\n DynamicPartitioningConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs\n {\n Enabled = true,\n },\n Prefix = \"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n ErrorOutputPrefix = \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"RecordDeAggregation\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"SubRecordType\",\n ParameterValue = \"JSON\",\n },\n },\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"AppendDelimiterToRecord\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"MetadataExtraction\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"JsonParsingEngine\",\n ParameterValue = \"JQ-1.6\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"MetadataExtractionQuery\",\n ParameterValue = \"{customer_id:.customer_id}\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"extended_s3_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-extended-s3-test-stream\"),\n\t\t\tDestination: pulumi.String(\"extended_s3\"),\n\t\t\tExtendedS3Configuration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\tBufferingSize: pulumi.Int(64),\n\t\t\t\tDynamicPartitioningConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tPrefix: pulumi.String(\"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\"),\n\t\t\t\tErrorOutputPrefix: pulumi.String(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\"),\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"RecordDeAggregation\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"SubRecordType\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"JSON\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"AppendDelimiterToRecord\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"MetadataExtraction\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"JsonParsingEngine\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"JQ-1.6\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"MetadataExtractionQuery\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"{customer_id:.customer_id}\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var extendedS3Stream = new FirehoseDeliveryStream(\"extendedS3Stream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-extended-s3-test-stream\")\n .destination(\"extended_s3\")\n .extendedS3Configuration(FirehoseDeliveryStreamExtendedS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(64)\n .dynamicPartitioningConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs.builder()\n .enabled(true)\n .build())\n .prefix(\"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\")\n .errorOutputPrefix(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\")\n .processingConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs.builder()\n .enabled(true)\n .processors( \n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"RecordDeAggregation\")\n .parameters(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"SubRecordType\")\n .parameterValue(\"JSON\")\n .build())\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"AppendDelimiterToRecord\")\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"MetadataExtraction\")\n .parameters( \n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"JsonParsingEngine\")\n .parameterValue(\"JQ-1.6\")\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"MetadataExtractionQuery\")\n .parameterValue(\"{customer_id:.customer_id}\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedS3Stream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: extended_s3_stream\n properties:\n name: kinesis-firehose-extended-s3-test-stream\n destination: extended_s3\n extendedS3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 64\n dynamicPartitioningConfiguration:\n enabled: 'true'\n prefix: data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\n errorOutputPrefix: errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: RecordDeAggregation\n parameters:\n - parameterName: SubRecordType\n parameterValue: JSON\n - type: AppendDelimiterToRecord\n - type: MetadataExtraction\n parameters:\n - parameterName: JsonParsingEngine\n parameterValue: JQ-1.6\n - parameterName: MetadataExtractionQuery\n parameterValue: '{customer_id:.customer_id}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nMultiple Dynamic Partitioning Keys (maximum of 50) can be added by comma separating the \u003cspan pulumi-lang-nodejs=\"`parameterValue`\" pulumi-lang-dotnet=\"`ParameterValue`\" pulumi-lang-go=\"`parameterValue`\" pulumi-lang-python=\"`parameter_value`\" pulumi-lang-yaml=\"`parameterValue`\" pulumi-lang-java=\"`parameterValue`\"\u003e`parameter_value`\u003c/span\u003e.\n\nThe following example adds the Dynamic Partitioning Keys: \u003cspan pulumi-lang-nodejs=\"`storeId`\" pulumi-lang-dotnet=\"`StoreId`\" pulumi-lang-go=\"`storeId`\" pulumi-lang-python=\"`store_id`\" pulumi-lang-yaml=\"`storeId`\" pulumi-lang-java=\"`storeId`\"\u003e`store_id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`customerId`\" pulumi-lang-dotnet=\"`CustomerId`\" pulumi-lang-go=\"`customerId`\" pulumi-lang-python=\"`customer_id`\" pulumi-lang-yaml=\"`customerId`\" pulumi-lang-java=\"`customerId`\"\u003e`customer_id`\u003c/span\u003e to the S3 prefix.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", {\n name: \"kinesis-firehose-extended-s3-test-stream\",\n destination: \"extended_s3\",\n extendedS3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 64,\n dynamicPartitioningConfiguration: {\n enabled: true,\n },\n prefix: \"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n errorOutputPrefix: \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"MetadataExtraction\",\n parameters: [\n {\n parameterName: \"JsonParsingEngine\",\n parameterValue: \"JQ-1.6\",\n },\n {\n parameterName: \"MetadataExtractionQuery\",\n parameterValue: \"{store_id:.store_id,customer_id:.customer_id}\",\n },\n ],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nextended_s3_stream = aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\",\n name=\"kinesis-firehose-extended-s3-test-stream\",\n destination=\"extended_s3\",\n extended_s3_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 64,\n \"dynamic_partitioning_configuration\": {\n \"enabled\": True,\n },\n \"prefix\": \"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n \"error_output_prefix\": \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"MetadataExtraction\",\n \"parameters\": [\n {\n \"parameter_name\": \"JsonParsingEngine\",\n \"parameter_value\": \"JQ-1.6\",\n },\n {\n \"parameter_name\": \"MetadataExtractionQuery\",\n \"parameter_value\": \"{store_id:.store_id,customer_id:.customer_id}\",\n },\n ],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var extendedS3Stream = new Aws.Kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", new()\n {\n Name = \"kinesis-firehose-extended-s3-test-stream\",\n Destination = \"extended_s3\",\n ExtendedS3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 64,\n DynamicPartitioningConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs\n {\n Enabled = true,\n },\n Prefix = \"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n ErrorOutputPrefix = \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"MetadataExtraction\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"JsonParsingEngine\",\n ParameterValue = \"JQ-1.6\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"MetadataExtractionQuery\",\n ParameterValue = \"{store_id:.store_id,customer_id:.customer_id}\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"extended_s3_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-extended-s3-test-stream\"),\n\t\t\tDestination: pulumi.String(\"extended_s3\"),\n\t\t\tExtendedS3Configuration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\tBufferingSize: pulumi.Int(64),\n\t\t\t\tDynamicPartitioningConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tPrefix: pulumi.String(\"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\"),\n\t\t\t\tErrorOutputPrefix: pulumi.String(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\"),\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"MetadataExtraction\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"JsonParsingEngine\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"JQ-1.6\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"MetadataExtractionQuery\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"{store_id:.store_id,customer_id:.customer_id}\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var extendedS3Stream = new FirehoseDeliveryStream(\"extendedS3Stream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-extended-s3-test-stream\")\n .destination(\"extended_s3\")\n .extendedS3Configuration(FirehoseDeliveryStreamExtendedS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(64)\n .dynamicPartitioningConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs.builder()\n .enabled(true)\n .build())\n .prefix(\"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\")\n .errorOutputPrefix(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\")\n .processingConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs.builder()\n .enabled(true)\n .processors(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"MetadataExtraction\")\n .parameters( \n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"JsonParsingEngine\")\n .parameterValue(\"JQ-1.6\")\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"MetadataExtractionQuery\")\n .parameterValue(\"{store_id:.store_id,customer_id:.customer_id}\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedS3Stream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: extended_s3_stream\n properties:\n name: kinesis-firehose-extended-s3-test-stream\n destination: extended_s3\n extendedS3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 64\n dynamicPartitioningConfiguration:\n enabled: 'true'\n prefix: data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\n errorOutputPrefix: errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: MetadataExtraction\n parameters:\n - parameterName: JsonParsingEngine\n parameterValue: JQ-1.6\n - parameterName: MetadataExtractionQuery\n parameterValue: '{store_id:.store_id,customer_id:.customer_id}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redshift Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.redshift.Cluster(\"test_cluster\", {\n clusterIdentifier: \"tf-redshift-cluster\",\n databaseName: \"test\",\n masterUsername: \"testuser\",\n masterPassword: \"T3stPass\",\n nodeType: \"dc1.large\",\n clusterType: \"single-node\",\n});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"redshift\",\n redshiftConfiguration: {\n roleArn: firehoseRole.arn,\n clusterJdbcurl: pulumi.interpolate`jdbc:redshift://${testCluster.endpoint}/${testCluster.databaseName}`,\n username: \"testuser\",\n password: \"T3stPass\",\n dataTableName: \"test-table\",\n copyOptions: \"delimiter '|'\",\n dataTableColumns: \"test-col\",\n s3BackupMode: \"Enabled\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n s3BackupConfiguration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 15,\n bufferingInterval: 300,\n compressionFormat: \"GZIP\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.redshift.Cluster(\"test_cluster\",\n cluster_identifier=\"tf-redshift-cluster\",\n database_name=\"test\",\n master_username=\"testuser\",\n master_password=\"T3stPass\",\n node_type=\"dc1.large\",\n cluster_type=\"single-node\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"redshift\",\n redshift_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"cluster_jdbcurl\": pulumi.Output.all(\n endpoint=test_cluster.endpoint,\n database_name=test_cluster.database_name\n).apply(lambda resolved_outputs: f\"jdbc:redshift://{resolved_outputs['endpoint']}/{resolved_outputs['database_name']}\")\n,\n \"username\": \"testuser\",\n \"password\": \"T3stPass\",\n \"data_table_name\": \"test-table\",\n \"copy_options\": \"delimiter '|'\",\n \"data_table_columns\": \"test-col\",\n \"s3_backup_mode\": \"Enabled\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"s3_backup_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 15,\n \"buffering_interval\": 300,\n \"compression_format\": \"GZIP\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.RedShift.Cluster(\"test_cluster\", new()\n {\n ClusterIdentifier = \"tf-redshift-cluster\",\n DatabaseName = \"test\",\n MasterUsername = \"testuser\",\n MasterPassword = \"T3stPass\",\n NodeType = \"dc1.large\",\n ClusterType = \"single-node\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"redshift\",\n RedshiftConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamRedshiftConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n ClusterJdbcurl = Output.Tuple(testCluster.Endpoint, testCluster.DatabaseName).Apply(values =\u003e\n {\n var endpoint = values.Item1;\n var databaseName = values.Item2;\n return $\"jdbc:redshift://{endpoint}/{databaseName}\";\n }),\n Username = \"testuser\",\n Password = \"T3stPass\",\n DataTableName = \"test-table\",\n CopyOptions = \"delimiter '|'\",\n DataTableColumns = \"test-col\",\n S3BackupMode = \"Enabled\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n S3BackupConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 15,\n BufferingInterval = 300,\n CompressionFormat = \"GZIP\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/redshift\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := redshift.NewCluster(ctx, \"test_cluster\", \u0026redshift.ClusterArgs{\n\t\t\tClusterIdentifier: pulumi.String(\"tf-redshift-cluster\"),\n\t\t\tDatabaseName: pulumi.String(\"test\"),\n\t\t\tMasterUsername: pulumi.String(\"testuser\"),\n\t\t\tMasterPassword: pulumi.String(\"T3stPass\"),\n\t\t\tNodeType: pulumi.String(\"dc1.large\"),\n\t\t\tClusterType: pulumi.String(\"single-node\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"redshift\"),\n\t\t\tRedshiftConfiguration: \u0026kinesis.FirehoseDeliveryStreamRedshiftConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tClusterJdbcurl: pulumi.All(testCluster.Endpoint, testCluster.DatabaseName).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tendpoint := _args[0].(string)\n\t\t\t\t\tdatabaseName := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"jdbc:redshift://%v/%v\", endpoint, databaseName), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tUsername: pulumi.String(\"testuser\"),\n\t\t\t\tPassword: pulumi.String(\"T3stPass\"),\n\t\t\t\tDataTableName: pulumi.String(\"test-table\"),\n\t\t\t\tCopyOptions: pulumi.String(\"delimiter '|'\"),\n\t\t\t\tDataTableColumns: pulumi.String(\"test-col\"),\n\t\t\t\tS3BackupMode: pulumi.String(\"Enabled\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tS3BackupConfiguration: \u0026kinesis.FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(15),\n\t\t\t\t\tBufferingInterval: pulumi.Int(300),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.redshift.Cluster;\nimport com.pulumi.aws.redshift.ClusterArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamRedshiftConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Cluster(\"testCluster\", ClusterArgs.builder()\n .clusterIdentifier(\"tf-redshift-cluster\")\n .databaseName(\"test\")\n .masterUsername(\"testuser\")\n .masterPassword(\"T3stPass\")\n .nodeType(\"dc1.large\")\n .clusterType(\"single-node\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"redshift\")\n .redshiftConfiguration(FirehoseDeliveryStreamRedshiftConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .clusterJdbcurl(Output.tuple(testCluster.endpoint(), testCluster.databaseName()).applyValue(values -\u003e {\n var endpoint = values.t1;\n var databaseName = values.t2;\n return String.format(\"jdbc:redshift://%s/%s\", endpoint,databaseName);\n }))\n .username(\"testuser\")\n .password(\"T3stPass\")\n .dataTableName(\"test-table\")\n .copyOptions(\"delimiter '|'\")\n .dataTableColumns(\"test-col\")\n .s3BackupMode(\"Enabled\")\n .s3Configuration(FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .s3BackupConfiguration(FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(15)\n .bufferingInterval(300)\n .compressionFormat(\"GZIP\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:redshift:Cluster\n name: test_cluster\n properties:\n clusterIdentifier: tf-redshift-cluster\n databaseName: test\n masterUsername: testuser\n masterPassword: T3stPass\n nodeType: dc1.large\n clusterType: single-node\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: redshift\n redshiftConfiguration:\n roleArn: ${firehoseRole.arn}\n clusterJdbcurl: jdbc:redshift://${testCluster.endpoint}/${testCluster.databaseName}\n username: testuser\n password: T3stPass\n dataTableName: test-table\n copyOptions: delimiter '|'\n dataTableColumns: test-col\n s3BackupMode: Enabled\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n s3BackupConfiguration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 15\n bufferingInterval: 300\n compressionFormat: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Elasticsearch Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.elasticsearch.Domain(\"test_cluster\", {domainName: \"firehose-es-test\"});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"elasticsearch\",\n elasticsearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehoseRole.arn,\n indexName: \"test\",\n typeName: \"test\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.elasticsearch.Domain(\"test_cluster\", domain_name=\"firehose-es-test\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"elasticsearch\",\n elasticsearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose_role[\"arn\"],\n \"index_name\": \"test\",\n \"type_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.ElasticSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"firehose-es-test\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"elasticsearch\",\n ElasticsearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehoseRole.Arn,\n IndexName = \"test\",\n TypeName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := elasticsearch.NewDomain(ctx, \"test_cluster\", \u0026elasticsearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"firehose-es-test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"elasticsearch\"),\n\t\t\tElasticsearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tTypeName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"firehose-es-test\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"elasticsearch\")\n .elasticsearchConfiguration(FirehoseDeliveryStreamElasticsearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehoseRole.arn())\n .indexName(\"test\")\n .typeName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .processingConfiguration(FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs.builder()\n .enabled(true)\n .processors(FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:elasticsearch:Domain\n name: test_cluster\n properties:\n domainName: firehose-es-test\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: elasticsearch\n elasticsearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehoseRole.arn}\n indexName: test\n typeName: test\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Elasticsearch Destination With VPC\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.elasticsearch.Domain(\"test_cluster\", {\n domainName: \"es-test\",\n clusterConfig: {\n instanceCount: 2,\n zoneAwarenessEnabled: true,\n instanceType: \"t2.small.elasticsearch\",\n },\n ebsOptions: {\n ebsEnabled: true,\n volumeSize: 10,\n },\n vpcOptions: {\n securityGroupIds: [first.id],\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n },\n});\nconst firehose_elasticsearch = aws.iam.getPolicyDocumentOutput({\n statements: [\n {\n effect: \"Allow\",\n actions: [\"es:*\"],\n resources: [\n testCluster.arn,\n pulumi.interpolate`${testCluster.arn}/*`,\n ],\n },\n {\n effect: \"Allow\",\n actions: [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\",\n ],\n resources: [\"*\"],\n },\n ],\n});\nconst firehose_elasticsearchRolePolicy = new aws.iam.RolePolicy(\"firehose-elasticsearch\", {\n name: \"elasticsearch\",\n role: firehose.id,\n policy: firehose_elasticsearch.apply(firehose_elasticsearch =\u003e firehose_elasticsearch.json),\n});\nconst test = new aws.kinesis.FirehoseDeliveryStream(\"test\", {\n name: \"kinesis-firehose-es\",\n destination: \"elasticsearch\",\n elasticsearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehose.arn,\n indexName: \"test\",\n typeName: \"test\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n },\n vpcConfig: {\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n securityGroupIds: [first.id],\n roleArn: firehose.arn,\n },\n },\n}, {\n dependsOn: [firehose_elasticsearchRolePolicy],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.elasticsearch.Domain(\"test_cluster\",\n domain_name=\"es-test\",\n cluster_config={\n \"instance_count\": 2,\n \"zone_awareness_enabled\": True,\n \"instance_type\": \"t2.small.elasticsearch\",\n },\n ebs_options={\n \"ebs_enabled\": True,\n \"volume_size\": 10,\n },\n vpc_options={\n \"security_group_ids\": [first[\"id\"]],\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n })\nfirehose_elasticsearch = aws.iam.get_policy_document_output(statements=[\n {\n \"effect\": \"Allow\",\n \"actions\": [\"es:*\"],\n \"resources\": [\n test_cluster.arn,\n test_cluster.arn.apply(lambda arn: f\"{arn}/*\"),\n ],\n },\n {\n \"effect\": \"Allow\",\n \"actions\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\",\n ],\n \"resources\": [\"*\"],\n },\n])\nfirehose_elasticsearch_role_policy = aws.iam.RolePolicy(\"firehose-elasticsearch\",\n name=\"elasticsearch\",\n role=firehose[\"id\"],\n policy=firehose_elasticsearch.json)\ntest = aws.kinesis.FirehoseDeliveryStream(\"test\",\n name=\"kinesis-firehose-es\",\n destination=\"elasticsearch\",\n elasticsearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose[\"arn\"],\n \"index_name\": \"test\",\n \"type_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n },\n \"vpc_config\": {\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n \"security_group_ids\": [first[\"id\"]],\n \"role_arn\": firehose[\"arn\"],\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[firehose_elasticsearch_role_policy]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.ElasticSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"es-test\",\n ClusterConfig = new Aws.ElasticSearch.Inputs.DomainClusterConfigArgs\n {\n InstanceCount = 2,\n ZoneAwarenessEnabled = true,\n InstanceType = \"t2.small.elasticsearch\",\n },\n EbsOptions = new Aws.ElasticSearch.Inputs.DomainEbsOptionsArgs\n {\n EbsEnabled = true,\n VolumeSize = 10,\n },\n VpcOptions = new Aws.ElasticSearch.Inputs.DomainVpcOptionsArgs\n {\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n },\n });\n\n var firehose_elasticsearch = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"es:*\",\n },\n Resources = new[]\n {\n testCluster.Arn,\n $\"{testCluster.Arn}/*\",\n },\n },\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\",\n },\n Resources = new[]\n {\n \"*\",\n },\n },\n },\n });\n\n var firehose_elasticsearchRolePolicy = new Aws.Iam.RolePolicy(\"firehose-elasticsearch\", new()\n {\n Name = \"elasticsearch\",\n Role = firehose.Id,\n Policy = firehose_elasticsearch.Apply(firehose_elasticsearch =\u003e firehose_elasticsearch.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json)),\n });\n\n var test = new Aws.Kinesis.FirehoseDeliveryStream(\"test\", new()\n {\n Name = \"kinesis-firehose-es\",\n Destination = \"elasticsearch\",\n ElasticsearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehose.Arn,\n IndexName = \"test\",\n TypeName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n },\n VpcConfig = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs\n {\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n RoleArn = firehose.Arn,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firehose_elasticsearchRolePolicy,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := elasticsearch.NewDomain(ctx, \"test_cluster\", \u0026elasticsearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"es-test\"),\n\t\t\tClusterConfig: \u0026elasticsearch.DomainClusterConfigArgs{\n\t\t\t\tInstanceCount: pulumi.Int(2),\n\t\t\t\tZoneAwarenessEnabled: pulumi.Bool(true),\n\t\t\t\tInstanceType: pulumi.String(\"t2.small.elasticsearch\"),\n\t\t\t},\n\t\t\tEbsOptions: \u0026elasticsearch.DomainEbsOptionsArgs{\n\t\t\t\tEbsEnabled: pulumi.Bool(true),\n\t\t\t\tVolumeSize: pulumi.Int(10),\n\t\t\t},\n\t\t\tVpcOptions: \u0026elasticsearch.DomainVpcOptionsArgs{\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tfirst.Id,\n\t\t\t\t},\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\tsecond.Id,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirehose_elasticsearch := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{\n\t\t\tStatements: iam.GetPolicyDocumentStatementArray{\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"es:*\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\ttestCluster.Arn,\n\t\t\t\t\t\ttestCluster.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"%v/*\", arn), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeVpcs\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeVpcAttribute\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeSubnets\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeSecurityGroups\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeNetworkInterfaces\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:CreateNetworkInterface\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:CreateNetworkInterfacePermission\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DeleteNetworkInterface\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tfirehose_elasticsearchRolePolicy, err := iam.NewRolePolicy(ctx, \"firehose-elasticsearch\", \u0026iam.RolePolicyArgs{\n\t\t\tName: pulumi.String(\"elasticsearch\"),\n\t\t\tRole: pulumi.Any(firehose.Id),\n\t\t\tPolicy: pulumi.String(firehose_elasticsearch.ApplyT(func(firehose_elasticsearch iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026firehose_elasticsearch.Json, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-es\"),\n\t\t\tDestination: pulumi.String(\"elasticsearch\"),\n\t\t\tElasticsearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tTypeName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t},\n\t\t\t\tVpcConfig: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs{\n\t\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\t\tsecond.Id,\n\t\t\t\t\t},\n\t\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\t\tfirst.Id,\n\t\t\t\t\t},\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirehose_elasticsearchRolePolicy,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainClusterConfigArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainEbsOptionsArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainVpcOptionsArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"es-test\")\n .clusterConfig(DomainClusterConfigArgs.builder()\n .instanceCount(2)\n .zoneAwarenessEnabled(true)\n .instanceType(\"t2.small.elasticsearch\")\n .build())\n .ebsOptions(DomainEbsOptionsArgs.builder()\n .ebsEnabled(true)\n .volumeSize(10)\n .build())\n .vpcOptions(DomainVpcOptionsArgs.builder()\n .securityGroupIds(first.id())\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .build())\n .build());\n\n final var firehose-elasticsearch = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements( \n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"es:*\")\n .resources( \n testCluster.arn(),\n testCluster.arn().applyValue(_arn -\u003e String.format(\"%s/*\", _arn)))\n .build(),\n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions( \n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\")\n .resources(\"*\")\n .build())\n .build());\n\n var firehose_elasticsearchRolePolicy = new RolePolicy(\"firehose-elasticsearchRolePolicy\", RolePolicyArgs.builder()\n .name(\"elasticsearch\")\n .role(firehose.id())\n .policy(firehose_elasticsearch.applyValue(_firehose_elasticsearch -\u003e _firehose_elasticsearch.json()))\n .build());\n\n var test = new FirehoseDeliveryStream(\"test\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-es\")\n .destination(\"elasticsearch\")\n .elasticsearchConfiguration(FirehoseDeliveryStreamElasticsearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehose.arn())\n .indexName(\"test\")\n .typeName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .build())\n .vpcConfig(FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs.builder()\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .securityGroupIds(first.id())\n .roleArn(firehose.arn())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firehose_elasticsearchRolePolicy)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:elasticsearch:Domain\n name: test_cluster\n properties:\n domainName: es-test\n clusterConfig:\n instanceCount: 2\n zoneAwarenessEnabled: true\n instanceType: t2.small.elasticsearch\n ebsOptions:\n ebsEnabled: true\n volumeSize: 10\n vpcOptions:\n securityGroupIds:\n - ${first.id}\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n firehose-elasticsearchRolePolicy:\n type: aws:iam:RolePolicy\n name: firehose-elasticsearch\n properties:\n name: elasticsearch\n role: ${firehose.id}\n policy: ${[\"firehose-elasticsearch\"].json}\n test:\n type: aws:kinesis:FirehoseDeliveryStream\n properties:\n name: kinesis-firehose-es\n destination: elasticsearch\n elasticsearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehose.arn}\n indexName: test\n typeName: test\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n vpcConfig:\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n securityGroupIds:\n - ${first.id}\n roleArn: ${firehose.arn}\n options:\n dependsOn:\n - ${[\"firehose-elasticsearchRolePolicy\"]}\nvariables:\n firehose-elasticsearch:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n actions:\n - es:*\n resources:\n - ${testCluster.arn}\n - ${testCluster.arn}/*\n - effect: Allow\n actions:\n - ec2:DescribeVpcs\n - ec2:DescribeVpcAttribute\n - ec2:DescribeSubnets\n - ec2:DescribeSecurityGroups\n - ec2:DescribeNetworkInterfaces\n - ec2:CreateNetworkInterface\n - ec2:CreateNetworkInterfacePermission\n - ec2:DeleteNetworkInterface\n resources:\n - '*'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.opensearch.Domain(\"test_cluster\", {domainName: \"firehose-os-test\"});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"opensearch\",\n opensearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehoseRole.arn,\n indexName: \"test\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.opensearch.Domain(\"test_cluster\", domain_name=\"firehose-os-test\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"opensearch\",\n opensearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose_role[\"arn\"],\n \"index_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.OpenSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"firehose-os-test\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"opensearch\",\n OpensearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehoseRole.Arn,\n IndexName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/opensearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := opensearch.NewDomain(ctx, \"test_cluster\", \u0026opensearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"firehose-os-test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"opensearch\"),\n\t\t\tOpensearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.opensearch.Domain;\nimport com.pulumi.aws.opensearch.DomainArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"firehose-os-test\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"opensearch\")\n .opensearchConfiguration(FirehoseDeliveryStreamOpensearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehoseRole.arn())\n .indexName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .processingConfiguration(FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs.builder()\n .enabled(true)\n .processors(FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:opensearch:Domain\n name: test_cluster\n properties:\n domainName: firehose-os-test\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: opensearch\n opensearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehoseRole.arn}\n indexName: test\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch Destination With VPC\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.opensearch.Domain(\"test_cluster\", {\n domainName: \"es-test\",\n clusterConfig: {\n instanceCount: 2,\n zoneAwarenessEnabled: true,\n instanceType: \"m4.large.search\",\n },\n ebsOptions: {\n ebsEnabled: true,\n volumeSize: 10,\n },\n vpcOptions: {\n securityGroupIds: [first.id],\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n },\n});\nconst firehose_opensearch = new aws.iam.RolePolicy(\"firehose-opensearch\", {\n name: \"opensearch\",\n role: firehose.id,\n policy: pulumi.interpolate`{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Action\\\": [\n \\\"es:*\\\"\n ],\n \\\"Resource\\\": [\n \\\"${testCluster.arn}\\\",\n \\\"${testCluster.arn}/*\\\"\n ]\n },\n {\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Action\\\": [\n \\\"ec2:DescribeVpcs\\\",\n \\\"ec2:DescribeVpcAttribute\\\",\n \\\"ec2:DescribeSubnets\\\",\n \\\"ec2:DescribeSecurityGroups\\\",\n \\\"ec2:DescribeNetworkInterfaces\\\",\n \\\"ec2:CreateNetworkInterface\\\",\n \\\"ec2:CreateNetworkInterfacePermission\\\",\n \\\"ec2:DeleteNetworkInterface\\\"\n ],\n \\\"Resource\\\": [\n \\\"*\\\"\n ]\n }\n ]\n}\n`,\n});\nconst test = new aws.kinesis.FirehoseDeliveryStream(\"test\", {\n name: \"pulumi-kinesis-firehose-os\",\n destination: \"opensearch\",\n opensearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehose.arn,\n indexName: \"test\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n },\n vpcConfig: {\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n securityGroupIds: [first.id],\n roleArn: firehose.arn,\n },\n },\n}, {\n dependsOn: [firehose_opensearch],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.opensearch.Domain(\"test_cluster\",\n domain_name=\"es-test\",\n cluster_config={\n \"instance_count\": 2,\n \"zone_awareness_enabled\": True,\n \"instance_type\": \"m4.large.search\",\n },\n ebs_options={\n \"ebs_enabled\": True,\n \"volume_size\": 10,\n },\n vpc_options={\n \"security_group_ids\": [first[\"id\"]],\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n })\nfirehose_opensearch = aws.iam.RolePolicy(\"firehose-opensearch\",\n name=\"opensearch\",\n role=firehose[\"id\"],\n policy=pulumi.Output.all(\n testClusterArn=test_cluster.arn,\n testClusterArn1=test_cluster.arn\n).apply(lambda resolved_outputs: f\"\"\"{{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {{\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Action\\\": [\n \\\"es:*\\\"\n ],\n \\\"Resource\\\": [\n \\\"{resolved_outputs['testClusterArn']}\\\",\n \\\"{resolved_outputs['testClusterArn1']}/*\\\"\n ]\n }},\n {{\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Action\\\": [\n \\\"ec2:DescribeVpcs\\\",\n \\\"ec2:DescribeVpcAttribute\\\",\n \\\"ec2:DescribeSubnets\\\",\n \\\"ec2:DescribeSecurityGroups\\\",\n \\\"ec2:DescribeNetworkInterfaces\\\",\n \\\"ec2:CreateNetworkInterface\\\",\n \\\"ec2:CreateNetworkInterfacePermission\\\",\n \\\"ec2:DeleteNetworkInterface\\\"\n ],\n \\\"Resource\\\": [\n \\\"*\\\"\n ]\n }}\n ]\n}}\n\"\"\")\n)\ntest = aws.kinesis.FirehoseDeliveryStream(\"test\",\n name=\"pulumi-kinesis-firehose-os\",\n destination=\"opensearch\",\n opensearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose[\"arn\"],\n \"index_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n },\n \"vpc_config\": {\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n \"security_group_ids\": [first[\"id\"]],\n \"role_arn\": firehose[\"arn\"],\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[firehose_opensearch]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.OpenSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"es-test\",\n ClusterConfig = new Aws.OpenSearch.Inputs.DomainClusterConfigArgs\n {\n InstanceCount = 2,\n ZoneAwarenessEnabled = true,\n InstanceType = \"m4.large.search\",\n },\n EbsOptions = new Aws.OpenSearch.Inputs.DomainEbsOptionsArgs\n {\n EbsEnabled = true,\n VolumeSize = 10,\n },\n VpcOptions = new Aws.OpenSearch.Inputs.DomainVpcOptionsArgs\n {\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n },\n });\n\n var firehose_opensearch = new Aws.Iam.RolePolicy(\"firehose-opensearch\", new()\n {\n Name = \"opensearch\",\n Role = firehose.Id,\n Policy = Output.Tuple(testCluster.Arn, testCluster.Arn).Apply(values =\u003e\n {\n var testClusterArn = values.Item1;\n var testClusterArn1 = values.Item2;\n return @$\"{{\n \\\"\"Version\\\"\": \\\"\"2012-10-17\\\"\",\n \\\"\"Statement\\\"\": [\n {{\n \\\"\"Effect\\\"\": \\\"\"Allow\\\"\",\n \\\"\"Action\\\"\": [\n \\\"\"es:*\\\"\"\n ],\n \\\"\"Resource\\\"\": [\n \\\"\"{testClusterArn}\\\"\",\n \\\"\"{testClusterArn1}/*\\\"\"\n ]\n }},\n {{\n \\\"\"Effect\\\"\": \\\"\"Allow\\\"\",\n \\\"\"Action\\\"\": [\n \\\"\"ec2:DescribeVpcs\\\"\",\n \\\"\"ec2:DescribeVpcAttribute\\\"\",\n \\\"\"ec2:DescribeSubnets\\\"\",\n \\\"\"ec2:DescribeSecurityGroups\\\"\",\n \\\"\"ec2:DescribeNetworkInterfaces\\\"\",\n \\\"\"ec2:CreateNetworkInterface\\\"\",\n \\\"\"ec2:CreateNetworkInterfacePermission\\\"\",\n \\\"\"ec2:DeleteNetworkInterface\\\"\"\n ],\n \\\"\"Resource\\\"\": [\n \\\"\"*\\\"\"\n ]\n }}\n ]\n}}\n\";\n }),\n });\n\n var test = new Aws.Kinesis.FirehoseDeliveryStream(\"test\", new()\n {\n Name = \"pulumi-kinesis-firehose-os\",\n Destination = \"opensearch\",\n OpensearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehose.Arn,\n IndexName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n },\n VpcConfig = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs\n {\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n RoleArn = firehose.Arn,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firehose_opensearch,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/opensearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := opensearch.NewDomain(ctx, \"test_cluster\", \u0026opensearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"es-test\"),\n\t\t\tClusterConfig: \u0026opensearch.DomainClusterConfigArgs{\n\t\t\t\tInstanceCount: pulumi.Int(2),\n\t\t\t\tZoneAwarenessEnabled: pulumi.Bool(true),\n\t\t\t\tInstanceType: pulumi.String(\"m4.large.search\"),\n\t\t\t},\n\t\t\tEbsOptions: \u0026opensearch.DomainEbsOptionsArgs{\n\t\t\t\tEbsEnabled: pulumi.Bool(true),\n\t\t\t\tVolumeSize: pulumi.Int(10),\n\t\t\t},\n\t\t\tVpcOptions: \u0026opensearch.DomainVpcOptionsArgs{\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tfirst.Id,\n\t\t\t\t},\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\tsecond.Id,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirehose_opensearch, err := iam.NewRolePolicy(ctx, \"firehose-opensearch\", \u0026iam.RolePolicyArgs{\n\t\t\tName: pulumi.String(\"opensearch\"),\n\t\t\tRole: pulumi.Any(firehose.Id),\n\t\t\tPolicy: pulumi.All(testCluster.Arn, testCluster.Arn).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\ttestClusterArn := _args[0].(string)\n\t\t\t\ttestClusterArn1 := _args[1].(string)\n\t\t\t\treturn fmt.Sprintf(`{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Action\\\": [\n \\\"es:*\\\"\n ],\n \\\"Resource\\\": [\n \\\"%v\\\",\n \\\"%v/*\\\"\n ]\n },\n {\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Action\\\": [\n \\\"ec2:DescribeVpcs\\\",\n \\\"ec2:DescribeVpcAttribute\\\",\n \\\"ec2:DescribeSubnets\\\",\n \\\"ec2:DescribeSecurityGroups\\\",\n \\\"ec2:DescribeNetworkInterfaces\\\",\n \\\"ec2:CreateNetworkInterface\\\",\n \\\"ec2:CreateNetworkInterfacePermission\\\",\n \\\"ec2:DeleteNetworkInterface\\\"\n ],\n \\\"Resource\\\": [\n \\\"*\\\"\n ]\n }\n ]\n}\n`, testClusterArn, testClusterArn1), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"pulumi-kinesis-firehose-os\"),\n\t\t\tDestination: pulumi.String(\"opensearch\"),\n\t\t\tOpensearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t},\n\t\t\t\tVpcConfig: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs{\n\t\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\t\tsecond.Id,\n\t\t\t\t\t},\n\t\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\t\tfirst.Id,\n\t\t\t\t\t},\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirehose_opensearch,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.opensearch.Domain;\nimport com.pulumi.aws.opensearch.DomainArgs;\nimport com.pulumi.aws.opensearch.inputs.DomainClusterConfigArgs;\nimport com.pulumi.aws.opensearch.inputs.DomainEbsOptionsArgs;\nimport com.pulumi.aws.opensearch.inputs.DomainVpcOptionsArgs;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"es-test\")\n .clusterConfig(DomainClusterConfigArgs.builder()\n .instanceCount(2)\n .zoneAwarenessEnabled(true)\n .instanceType(\"m4.large.search\")\n .build())\n .ebsOptions(DomainEbsOptionsArgs.builder()\n .ebsEnabled(true)\n .volumeSize(10)\n .build())\n .vpcOptions(DomainVpcOptionsArgs.builder()\n .securityGroupIds(first.id())\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .build())\n .build());\n\n var firehose_opensearch = new RolePolicy(\"firehose-opensearch\", RolePolicyArgs.builder()\n .name(\"opensearch\")\n .role(firehose.id())\n .policy(Output.tuple(testCluster.arn(), testCluster.arn()).applyValue(values -\u003e {\n var testClusterArn = values.t1;\n var testClusterArn1 = values.t2;\n return \"\"\"\n{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Action\\\": [\n \\\"es:*\\\"\n ],\n \\\"Resource\\\": [\n \\\"%s\\\",\n \\\"%s/*\\\"\n ]\n },\n {\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Action\\\": [\n \\\"ec2:DescribeVpcs\\\",\n \\\"ec2:DescribeVpcAttribute\\\",\n \\\"ec2:DescribeSubnets\\\",\n \\\"ec2:DescribeSecurityGroups\\\",\n \\\"ec2:DescribeNetworkInterfaces\\\",\n \\\"ec2:CreateNetworkInterface\\\",\n \\\"ec2:CreateNetworkInterfacePermission\\\",\n \\\"ec2:DeleteNetworkInterface\\\"\n ],\n \\\"Resource\\\": [\n \\\"*\\\"\n ]\n }\n ]\n}\n\", testClusterArn,testClusterArn1);\n }))\n .build());\n\n var test = new FirehoseDeliveryStream(\"test\", FirehoseDeliveryStreamArgs.builder()\n .name(\"pulumi-kinesis-firehose-os\")\n .destination(\"opensearch\")\n .opensearchConfiguration(FirehoseDeliveryStreamOpensearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehose.arn())\n .indexName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .build())\n .vpcConfig(FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs.builder()\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .securityGroupIds(first.id())\n .roleArn(firehose.arn())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firehose_opensearch)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:opensearch:Domain\n name: test_cluster\n properties:\n domainName: es-test\n clusterConfig:\n instanceCount: 2\n zoneAwarenessEnabled: true\n instanceType: m4.large.search\n ebsOptions:\n ebsEnabled: true\n volumeSize: 10\n vpcOptions:\n securityGroupIds:\n - ${first.id}\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n firehose-opensearch:\n type: aws:iam:RolePolicy\n properties:\n name: opensearch\n role: ${firehose.id}\n policy: |\n {\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Action\\\": [\n \\\"es:*\\\"\n ],\n \\\"Resource\\\": [\n \\\"${testCluster.arn}\\\",\n \\\"${testCluster.arn}/*\\\"\n ]\n },\n {\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Action\\\": [\n \\\"ec2:DescribeVpcs\\\",\n \\\"ec2:DescribeVpcAttribute\\\",\n \\\"ec2:DescribeSubnets\\\",\n \\\"ec2:DescribeSecurityGroups\\\",\n \\\"ec2:DescribeNetworkInterfaces\\\",\n \\\"ec2:CreateNetworkInterface\\\",\n \\\"ec2:CreateNetworkInterfacePermission\\\",\n \\\"ec2:DeleteNetworkInterface\\\"\n ],\n \\\"Resource\\\": [\n \\\"*\\\"\n ]\n }\n ]\n }\n test:\n type: aws:kinesis:FirehoseDeliveryStream\n properties:\n name: pulumi-kinesis-firehose-os\n destination: opensearch\n opensearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehose.arn}\n indexName: test\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n vpcConfig:\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n securityGroupIds:\n - ${first.id}\n roleArn: ${firehose.arn}\n options:\n dependsOn:\n - ${[\"firehose-opensearch\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch Serverless Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCollection = new aws.opensearch.ServerlessCollection(\"test_collection\", {name: \"firehose-osserverless-test\"});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"opensearchserverless\",\n opensearchserverlessConfiguration: {\n collectionEndpoint: testCollection.collectionEndpoint,\n roleArn: firehoseRole.arn,\n indexName: \"test\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_collection = aws.opensearch.ServerlessCollection(\"test_collection\", name=\"firehose-osserverless-test\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"opensearchserverless\",\n opensearchserverless_configuration={\n \"collection_endpoint\": test_collection.collection_endpoint,\n \"role_arn\": firehose_role[\"arn\"],\n \"index_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCollection = new Aws.OpenSearch.ServerlessCollection(\"test_collection\", new()\n {\n Name = \"firehose-osserverless-test\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"opensearchserverless\",\n OpensearchserverlessConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs\n {\n CollectionEndpoint = testCollection.CollectionEndpoint,\n RoleArn = firehoseRole.Arn,\n IndexName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/opensearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCollection, err := opensearch.NewServerlessCollection(ctx, \"test_collection\", \u0026opensearch.ServerlessCollectionArgs{\n\t\t\tName: pulumi.String(\"firehose-osserverless-test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"opensearchserverless\"),\n\t\t\tOpensearchserverlessConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs{\n\t\t\t\tCollectionEndpoint: testCollection.CollectionEndpoint,\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.opensearch.ServerlessCollection;\nimport com.pulumi.aws.opensearch.ServerlessCollectionArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCollection = new ServerlessCollection(\"testCollection\", ServerlessCollectionArgs.builder()\n .name(\"firehose-osserverless-test\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"opensearchserverless\")\n .opensearchserverlessConfiguration(FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs.builder()\n .collectionEndpoint(testCollection.collectionEndpoint())\n .roleArn(firehoseRole.arn())\n .indexName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .processingConfiguration(FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs.builder()\n .enabled(true)\n .processors(FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCollection:\n type: aws:opensearch:ServerlessCollection\n name: test_collection\n properties:\n name: firehose-osserverless-test\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: opensearchserverless\n opensearchserverlessConfiguration:\n collectionEndpoint: ${testCollection.collectionEndpoint}\n roleArn: ${firehoseRole.arn}\n indexName: test\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Iceberg Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst current = aws.getCallerIdentity({});\nconst currentGetPartition = aws.getPartition({});\nconst currentGetRegion = aws.getRegion({});\nconst bucket = new aws.s3.Bucket(\"bucket\", {\n bucket: \"test-bucket\",\n forceDestroy: true,\n});\nconst test = new aws.glue.CatalogDatabase(\"test\", {name: \"test\"});\nconst testCatalogTable = new aws.glue.CatalogTable(\"test\", {\n name: \"test\",\n databaseName: test.name,\n parameters: {\n format: \"parquet\",\n },\n tableType: \"EXTERNAL_TABLE\",\n openTableFormatInput: {\n icebergInput: {\n metadataOperation: \"CREATE\",\n version: \"2\",\n },\n },\n storageDescriptor: {\n location: pulumi.interpolate`s3://${bucket.id}`,\n columns: [{\n name: \"my_column_1\",\n type: \"int\",\n }],\n },\n});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"iceberg\",\n icebergConfiguration: {\n roleArn: firehoseRole.arn,\n catalogArn: Promise.all([currentGetPartition, currentGetRegion, current]).then(([currentGetPartition, currentGetRegion, current]) =\u003e `arn:${currentGetPartition.partition}:glue:${currentGetRegion.region}:${current.accountId}:catalog`),\n bufferingSize: 10,\n bufferingInterval: 400,\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n },\n destinationTableConfigurations: [{\n databaseName: test.name,\n tableName: testCatalogTable.name,\n }],\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncurrent = aws.get_caller_identity()\ncurrent_get_partition = aws.get_partition()\ncurrent_get_region = aws.get_region()\nbucket = aws.s3.Bucket(\"bucket\",\n bucket=\"test-bucket\",\n force_destroy=True)\ntest = aws.glue.CatalogDatabase(\"test\", name=\"test\")\ntest_catalog_table = aws.glue.CatalogTable(\"test\",\n name=\"test\",\n database_name=test.name,\n parameters={\n \"format\": \"parquet\",\n },\n table_type=\"EXTERNAL_TABLE\",\n open_table_format_input={\n \"iceberg_input\": {\n \"metadata_operation\": \"CREATE\",\n \"version\": \"2\",\n },\n },\n storage_descriptor={\n \"location\": bucket.id.apply(lambda id: f\"s3://{id}\"),\n \"columns\": [{\n \"name\": \"my_column_1\",\n \"type\": \"int\",\n }],\n })\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"iceberg\",\n iceberg_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"catalog_arn\": f\"arn:{current_get_partition.partition}:glue:{current_get_region.region}:{current.account_id}:catalog\",\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket.arn,\n },\n \"destination_table_configurations\": [{\n \"database_name\": test.name,\n \"table_name\": test_catalog_table.name,\n }],\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Aws.GetCallerIdentity.Invoke();\n\n var currentGetPartition = Aws.GetPartition.Invoke();\n\n var currentGetRegion = Aws.GetRegion.Invoke();\n\n var bucket = new Aws.S3.Bucket(\"bucket\", new()\n {\n BucketName = \"test-bucket\",\n ForceDestroy = true,\n });\n\n var test = new Aws.Glue.CatalogDatabase(\"test\", new()\n {\n Name = \"test\",\n });\n\n var testCatalogTable = new Aws.Glue.CatalogTable(\"test\", new()\n {\n Name = \"test\",\n DatabaseName = test.Name,\n Parameters = \n {\n { \"format\", \"parquet\" },\n },\n TableType = \"EXTERNAL_TABLE\",\n OpenTableFormatInput = new Aws.Glue.Inputs.CatalogTableOpenTableFormatInputArgs\n {\n IcebergInput = new Aws.Glue.Inputs.CatalogTableOpenTableFormatInputIcebergInputArgs\n {\n MetadataOperation = \"CREATE\",\n Version = \"2\",\n },\n },\n StorageDescriptor = new Aws.Glue.Inputs.CatalogTableStorageDescriptorArgs\n {\n Location = bucket.Id.Apply(id =\u003e $\"s3://{id}\"),\n Columns = new[]\n {\n new Aws.Glue.Inputs.CatalogTableStorageDescriptorColumnArgs\n {\n Name = \"my_column_1\",\n Type = \"int\",\n },\n },\n },\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"iceberg\",\n IcebergConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n CatalogArn = Output.Tuple(currentGetPartition, currentGetRegion, current).Apply(values =\u003e\n {\n var currentGetPartition = values.Item1;\n var currentGetRegion = values.Item2;\n var current = values.Item3;\n return $\"arn:{currentGetPartition.Apply(getPartitionResult =\u003e getPartitionResult.Partition)}:glue:{currentGetRegion.Apply(getRegionResult =\u003e getRegionResult.Region)}:{current.Apply(getCallerIdentityResult =\u003e getCallerIdentityResult.AccountId)}:catalog\";\n }),\n BufferingSize = 10,\n BufferingInterval = 400,\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n },\n DestinationTableConfigurations = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArgs\n {\n DatabaseName = test.Name,\n TableName = testCatalogTable.Name,\n },\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/glue\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/s3\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := aws.GetCallerIdentity(ctx, \u0026aws.GetCallerIdentityArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcurrentGetPartition, err := aws.GetPartition(ctx, \u0026aws.GetPartitionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcurrentGetRegion, err := aws.GetRegion(ctx, \u0026aws.GetRegionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := s3.NewBucket(ctx, \"bucket\", \u0026s3.BucketArgs{\n\t\t\tBucket: pulumi.String(\"test-bucket\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := glue.NewCatalogDatabase(ctx, \"test\", \u0026glue.CatalogDatabaseArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestCatalogTable, err := glue.NewCatalogTable(ctx, \"test\", \u0026glue.CatalogTableArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tDatabaseName: test.Name,\n\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\"format\": pulumi.String(\"parquet\"),\n\t\t\t},\n\t\t\tTableType: pulumi.String(\"EXTERNAL_TABLE\"),\n\t\t\tOpenTableFormatInput: \u0026glue.CatalogTableOpenTableFormatInputArgs{\n\t\t\t\tIcebergInput: \u0026glue.CatalogTableOpenTableFormatInputIcebergInputArgs{\n\t\t\t\t\tMetadataOperation: pulumi.String(\"CREATE\"),\n\t\t\t\t\tVersion: pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorageDescriptor: \u0026glue.CatalogTableStorageDescriptorArgs{\n\t\t\t\tLocation: bucket.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"s3://%v\", id), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tColumns: glue.CatalogTableStorageDescriptorColumnArray{\n\t\t\t\t\t\u0026glue.CatalogTableStorageDescriptorColumnArgs{\n\t\t\t\t\t\tName: pulumi.String(\"my_column_1\"),\n\t\t\t\t\t\tType: pulumi.String(\"int\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"iceberg\"),\n\t\t\tIcebergConfiguration: \u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tCatalogArn: pulumi.Sprintf(\"arn:%v:glue:%v:%v:catalog\", currentGetPartition.Partition, currentGetRegion.Region, current.AccountId),\n\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: bucket.Arn,\n\t\t\t\t},\n\t\t\t\tDestinationTableConfigurations: kinesis.FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArray{\n\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArgs{\n\t\t\t\t\t\tDatabaseName: test.Name,\n\t\t\t\t\t\tTableName: testCatalogTable.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.AwsFunctions;\nimport com.pulumi.aws.inputs.GetCallerIdentityArgs;\nimport com.pulumi.aws.inputs.GetPartitionArgs;\nimport com.pulumi.aws.inputs.GetRegionArgs;\nimport com.pulumi.aws.s3.Bucket;\nimport com.pulumi.aws.s3.BucketArgs;\nimport com.pulumi.aws.glue.CatalogDatabase;\nimport com.pulumi.aws.glue.CatalogDatabaseArgs;\nimport com.pulumi.aws.glue.CatalogTable;\nimport com.pulumi.aws.glue.CatalogTableArgs;\nimport com.pulumi.aws.glue.inputs.CatalogTableOpenTableFormatInputArgs;\nimport com.pulumi.aws.glue.inputs.CatalogTableOpenTableFormatInputIcebergInputArgs;\nimport com.pulumi.aws.glue.inputs.CatalogTableStorageDescriptorArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamIcebergConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()\n .build());\n\n final var currentGetPartition = AwsFunctions.getPartition(GetPartitionArgs.builder()\n .build());\n\n final var currentGetRegion = AwsFunctions.getRegion(GetRegionArgs.builder()\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .bucket(\"test-bucket\")\n .forceDestroy(true)\n .build());\n\n var test = new CatalogDatabase(\"test\", CatalogDatabaseArgs.builder()\n .name(\"test\")\n .build());\n\n var testCatalogTable = new CatalogTable(\"testCatalogTable\", CatalogTableArgs.builder()\n .name(\"test\")\n .databaseName(test.name())\n .parameters(Map.of(\"format\", \"parquet\"))\n .tableType(\"EXTERNAL_TABLE\")\n .openTableFormatInput(CatalogTableOpenTableFormatInputArgs.builder()\n .icebergInput(CatalogTableOpenTableFormatInputIcebergInputArgs.builder()\n .metadataOperation(\"CREATE\")\n .version(\"2\")\n .build())\n .build())\n .storageDescriptor(CatalogTableStorageDescriptorArgs.builder()\n .location(bucket.id().applyValue(_id -\u003e String.format(\"s3://%s\", _id)))\n .columns(CatalogTableStorageDescriptorColumnArgs.builder()\n .name(\"my_column_1\")\n .type(\"int\")\n .build())\n .build())\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"iceberg\")\n .icebergConfiguration(FirehoseDeliveryStreamIcebergConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .catalogArn(String.format(\"arn:%s:glue:%s:%s:catalog\", currentGetPartition.partition(),currentGetRegion.region(),current.accountId()))\n .bufferingSize(10)\n .bufferingInterval(400)\n .s3Configuration(FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .build())\n .destinationTableConfigurations(FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArgs.builder()\n .databaseName(test.name())\n .tableName(testCatalogTable.name())\n .build())\n .processingConfiguration(FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs.builder()\n .enabled(true)\n .processors(FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: aws:s3:Bucket\n properties:\n bucket: test-bucket\n forceDestroy: true\n test:\n type: aws:glue:CatalogDatabase\n properties:\n name: test\n testCatalogTable:\n type: aws:glue:CatalogTable\n name: test\n properties:\n name: test\n databaseName: ${test.name}\n parameters:\n format: parquet\n tableType: EXTERNAL_TABLE\n openTableFormatInput:\n icebergInput:\n metadataOperation: CREATE\n version: 2\n storageDescriptor:\n location: s3://${bucket.id}\n columns:\n - name: my_column_1\n type: int\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: iceberg\n icebergConfiguration:\n roleArn: ${firehoseRole.arn}\n catalogArn: arn:${currentGetPartition.partition}:glue:${currentGetRegion.region}:${current.accountId}:catalog\n bufferingSize: 10\n bufferingInterval: 400\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n destinationTableConfigurations:\n - databaseName: ${test.name}\n tableName: ${testCatalogTable.name}\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\nvariables:\n current:\n fn::invoke:\n function: aws:getCallerIdentity\n arguments: {}\n currentGetPartition:\n fn::invoke:\n function: aws:getPartition\n arguments: {}\n currentGetRegion:\n fn::invoke:\n function: aws:getRegion\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Splunk Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"splunk\",\n splunkConfiguration: {\n hecEndpoint: \"https://http-inputs-mydomain.splunkcloud.com:443\",\n hecToken: \"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\",\n hecAcknowledgmentTimeout: 600,\n hecEndpointType: \"Event\",\n s3BackupMode: \"FailedEventsOnly\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"splunk\",\n splunk_configuration={\n \"hec_endpoint\": \"https://http-inputs-mydomain.splunkcloud.com:443\",\n \"hec_token\": \"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\",\n \"hec_acknowledgment_timeout\": 600,\n \"hec_endpoint_type\": \"Event\",\n \"s3_backup_mode\": \"FailedEventsOnly\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"splunk\",\n SplunkConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSplunkConfigurationArgs\n {\n HecEndpoint = \"https://http-inputs-mydomain.splunkcloud.com:443\",\n HecToken = \"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\",\n HecAcknowledgmentTimeout = 600,\n HecEndpointType = \"Event\",\n S3BackupMode = \"FailedEventsOnly\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"splunk\"),\n\t\t\tSplunkConfiguration: \u0026kinesis.FirehoseDeliveryStreamSplunkConfigurationArgs{\n\t\t\t\tHecEndpoint: pulumi.String(\"https://http-inputs-mydomain.splunkcloud.com:443\"),\n\t\t\t\tHecToken: pulumi.String(\"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\"),\n\t\t\t\tHecAcknowledgmentTimeout: pulumi.Int(600),\n\t\t\t\tHecEndpointType: pulumi.String(\"Event\"),\n\t\t\t\tS3BackupMode: pulumi.String(\"FailedEventsOnly\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSplunkConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"splunk\")\n .splunkConfiguration(FirehoseDeliveryStreamSplunkConfigurationArgs.builder()\n .hecEndpoint(\"https://http-inputs-mydomain.splunkcloud.com:443\")\n .hecToken(\"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\")\n .hecAcknowledgmentTimeout(600)\n .hecEndpointType(\"Event\")\n .s3BackupMode(\"FailedEventsOnly\")\n .s3Configuration(FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: splunk\n splunkConfiguration:\n hecEndpoint: https://http-inputs-mydomain.splunkcloud.com:443\n hecToken: 51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\n hecAcknowledgmentTimeout: 600\n hecEndpointType: Event\n s3BackupMode: FailedEventsOnly\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### HTTP Endpoint (e.g., New Relic) Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"http_endpoint\",\n httpEndpointConfiguration: {\n url: \"https://aws-api.newrelic.com/firehose/v1\",\n name: \"New Relic\",\n accessKey: \"my-key\",\n bufferingSize: 15,\n bufferingInterval: 600,\n roleArn: firehose.arn,\n s3BackupMode: \"FailedDataOnly\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n requestConfiguration: {\n contentEncoding: \"GZIP\",\n commonAttributes: [\n {\n name: \"testname\",\n value: \"testvalue\",\n },\n {\n name: \"testname2\",\n value: \"testvalue2\",\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"http_endpoint\",\n http_endpoint_configuration={\n \"url\": \"https://aws-api.newrelic.com/firehose/v1\",\n \"name\": \"New Relic\",\n \"access_key\": \"my-key\",\n \"buffering_size\": 15,\n \"buffering_interval\": 600,\n \"role_arn\": firehose[\"arn\"],\n \"s3_backup_mode\": \"FailedDataOnly\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"request_configuration\": {\n \"content_encoding\": \"GZIP\",\n \"common_attributes\": [\n {\n \"name\": \"testname\",\n \"value\": \"testvalue\",\n },\n {\n \"name\": \"testname2\",\n \"value\": \"testvalue2\",\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"http_endpoint\",\n HttpEndpointConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationArgs\n {\n Url = \"https://aws-api.newrelic.com/firehose/v1\",\n Name = \"New Relic\",\n AccessKey = \"my-key\",\n BufferingSize = 15,\n BufferingInterval = 600,\n RoleArn = firehose.Arn,\n S3BackupMode = \"FailedDataOnly\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n RequestConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs\n {\n ContentEncoding = \"GZIP\",\n CommonAttributes = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs\n {\n Name = \"testname\",\n Value = \"testvalue\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs\n {\n Name = \"testname2\",\n Value = \"testvalue2\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"http_endpoint\"),\n\t\t\tHttpEndpointConfiguration: \u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationArgs{\n\t\t\t\tUrl: pulumi.String(\"https://aws-api.newrelic.com/firehose/v1\"),\n\t\t\t\tName: pulumi.String(\"New Relic\"),\n\t\t\t\tAccessKey: pulumi.String(\"my-key\"),\n\t\t\t\tBufferingSize: pulumi.Int(15),\n\t\t\t\tBufferingInterval: pulumi.Int(600),\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tS3BackupMode: pulumi.String(\"FailedDataOnly\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tRequestConfiguration: \u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs{\n\t\t\t\t\tContentEncoding: pulumi.String(\"GZIP\"),\n\t\t\t\t\tCommonAttributes: kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"testname\"),\n\t\t\t\t\t\t\tValue: pulumi.String(\"testvalue\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"testname2\"),\n\t\t\t\t\t\t\tValue: pulumi.String(\"testvalue2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamHttpEndpointConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"http_endpoint\")\n .httpEndpointConfiguration(FirehoseDeliveryStreamHttpEndpointConfigurationArgs.builder()\n .url(\"https://aws-api.newrelic.com/firehose/v1\")\n .name(\"New Relic\")\n .accessKey(\"my-key\")\n .bufferingSize(15)\n .bufferingInterval(600)\n .roleArn(firehose.arn())\n .s3BackupMode(\"FailedDataOnly\")\n .s3Configuration(FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .requestConfiguration(FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs.builder()\n .contentEncoding(\"GZIP\")\n .commonAttributes( \n FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs.builder()\n .name(\"testname\")\n .value(\"testvalue\")\n .build(),\n FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs.builder()\n .name(\"testname2\")\n .value(\"testvalue2\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: http_endpoint\n httpEndpointConfiguration:\n url: https://aws-api.newrelic.com/firehose/v1\n name: New Relic\n accessKey: my-key\n bufferingSize: 15\n bufferingInterval: 600\n roleArn: ${firehose.arn}\n s3BackupMode: FailedDataOnly\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n requestConfiguration:\n contentEncoding: GZIP\n commonAttributes:\n - name: testname\n value: testvalue\n - name: testname2\n value: testvalue2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Snowflake Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleSnowflakeDestination = new aws.kinesis.FirehoseDeliveryStream(\"example_snowflake_destination\", {\n name: \"example-snowflake-destination\",\n destination: \"snowflake\",\n snowflakeConfiguration: {\n accountUrl: \"https://example.snowflakecomputing.com\",\n bufferingSize: 15,\n bufferingInterval: 600,\n database: \"example-db\",\n privateKey: \"...\",\n roleArn: firehose.arn,\n schema: \"example-schema\",\n table: \"example-table\",\n user: \"example-usr\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_snowflake_destination = aws.kinesis.FirehoseDeliveryStream(\"example_snowflake_destination\",\n name=\"example-snowflake-destination\",\n destination=\"snowflake\",\n snowflake_configuration={\n \"account_url\": \"https://example.snowflakecomputing.com\",\n \"buffering_size\": 15,\n \"buffering_interval\": 600,\n \"database\": \"example-db\",\n \"private_key\": \"...\",\n \"role_arn\": firehose[\"arn\"],\n \"schema\": \"example-schema\",\n \"table\": \"example-table\",\n \"user\": \"example-usr\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleSnowflakeDestination = new Aws.Kinesis.FirehoseDeliveryStream(\"example_snowflake_destination\", new()\n {\n Name = \"example-snowflake-destination\",\n Destination = \"snowflake\",\n SnowflakeConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSnowflakeConfigurationArgs\n {\n AccountUrl = \"https://example.snowflakecomputing.com\",\n BufferingSize = 15,\n BufferingInterval = 600,\n Database = \"example-db\",\n PrivateKey = \"...\",\n RoleArn = firehose.Arn,\n Schema = \"example-schema\",\n Table = \"example-table\",\n User = \"example-usr\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"example_snowflake_destination\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"example-snowflake-destination\"),\n\t\t\tDestination: pulumi.String(\"snowflake\"),\n\t\t\tSnowflakeConfiguration: \u0026kinesis.FirehoseDeliveryStreamSnowflakeConfigurationArgs{\n\t\t\t\tAccountUrl: pulumi.String(\"https://example.snowflakecomputing.com\"),\n\t\t\t\tBufferingSize: pulumi.Int(15),\n\t\t\t\tBufferingInterval: pulumi.Int(600),\n\t\t\t\tDatabase: pulumi.String(\"example-db\"),\n\t\t\t\tPrivateKey: pulumi.String(\"...\"),\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tSchema: pulumi.String(\"example-schema\"),\n\t\t\t\tTable: pulumi.String(\"example-table\"),\n\t\t\t\tUser: pulumi.String(\"example-usr\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSnowflakeConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleSnowflakeDestination = new FirehoseDeliveryStream(\"exampleSnowflakeDestination\", FirehoseDeliveryStreamArgs.builder()\n .name(\"example-snowflake-destination\")\n .destination(\"snowflake\")\n .snowflakeConfiguration(FirehoseDeliveryStreamSnowflakeConfigurationArgs.builder()\n .accountUrl(\"https://example.snowflakecomputing.com\")\n .bufferingSize(15)\n .bufferingInterval(600)\n .database(\"example-db\")\n .privateKey(\"...\")\n .roleArn(firehose.arn())\n .schema(\"example-schema\")\n .table(\"example-table\")\n .user(\"example-usr\")\n .s3Configuration(FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleSnowflakeDestination:\n type: aws:kinesis:FirehoseDeliveryStream\n name: example_snowflake_destination\n properties:\n name: example-snowflake-destination\n destination: snowflake\n snowflakeConfiguration:\n accountUrl: https://example.snowflakecomputing.com\n bufferingSize: 15\n bufferingInterval: 600\n database: example-db\n privateKey: '...'\n roleArn: ${firehose.arn}\n schema: example-schema\n table: example-table\n user: example-usr\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Kinesis Firehose Delivery streams using the stream ARN. For example:\n\n```sh\n$ pulumi import aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream foo arn:aws:firehose:us-east-1:XXX:deliverystream/example\n```\nNote: Import does not work for stream destination `s3`. Consider using `extended_s3` since `s3` destination is deprecated.\n\n", "properties": { "arn": { "type": "string", @@ -324394,7 +324394,7 @@ } }, "aws:kinesis/resourcePolicy:ResourcePolicy": { - "description": "Provides a resource to manage an Amazon Kinesis Streams resource policy.\nUse a resource policy to manage cross-account access to your data streams or consumers.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.kinesis.ResourcePolicy(\"example\", {\n resourceArn: exampleAwsKinesisStream.arn,\n policy: `{\n \"Version\": \"2012-10-17\",\n \"Id\": \"writePolicy\",\n \"Statement\": [{\n \"Sid\": \"writestatement\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"123456789456\"\n },\n \"Action\": [\n \"kinesis:DescribeStreamSummary\",\n \"kinesis:ListShards\",\n \"kinesis:PutRecord\",\n \"kinesis:PutRecords\"\n ],\n \"Resource\": \"${exampleAwsKinesisStream.arn}\"\n }]\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.kinesis.ResourcePolicy(\"example\",\n resource_arn=example_aws_kinesis_stream[\"arn\"],\n policy=f\"\"\"{{\n \"Version\": \"2012-10-17\",\n \"Id\": \"writePolicy\",\n \"Statement\": [{{\n \"Sid\": \"writestatement\",\n \"Effect\": \"Allow\",\n \"Principal\": {{\n \"AWS\": \"123456789456\"\n }},\n \"Action\": [\n \"kinesis:DescribeStreamSummary\",\n \"kinesis:ListShards\",\n \"kinesis:PutRecord\",\n \"kinesis:PutRecords\"\n ],\n \"Resource\": \"{example_aws_kinesis_stream[\"arn\"]}\"\n }}]\n}}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Kinesis.ResourcePolicy(\"example\", new()\n {\n ResourceArn = exampleAwsKinesisStream.Arn,\n Policy = @$\"{{\n \"\"Version\"\": \"\"2012-10-17\"\",\n \"\"Id\"\": \"\"writePolicy\"\",\n \"\"Statement\"\": [{{\n \"\"Sid\"\": \"\"writestatement\"\",\n \"\"Effect\"\": \"\"Allow\"\",\n \"\"Principal\"\": {{\n \"\"AWS\"\": \"\"123456789456\"\"\n }},\n \"\"Action\"\": [\n \"\"kinesis:DescribeStreamSummary\"\",\n \"\"kinesis:ListShards\"\",\n \"\"kinesis:PutRecord\"\",\n \"\"kinesis:PutRecords\"\"\n ],\n \"\"Resource\"\": \"\"{exampleAwsKinesisStream.Arn}\"\"\n }}]\n}}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewResourcePolicy(ctx, \"example\", \u0026kinesis.ResourcePolicyArgs{\n\t\t\tResourceArn: pulumi.Any(exampleAwsKinesisStream.Arn),\n\t\t\tPolicy: pulumi.Sprintf(`{\n \"Version\": \"2012-10-17\",\n \"Id\": \"writePolicy\",\n \"Statement\": [{\n \"Sid\": \"writestatement\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"123456789456\"\n },\n \"Action\": [\n \"kinesis:DescribeStreamSummary\",\n \"kinesis:ListShards\",\n \"kinesis:PutRecord\",\n \"kinesis:PutRecords\"\n ],\n \"Resource\": \"%v\"\n }]\n}\n`, exampleAwsKinesisStream.Arn),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.ResourcePolicy;\nimport com.pulumi.aws.kinesis.ResourcePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ResourcePolicy(\"example\", ResourcePolicyArgs.builder()\n .resourceArn(exampleAwsKinesisStream.arn())\n .policy(\"\"\"\n{\n \"Version\": \"2012-10-17\",\n \"Id\": \"writePolicy\",\n \"Statement\": [{\n \"Sid\": \"writestatement\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"123456789456\"\n },\n \"Action\": [\n \"kinesis:DescribeStreamSummary\",\n \"kinesis:ListShards\",\n \"kinesis:PutRecord\",\n \"kinesis:PutRecords\"\n ],\n \"Resource\": \"%s\"\n }]\n}\n\", exampleAwsKinesisStream.arn()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:kinesis:ResourcePolicy\n properties:\n resourceArn: ${exampleAwsKinesisStream.arn}\n policy: |\n {\n \"Version\": \"2012-10-17\",\n \"Id\": \"writePolicy\",\n \"Statement\": [{\n \"Sid\": \"writestatement\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"123456789456\"\n },\n \"Action\": [\n \"kinesis:DescribeStreamSummary\",\n \"kinesis:ListShards\",\n \"kinesis:PutRecord\",\n \"kinesis:PutRecords\"\n ],\n \"Resource\": \"${exampleAwsKinesisStream.arn}\"\n }]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n- `arn` (String) Amazon Resource Name (ARN) of the Kinesis stream.\n\nUsing `pulumi import`, import Kinesis resource policies using the `resource_arn`. For example:\n\nconsole\n\n% pulumi import aws_kinesis_resource_policy.example arn:aws:kinesis:us-west-2:123456789012:stream/example\n\n", + "description": "Provides a resource to manage an Amazon Kinesis Streams resource policy.\nUse a resource policy to manage cross-account access to your data streams or consumers.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.kinesis.ResourcePolicy(\"example\", {\n resourceArn: exampleAwsKinesisStream.arn,\n policy: `{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Id\\\": \\\"writePolicy\\\",\n \\\"Statement\\\": [{\n \\\"Sid\\\": \\\"writestatement\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Principal\\\": {\n \\\"AWS\\\": \\\"123456789456\\\"\n },\n \\\"Action\\\": [\n \\\"kinesis:DescribeStreamSummary\\\",\n \\\"kinesis:ListShards\\\",\n \\\"kinesis:PutRecord\\\",\n \\\"kinesis:PutRecords\\\"\n ],\n \\\"Resource\\\": \\\"${exampleAwsKinesisStream.arn}\\\"\n }]\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.kinesis.ResourcePolicy(\"example\",\n resource_arn=example_aws_kinesis_stream[\"arn\"],\n policy=f\"\"\"{{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Id\\\": \\\"writePolicy\\\",\n \\\"Statement\\\": [{{\n \\\"Sid\\\": \\\"writestatement\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Principal\\\": {{\n \\\"AWS\\\": \\\"123456789456\\\"\n }},\n \\\"Action\\\": [\n \\\"kinesis:DescribeStreamSummary\\\",\n \\\"kinesis:ListShards\\\",\n \\\"kinesis:PutRecord\\\",\n \\\"kinesis:PutRecords\\\"\n ],\n \\\"Resource\\\": \\\"{example_aws_kinesis_stream[\"arn\"]}\\\"\n }}]\n}}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Kinesis.ResourcePolicy(\"example\", new()\n {\n ResourceArn = exampleAwsKinesisStream.Arn,\n Policy = @$\"{{\n \\\"\"Version\\\"\": \\\"\"2012-10-17\\\"\",\n \\\"\"Id\\\"\": \\\"\"writePolicy\\\"\",\n \\\"\"Statement\\\"\": [{{\n \\\"\"Sid\\\"\": \\\"\"writestatement\\\"\",\n \\\"\"Effect\\\"\": \\\"\"Allow\\\"\",\n \\\"\"Principal\\\"\": {{\n \\\"\"AWS\\\"\": \\\"\"123456789456\\\"\"\n }},\n \\\"\"Action\\\"\": [\n \\\"\"kinesis:DescribeStreamSummary\\\"\",\n \\\"\"kinesis:ListShards\\\"\",\n \\\"\"kinesis:PutRecord\\\"\",\n \\\"\"kinesis:PutRecords\\\"\"\n ],\n \\\"\"Resource\\\"\": \\\"\"{exampleAwsKinesisStream.Arn}\\\"\"\n }}]\n}}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewResourcePolicy(ctx, \"example\", \u0026kinesis.ResourcePolicyArgs{\n\t\t\tResourceArn: pulumi.Any(exampleAwsKinesisStream.Arn),\n\t\t\tPolicy: pulumi.Sprintf(`{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Id\\\": \\\"writePolicy\\\",\n \\\"Statement\\\": [{\n \\\"Sid\\\": \\\"writestatement\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Principal\\\": {\n \\\"AWS\\\": \\\"123456789456\\\"\n },\n \\\"Action\\\": [\n \\\"kinesis:DescribeStreamSummary\\\",\n \\\"kinesis:ListShards\\\",\n \\\"kinesis:PutRecord\\\",\n \\\"kinesis:PutRecords\\\"\n ],\n \\\"Resource\\\": \\\"%v\\\"\n }]\n}\n`, exampleAwsKinesisStream.Arn),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.ResourcePolicy;\nimport com.pulumi.aws.kinesis.ResourcePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ResourcePolicy(\"example\", ResourcePolicyArgs.builder()\n .resourceArn(exampleAwsKinesisStream.arn())\n .policy(\"\"\"\n{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Id\\\": \\\"writePolicy\\\",\n \\\"Statement\\\": [{\n \\\"Sid\\\": \\\"writestatement\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Principal\\\": {\n \\\"AWS\\\": \\\"123456789456\\\"\n },\n \\\"Action\\\": [\n \\\"kinesis:DescribeStreamSummary\\\",\n \\\"kinesis:ListShards\\\",\n \\\"kinesis:PutRecord\\\",\n \\\"kinesis:PutRecords\\\"\n ],\n \\\"Resource\\\": \\\"%s\\\"\n }]\n}\n\", exampleAwsKinesisStream.arn()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:kinesis:ResourcePolicy\n properties:\n resourceArn: ${exampleAwsKinesisStream.arn}\n policy: |\n {\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Id\\\": \\\"writePolicy\\\",\n \\\"Statement\\\": [{\n \\\"Sid\\\": \\\"writestatement\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Principal\\\": {\n \\\"AWS\\\": \\\"123456789456\\\"\n },\n \\\"Action\\\": [\n \\\"kinesis:DescribeStreamSummary\\\",\n \\\"kinesis:ListShards\\\",\n \\\"kinesis:PutRecord\\\",\n \\\"kinesis:PutRecords\\\"\n ],\n \\\"Resource\\\": \\\"${exampleAwsKinesisStream.arn}\\\"\n }]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n- `arn` (String) Amazon Resource Name (ARN) of the Kinesis stream.\n\nUsing `pulumi import`, import Kinesis resource policies using the `resource_arn`. For example:\n\nconsole\n\n% pulumi import aws_kinesis_resource_policy.example arn:aws:kinesis:us-west-2:123456789012:stream/example\n\n", "properties": { "policy": { "type": "string", @@ -325311,7 +325311,7 @@ } }, "aws:kms/ciphertext:Ciphertext": { - "description": "The KMS ciphertext resource allows you to encrypt plaintext into ciphertext\nby using an AWS KMS customer master key. The value returned by this resource\nis stable across every apply. For a changing ciphertext value each apply, see\nthe \u003cspan pulumi-lang-nodejs=\"`aws.kms.Ciphertext`\" pulumi-lang-dotnet=\"`aws.kms.Ciphertext`\" pulumi-lang-go=\"`kms.Ciphertext`\" pulumi-lang-python=\"`kms.Ciphertext`\" pulumi-lang-yaml=\"`aws.kms.Ciphertext`\" pulumi-lang-java=\"`aws.kms.Ciphertext`\"\u003e`aws.kms.Ciphertext`\u003c/span\u003e data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst oauthConfig = new aws.kms.Key(\"oauth_config\", {\n description: \"oauth config\",\n isEnabled: true,\n});\nconst oauth = new aws.kms.Ciphertext(\"oauth\", {\n keyId: oauthConfig.keyId,\n plaintext: `{\n \"client_id\": \"e587dbae22222f55da22\",\n \"client_secret\": \"8289575d00000ace55e1815ec13673955721b8a5\"\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\noauth_config = aws.kms.Key(\"oauth_config\",\n description=\"oauth config\",\n is_enabled=True)\noauth = aws.kms.Ciphertext(\"oauth\",\n key_id=oauth_config.key_id,\n plaintext=\"\"\"{\n \"client_id\": \"e587dbae22222f55da22\",\n \"client_secret\": \"8289575d00000ace55e1815ec13673955721b8a5\"\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var oauthConfig = new Aws.Kms.Key(\"oauth_config\", new()\n {\n Description = \"oauth config\",\n IsEnabled = true,\n });\n\n var oauth = new Aws.Kms.Ciphertext(\"oauth\", new()\n {\n KeyId = oauthConfig.KeyId,\n Plaintext = @\"{\n \"\"client_id\"\": \"\"e587dbae22222f55da22\"\",\n \"\"client_secret\"\": \"\"8289575d00000ace55e1815ec13673955721b8a5\"\"\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\toauthConfig, err := kms.NewKey(ctx, \"oauth_config\", \u0026kms.KeyArgs{\n\t\t\tDescription: pulumi.String(\"oauth config\"),\n\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCiphertext(ctx, \"oauth\", \u0026kms.CiphertextArgs{\n\t\t\tKeyId: oauthConfig.KeyId,\n\t\t\tPlaintext: pulumi.String(\"{\\n \\\"client_id\\\": \\\"e587dbae22222f55da22\\\",\\n \\\"client_secret\\\": \\\"8289575d00000ace55e1815ec13673955721b8a5\\\"\\n}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kms.Key;\nimport com.pulumi.aws.kms.KeyArgs;\nimport com.pulumi.aws.kms.Ciphertext;\nimport com.pulumi.aws.kms.CiphertextArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var oauthConfig = new Key(\"oauthConfig\", KeyArgs.builder()\n .description(\"oauth config\")\n .isEnabled(true)\n .build());\n\n var oauth = new Ciphertext(\"oauth\", CiphertextArgs.builder()\n .keyId(oauthConfig.keyId())\n .plaintext(\"\"\"\n{\n \"client_id\": \"e587dbae22222f55da22\",\n \"client_secret\": \"8289575d00000ace55e1815ec13673955721b8a5\"\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n oauthConfig:\n type: aws:kms:Key\n name: oauth_config\n properties:\n description: oauth config\n isEnabled: true\n oauth:\n type: aws:kms:Ciphertext\n properties:\n keyId: ${oauthConfig.keyId}\n plaintext: |\n {\n \"client_id\": \"e587dbae22222f55da22\",\n \"client_secret\": \"8289575d00000ace55e1815ec13673955721b8a5\"\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "The KMS ciphertext resource allows you to encrypt plaintext into ciphertext\nby using an AWS KMS customer master key. The value returned by this resource\nis stable across every apply. For a changing ciphertext value each apply, see\nthe \u003cspan pulumi-lang-nodejs=\"`aws.kms.Ciphertext`\" pulumi-lang-dotnet=\"`aws.kms.Ciphertext`\" pulumi-lang-go=\"`kms.Ciphertext`\" pulumi-lang-python=\"`kms.Ciphertext`\" pulumi-lang-yaml=\"`aws.kms.Ciphertext`\" pulumi-lang-java=\"`aws.kms.Ciphertext`\"\u003e`aws.kms.Ciphertext`\u003c/span\u003e data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst oauthConfig = new aws.kms.Key(\"oauth_config\", {\n description: \"oauth config\",\n isEnabled: true,\n});\nconst oauth = new aws.kms.Ciphertext(\"oauth\", {\n keyId: oauthConfig.keyId,\n plaintext: `{\n \\\\\"client_id\\\\\": \\\\\"e587dbae22222f55da22\\\\\",\n \\\\\"client_secret\\\\\": \\\\\"8289575d00000ace55e1815ec13673955721b8a5\\\\\"\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\noauth_config = aws.kms.Key(\"oauth_config\",\n description=\"oauth config\",\n is_enabled=True)\noauth = aws.kms.Ciphertext(\"oauth\",\n key_id=oauth_config.key_id,\n plaintext=\"\"\"{\n \\\"client_id\\\": \\\"e587dbae22222f55da22\\\",\n \\\"client_secret\\\": \\\"8289575d00000ace55e1815ec13673955721b8a5\\\"\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var oauthConfig = new Aws.Kms.Key(\"oauth_config\", new()\n {\n Description = \"oauth config\",\n IsEnabled = true,\n });\n\n var oauth = new Aws.Kms.Ciphertext(\"oauth\", new()\n {\n KeyId = oauthConfig.KeyId,\n Plaintext = @\"{\n \\\"\"client_id\\\"\": \\\"\"e587dbae22222f55da22\\\"\",\n \\\"\"client_secret\\\"\": \\\"\"8289575d00000ace55e1815ec13673955721b8a5\\\"\"\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\toauthConfig, err := kms.NewKey(ctx, \"oauth_config\", \u0026kms.KeyArgs{\n\t\t\tDescription: pulumi.String(\"oauth config\"),\n\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCiphertext(ctx, \"oauth\", \u0026kms.CiphertextArgs{\n\t\t\tKeyId: oauthConfig.KeyId,\n\t\t\tPlaintext: pulumi.String(\"{\\n \\\\\\\"client_id\\\\\\\": \\\\\\\"e587dbae22222f55da22\\\\\\\",\\n \\\\\\\"client_secret\\\\\\\": \\\\\\\"8289575d00000ace55e1815ec13673955721b8a5\\\\\\\"\\n}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kms.Key;\nimport com.pulumi.aws.kms.KeyArgs;\nimport com.pulumi.aws.kms.Ciphertext;\nimport com.pulumi.aws.kms.CiphertextArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var oauthConfig = new Key(\"oauthConfig\", KeyArgs.builder()\n .description(\"oauth config\")\n .isEnabled(true)\n .build());\n\n var oauth = new Ciphertext(\"oauth\", CiphertextArgs.builder()\n .keyId(oauthConfig.keyId())\n .plaintext(\"\"\"\n{\n \\\"client_id\\\": \\\"e587dbae22222f55da22\\\",\n \\\"client_secret\\\": \\\"8289575d00000ace55e1815ec13673955721b8a5\\\"\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n oauthConfig:\n type: aws:kms:Key\n name: oauth_config\n properties:\n description: oauth config\n isEnabled: true\n oauth:\n type: aws:kms:Ciphertext\n properties:\n keyId: ${oauthConfig.keyId}\n plaintext: |\n {\n \\\"client_id\\\": \\\"e587dbae22222f55da22\\\",\n \\\"client_secret\\\": \\\"8289575d00000ace55e1815ec13673955721b8a5\\\"\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "properties": { "ciphertextBlob": { "type": "string", @@ -329862,7 +329862,7 @@ } }, "aws:lambda/invocation:Invocation": { - "description": "Manages an AWS Lambda Function invocation. Use this resource to invoke a Lambda function with the [RequestResponse](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_RequestSyntax) invocation type.\n\n\u003e **Note:** By default this resource _only_ invokes the function when the arguments call for a create or replace. After an initial invocation on _apply_, if the arguments do not change, a subsequent _apply_ does not invoke the function again. To dynamically invoke the function, see the \u003cspan pulumi-lang-nodejs=\"`triggers`\" pulumi-lang-dotnet=\"`Triggers`\" pulumi-lang-go=\"`triggers`\" pulumi-lang-python=\"`triggers`\" pulumi-lang-yaml=\"`triggers`\" pulumi-lang-java=\"`triggers`\"\u003e`triggers`\u003c/span\u003e example below. To always invoke a function on each _apply_, see the \u003cspan pulumi-lang-nodejs=\"`aws.lambda.Invocation`\" pulumi-lang-dotnet=\"`aws.lambda.Invocation`\" pulumi-lang-go=\"`lambda.Invocation`\" pulumi-lang-python=\"`lambda.Invocation`\" pulumi-lang-yaml=\"`aws.lambda.Invocation`\" pulumi-lang-java=\"`aws.lambda.Invocation`\"\u003e`aws.lambda.Invocation`\u003c/span\u003e data source. To invoke the Lambda function when the Pulumi resource is updated and deleted, see the CRUD Lifecycle Management example below.\n\n\u003e **Note:** If you get a `KMSAccessDeniedException: Lambda was unable to decrypt the environment variables because KMS access was denied` error when invoking a Lambda function with environment variables, the IAM role associated with the function may have been deleted and recreated after the function was created. You can fix the problem two ways: 1) updating the function's role to another role and then updating it back again to the recreated role. (When you create a function, Lambda grants permissions on the KMS key to the function's IAM role. If the IAM role is recreated, the grant is no longer valid. Changing the function's role or recreating the function causes Lambda to update the grant.)\n\n## Example Usage\n\n### Dynamic Invocation with Triggers\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new aws.lambda.Invocation(\"example\", {\n functionName: exampleAwsLambdaFunction.functionName,\n triggers: {\n function_version: exampleAwsLambdaFunction.version,\n config_hash: std.sha256Output({\n input: JSON.stringify({\n environment: environment,\n timestamp: std.timestamp({}).then(invoke =\u003e invoke.result),\n }),\n }).apply(invoke =\u003e invoke.result),\n },\n input: JSON.stringify({\n operation: \"process_data\",\n environment: environment,\n batch_id: batchId.result,\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.lambda_.Invocation(\"example\",\n function_name=example_aws_lambda_function[\"functionName\"],\n triggers={\n \"function_version\": example_aws_lambda_function[\"version\"],\n \"config_hash\": std.sha256_output(input=json.dumps({\n \"environment\": environment,\n \"timestamp\": std.timestamp().result,\n })).apply(lambda invoke: invoke.result),\n },\n input=json.dumps({\n \"operation\": \"process_data\",\n \"environment\": environment,\n \"batch_id\": batch_id[\"result\"],\n }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Lambda.Invocation(\"example\", new()\n {\n FunctionName = exampleAwsLambdaFunction.FunctionName,\n Triggers = \n {\n { \"function_version\", exampleAwsLambdaFunction.Version },\n { \"config_hash\", Std.Sha256.Invoke(new()\n {\n Input = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"environment\"] = environment,\n [\"timestamp\"] = Std.Timestamp.Invoke().Apply(invoke =\u003e invoke.Result),\n }),\n }).Apply(invoke =\u003e invoke.Result) },\n },\n Input = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"operation\"] = \"process_data\",\n [\"environment\"] = environment,\n [\"batch_id\"] = batchId.Result,\n }),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"environment\": environment,\n\t\t\t\"timestamp\": std.Timestamp(ctx, map[string]interface{}{}, nil).Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"operation\": \"process_data\",\n\t\t\t\"environment\": environment,\n\t\t\t\"batch_id\": batchId.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\t_, err = lambda.NewInvocation(ctx, \"example\", \u0026lambda.InvocationArgs{\n\t\t\tFunctionName: pulumi.Any(exampleAwsLambdaFunction.FunctionName),\n\t\t\tTriggers: pulumi.StringMap{\n\t\t\t\t\"function_version\": pulumi.Any(exampleAwsLambdaFunction.Version),\n\t\t\t\t\"config_hash\": pulumi.String(std.Sha256Output(ctx, std.Sha256OutputArgs{\n\t\t\t\t\tInput: pulumi.String(json0),\n\t\t\t\t}, nil).ApplyT(func(invoke std.Sha256Result) (*string, error) {\n\t\t\t\t\treturn invoke.Result, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\t},\n\t\t\tInput: pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lambda.Invocation;\nimport com.pulumi.aws.lambda.InvocationArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.TimestampArgs;\nimport com.pulumi.std.inputs.Sha256Args;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Invocation(\"example\", InvocationArgs.builder()\n .functionName(exampleAwsLambdaFunction.functionName())\n .triggers(Map.ofEntries(\n Map.entry(\"function_version\", exampleAwsLambdaFunction.version()),\n Map.entry(\"config_hash\", StdFunctions.sha256(Sha256Args.builder()\n .input(serializeJson(\n jsonObject(\n jsonProperty(\"environment\", environment),\n jsonProperty(\"timestamp\", StdFunctions.timestamp(TimestampArgs.builder()\n .build()).result())\n )))\n .build()).applyValue(_invoke -\u003e _invoke.result()))\n ))\n .input(serializeJson(\n jsonObject(\n jsonProperty(\"operation\", \"process_data\"),\n jsonProperty(\"environment\", environment),\n jsonProperty(\"batch_id\", batchId.result())\n )))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:lambda:Invocation\n properties:\n functionName: ${exampleAwsLambdaFunction.functionName}\n triggers:\n function_version: ${exampleAwsLambdaFunction.version}\n config_hash:\n fn::invoke:\n function: std:sha256\n arguments:\n input:\n fn::toJSON:\n environment: ${environment}\n timestamp:\n fn::invoke:\n function: std:timestamp\n arguments: {}\n return: result\n return: result\n input:\n fn::toJSON:\n operation: process_data\n environment: ${environment}\n batch_id: ${batchId.result}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### CRUD Lifecycle Management\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.lambda.Invocation(\"example\", {\n functionName: exampleAwsLambdaFunction.functionName,\n input: JSON.stringify({\n resource_name: \"database_setup\",\n database_url: exampleAwsDbInstance.endpoint,\n credentials: {\n username: dbUsername,\n password: dbPassword,\n },\n }),\n lifecycleScope: \"CRUD\",\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nexample = aws.lambda_.Invocation(\"example\",\n function_name=example_aws_lambda_function[\"functionName\"],\n input=json.dumps({\n \"resource_name\": \"database_setup\",\n \"database_url\": example_aws_db_instance[\"endpoint\"],\n \"credentials\": {\n \"username\": db_username,\n \"password\": db_password,\n },\n }),\n lifecycle_scope=\"CRUD\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Lambda.Invocation(\"example\", new()\n {\n FunctionName = exampleAwsLambdaFunction.FunctionName,\n Input = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"resource_name\"] = \"database_setup\",\n [\"database_url\"] = exampleAwsDbInstance.Endpoint,\n [\"credentials\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"username\"] = dbUsername,\n [\"password\"] = dbPassword,\n },\n }),\n LifecycleScope = \"CRUD\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"resource_name\": \"database_setup\",\n\t\t\t\"database_url\": exampleAwsDbInstance.Endpoint,\n\t\t\t\"credentials\": map[string]interface{}{\n\t\t\t\t\"username\": dbUsername,\n\t\t\t\t\"password\": dbPassword,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = lambda.NewInvocation(ctx, \"example\", \u0026lambda.InvocationArgs{\n\t\t\tFunctionName: pulumi.Any(exampleAwsLambdaFunction.FunctionName),\n\t\t\tInput: pulumi.String(json0),\n\t\t\tLifecycleScope: pulumi.String(\"CRUD\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lambda.Invocation;\nimport com.pulumi.aws.lambda.InvocationArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Invocation(\"example\", InvocationArgs.builder()\n .functionName(exampleAwsLambdaFunction.functionName())\n .input(serializeJson(\n jsonObject(\n jsonProperty(\"resource_name\", \"database_setup\"),\n jsonProperty(\"database_url\", exampleAwsDbInstance.endpoint()),\n jsonProperty(\"credentials\", jsonObject(\n jsonProperty(\"username\", dbUsername),\n jsonProperty(\"password\", dbPassword)\n ))\n )))\n .lifecycleScope(\"CRUD\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:lambda:Invocation\n properties:\n functionName: ${exampleAwsLambdaFunction.functionName}\n input:\n fn::toJSON:\n resource_name: database_setup\n database_url: ${exampleAwsDbInstance.endpoint}\n credentials:\n username: ${dbUsername}\n password: ${dbPassword}\n lifecycleScope: CRUD\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e **Note:** \u003cspan pulumi-lang-nodejs=\"`lifecycleScope \" pulumi-lang-dotnet=\"`LifecycleScope \" pulumi-lang-go=\"`lifecycleScope \" pulumi-lang-python=\"`lifecycle_scope \" pulumi-lang-yaml=\"`lifecycleScope \" pulumi-lang-java=\"`lifecycleScope \"\u003e`lifecycle_scope \u003c/span\u003e= \"CRUD\"` will inject a key \u003cspan pulumi-lang-nodejs=\"`tf`\" pulumi-lang-dotnet=\"`Tf`\" pulumi-lang-go=\"`tf`\" pulumi-lang-python=\"`tf`\" pulumi-lang-yaml=\"`tf`\" pulumi-lang-java=\"`tf`\"\u003e`tf`\u003c/span\u003e in the input event to pass lifecycle information! This allows the Lambda function to handle different lifecycle transitions uniquely. If you need to use a key \u003cspan pulumi-lang-nodejs=\"`tf`\" pulumi-lang-dotnet=\"`Tf`\" pulumi-lang-go=\"`tf`\" pulumi-lang-python=\"`tf`\" pulumi-lang-yaml=\"`tf`\" pulumi-lang-java=\"`tf`\"\u003e`tf`\u003c/span\u003e in your own input JSON, the default key name can be overridden with the \u003cspan pulumi-lang-nodejs=\"`pulumiKey`\" pulumi-lang-dotnet=\"`PulumiKey`\" pulumi-lang-go=\"`pulumiKey`\" pulumi-lang-python=\"`pulumi_key`\" pulumi-lang-yaml=\"`pulumiKey`\" pulumi-lang-java=\"`pulumiKey`\"\u003e`pulumi_key`\u003c/span\u003e argument.\n\nThe lifecycle key gets added with subkeys:\n\n* \u003cspan pulumi-lang-nodejs=\"`action`\" pulumi-lang-dotnet=\"`Action`\" pulumi-lang-go=\"`action`\" pulumi-lang-python=\"`action`\" pulumi-lang-yaml=\"`action`\" pulumi-lang-java=\"`action`\"\u003e`action`\u003c/span\u003e - Action Pulumi performs on the resource. Values are \u003cspan pulumi-lang-nodejs=\"`create`\" pulumi-lang-dotnet=\"`Create`\" pulumi-lang-go=\"`create`\" pulumi-lang-python=\"`create`\" pulumi-lang-yaml=\"`create`\" pulumi-lang-java=\"`create`\"\u003e`create`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`update`\" pulumi-lang-dotnet=\"`Update`\" pulumi-lang-go=\"`update`\" pulumi-lang-python=\"`update`\" pulumi-lang-yaml=\"`update`\" pulumi-lang-java=\"`update`\"\u003e`update`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`delete`\" pulumi-lang-dotnet=\"`Delete`\" pulumi-lang-go=\"`delete`\" pulumi-lang-python=\"`delete`\" pulumi-lang-yaml=\"`delete`\" pulumi-lang-java=\"`delete`\"\u003e`delete`\u003c/span\u003e.\n* \u003cspan pulumi-lang-nodejs=\"`prevInput`\" pulumi-lang-dotnet=\"`PrevInput`\" pulumi-lang-go=\"`prevInput`\" pulumi-lang-python=\"`prev_input`\" pulumi-lang-yaml=\"`prevInput`\" pulumi-lang-java=\"`prevInput`\"\u003e`prev_input`\u003c/span\u003e - Input JSON payload from the previous invocation. This can be used to handle update and delete events.\n\nWhen the resource from the CRUD example above is created, the Lambda will receive the following JSON payload:\n\n```json\n{\n \"resource_name\": \"database_setup\",\n \"database_url\": \"mydb.cluster-xyz.us-west-2.rds.amazonaws.com:5432\",\n \"credentials\": {\n \"username\": \"admin\",\n \"password\": \"secret123\"\n },\n \"tf\": {\n \"action\": \"create\",\n \"prev_input\": null\n }\n}\n```\n\nIf the \u003cspan pulumi-lang-nodejs=\"`databaseUrl`\" pulumi-lang-dotnet=\"`DatabaseUrl`\" pulumi-lang-go=\"`databaseUrl`\" pulumi-lang-python=\"`database_url`\" pulumi-lang-yaml=\"`databaseUrl`\" pulumi-lang-java=\"`databaseUrl`\"\u003e`database_url`\u003c/span\u003e changes, the Lambda will be invoked again with:\n\n```json\n{\n \"resource_name\": \"database_setup\",\n \"database_url\": \"mydb-new.cluster-abc.us-west-2.rds.amazonaws.com:5432\",\n \"credentials\": {\n \"username\": \"admin\",\n \"password\": \"secret123\"\n },\n \"tf\": {\n \"action\": \"update\",\n \"prev_input\": {\n \"resource_name\": \"database_setup\",\n \"database_url\": \"mydb.cluster-xyz.us-west-2.rds.amazonaws.com:5432\",\n \"credentials\": {\n \"username\": \"admin\",\n \"password\": \"secret123\"\n }\n }\n }\n}\n```\n\nWhen the invocation resource is removed, the final invocation will have:\n\n```json\n{\n \"resource_name\": \"database_setup\",\n \"database_url\": \"mydb-new.cluster-abc.us-west-2.rds.amazonaws.com:5432\",\n \"credentials\": {\n \"username\": \"admin\",\n \"password\": \"secret123\"\n },\n \"tf\": {\n \"action\": \"delete\",\n \"prev_input\": {\n \"resource_name\": \"database_setup\",\n \"database_url\": \"mydb-new.cluster-abc.us-west-2.rds.amazonaws.com:5432\",\n \"credentials\": {\n \"username\": \"admin\",\n \"password\": \"secret123\"\n }\n }\n }\n}\n```\n", + "description": "Manages an AWS Lambda Function invocation. Use this resource to invoke a Lambda function with the [RequestResponse](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_RequestSyntax) invocation type.\n\n\u003e **Note:** By default this resource _only_ invokes the function when the arguments call for a create or replace. After an initial invocation on _apply_, if the arguments do not change, a subsequent _apply_ does not invoke the function again. To dynamically invoke the function, see the \u003cspan pulumi-lang-nodejs=\"`triggers`\" pulumi-lang-dotnet=\"`Triggers`\" pulumi-lang-go=\"`triggers`\" pulumi-lang-python=\"`triggers`\" pulumi-lang-yaml=\"`triggers`\" pulumi-lang-java=\"`triggers`\"\u003e`triggers`\u003c/span\u003e example below. To always invoke a function on each _apply_, see the \u003cspan pulumi-lang-nodejs=\"`aws.lambda.Invocation`\" pulumi-lang-dotnet=\"`aws.lambda.Invocation`\" pulumi-lang-go=\"`lambda.Invocation`\" pulumi-lang-python=\"`lambda.Invocation`\" pulumi-lang-yaml=\"`aws.lambda.Invocation`\" pulumi-lang-java=\"`aws.lambda.Invocation`\"\u003e`aws.lambda.Invocation`\u003c/span\u003e data source. To invoke the Lambda function when the Pulumi resource is updated and deleted, see the CRUD Lifecycle Management example below.\n\n\u003e **Note:** If you get a `KMSAccessDeniedException: Lambda was unable to decrypt the environment variables because KMS access was denied` error when invoking a Lambda function with environment variables, the IAM role associated with the function may have been deleted and recreated after the function was created. You can fix the problem two ways: 1) updating the function's role to another role and then updating it back again to the recreated role. (When you create a function, Lambda grants permissions on the KMS key to the function's IAM role. If the IAM role is recreated, the grant is no longer valid. Changing the function's role or recreating the function causes Lambda to update the grant.)\n\n## Example Usage\n\n### Basic Invocation\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\n// Lambda function to invoke\nconst example = new aws.lambda.Function(\"example\", {\n code: new pulumi.asset.FileArchive(\"function.zip\"),\n name: \"data_processor\",\n role: lambdaRole.arn,\n handler: \"index.handler\",\n runtime: aws.lambda.Runtime.Python3d12,\n});\n// Invoke the function once during resource creation\nconst exampleInvocation = new aws.lambda.Invocation(\"example\", {\n functionName: example.name,\n input: JSON.stringify({\n operation: \"initialize\",\n config: {\n environment: \"production\",\n debug: false,\n },\n }),\n});\nexport const initializationResult = std.jsondecodeOutput({\n input: exampleInvocation.result,\n}).apply(invoke =\u003e invoke.result?.status);\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\nimport pulumi_std as std\n\n# Lambda function to invoke\nexample = aws.lambda_.Function(\"example\",\n code=pulumi.FileArchive(\"function.zip\"),\n name=\"data_processor\",\n role=lambda_role[\"arn\"],\n handler=\"index.handler\",\n runtime=aws.lambda_.Runtime.PYTHON3D12)\n# Invoke the function once during resource creation\nexample_invocation = aws.lambda_.Invocation(\"example\",\n function_name=example.name,\n input=json.dumps({\n \"operation\": \"initialize\",\n \"config\": {\n \"environment\": \"production\",\n \"debug\": False,\n },\n }))\npulumi.export(\"initializationResult\", std.jsondecode_output(input=example_invocation.result).apply(lambda invoke: invoke.result[\"status\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Lambda function to invoke\n var example = new Aws.Lambda.Function(\"example\", new()\n {\n Code = new FileArchive(\"function.zip\"),\n Name = \"data_processor\",\n Role = lambdaRole.Arn,\n Handler = \"index.handler\",\n Runtime = Aws.Lambda.Runtime.Python3d12,\n });\n\n // Invoke the function once during resource creation\n var exampleInvocation = new Aws.Lambda.Invocation(\"example\", new()\n {\n FunctionName = example.Name,\n Input = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"operation\"] = \"initialize\",\n [\"config\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"environment\"] = \"production\",\n [\"debug\"] = false,\n },\n }),\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"initializationResult\"] = Std.Jsondecode.Invoke(new()\n {\n Input = exampleInvocation.Result,\n }).Apply(invoke =\u003e invoke.Result?.Status),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\n// Lambda function to invoke\nexample, err := lambda.NewFunction(ctx, \"example\", \u0026lambda.FunctionArgs{\nCode: pulumi.NewFileArchive(\"function.zip\"),\nName: pulumi.String(\"data_processor\"),\nRole: pulumi.Any(lambdaRole.Arn),\nHandler: pulumi.String(\"index.handler\"),\nRuntime: pulumi.String(lambda.RuntimePython3d12),\n})\nif err != nil {\nreturn err\n}\ntmpJSON0, err := json.Marshal(map[string]interface{}{\n\"operation\": \"initialize\",\n\"config\": map[string]interface{}{\n\"environment\": \"production\",\n\"debug\": false,\n},\n})\nif err != nil {\nreturn err\n}\njson0 := string(tmpJSON0)\n// Invoke the function once during resource creation\nexampleInvocation, err := lambda.NewInvocation(ctx, \"example\", \u0026lambda.InvocationArgs{\nFunctionName: example.Name,\nInput: pulumi.String(json0),\n})\nif err != nil {\nreturn err\n}\nctx.Export(\"initializationResult\", std.JsondecodeOutput(ctx, std.JsondecodeOutputArgs{\nInput: exampleInvocation.Result,\n}, nil).ApplyT(func(invoke std.JsondecodeResult) (*interface{}, error) {\nreturn invoke.Result.Status, nil\n}).(pulumi.Interface{}PtrOutput))\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lambda.Function;\nimport com.pulumi.aws.lambda.FunctionArgs;\nimport com.pulumi.aws.lambda.Invocation;\nimport com.pulumi.aws.lambda.InvocationArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.JsondecodeArgs;\nimport com.pulumi.asset.FileArchive;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Lambda function to invoke\n var example = new Function(\"example\", FunctionArgs.builder()\n .code(new FileArchive(\"function.zip\"))\n .name(\"data_processor\")\n .role(lambdaRole.arn())\n .handler(\"index.handler\")\n .runtime(\"python3.12\")\n .build());\n\n // Invoke the function once during resource creation\n var exampleInvocation = new Invocation(\"exampleInvocation\", InvocationArgs.builder()\n .functionName(example.name())\n .input(serializeJson(\n jsonObject(\n jsonProperty(\"operation\", \"initialize\"),\n jsonProperty(\"config\", jsonObject(\n jsonProperty(\"environment\", \"production\"),\n jsonProperty(\"debug\", false)\n ))\n )))\n .build());\n\n ctx.export(\"initializationResult\", StdFunctions.jsondecode(JsondecodeArgs.builder()\n .input(exampleInvocation.result())\n .build()).applyValue(_invoke -\u003e _invoke.result().status()));\n }\n}\n```\n```yaml\nresources:\n # Lambda function to invoke\n example:\n type: aws:lambda:Function\n properties:\n code:\n fn::FileArchive: function.zip\n name: data_processor\n role: ${lambdaRole.arn}\n handler: index.handler\n runtime: python3.12\n # Invoke the function once during resource creation\n exampleInvocation:\n type: aws:lambda:Invocation\n name: example\n properties:\n functionName: ${example.name}\n input:\n fn::toJSON:\n operation: initialize\n config:\n environment: production\n debug: false\noutputs:\n # Use the result in other resources\n initializationResult:\n fn::invoke:\n function: std:jsondecode\n arguments:\n input: ${exampleInvocation.result}\n return: result.status\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Dynamic Invocation with Triggers\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new aws.lambda.Invocation(\"example\", {\n functionName: exampleAwsLambdaFunction.functionName,\n triggers: {\n function_version: exampleAwsLambdaFunction.version,\n config_hash: std.sha256Output({\n input: JSON.stringify({\n environment: environment,\n timestamp: std.timestamp({}).then(invoke =\u003e invoke.result),\n }),\n }).apply(invoke =\u003e invoke.result),\n },\n input: JSON.stringify({\n operation: \"process_data\",\n environment: environment,\n batch_id: batchId.result,\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.lambda_.Invocation(\"example\",\n function_name=example_aws_lambda_function[\"functionName\"],\n triggers={\n \"function_version\": example_aws_lambda_function[\"version\"],\n \"config_hash\": std.sha256_output(input=json.dumps({\n \"environment\": environment,\n \"timestamp\": std.timestamp().result,\n })).apply(lambda invoke: invoke.result),\n },\n input=json.dumps({\n \"operation\": \"process_data\",\n \"environment\": environment,\n \"batch_id\": batch_id[\"result\"],\n }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Lambda.Invocation(\"example\", new()\n {\n FunctionName = exampleAwsLambdaFunction.FunctionName,\n Triggers = \n {\n { \"function_version\", exampleAwsLambdaFunction.Version },\n { \"config_hash\", Std.Sha256.Invoke(new()\n {\n Input = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"environment\"] = environment,\n [\"timestamp\"] = Std.Timestamp.Invoke().Apply(invoke =\u003e invoke.Result),\n }),\n }).Apply(invoke =\u003e invoke.Result) },\n },\n Input = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"operation\"] = \"process_data\",\n [\"environment\"] = environment,\n [\"batch_id\"] = batchId.Result,\n }),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"environment\": environment,\n\t\t\t\"timestamp\": std.Timestamp(ctx, map[string]interface{}{}, nil).Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"operation\": \"process_data\",\n\t\t\t\"environment\": environment,\n\t\t\t\"batch_id\": batchId.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\t_, err = lambda.NewInvocation(ctx, \"example\", \u0026lambda.InvocationArgs{\n\t\t\tFunctionName: pulumi.Any(exampleAwsLambdaFunction.FunctionName),\n\t\t\tTriggers: pulumi.StringMap{\n\t\t\t\t\"function_version\": pulumi.Any(exampleAwsLambdaFunction.Version),\n\t\t\t\t\"config_hash\": pulumi.String(std.Sha256Output(ctx, std.Sha256OutputArgs{\n\t\t\t\t\tInput: pulumi.String(json0),\n\t\t\t\t}, nil).ApplyT(func(invoke std.Sha256Result) (*string, error) {\n\t\t\t\t\treturn invoke.Result, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\t},\n\t\t\tInput: pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lambda.Invocation;\nimport com.pulumi.aws.lambda.InvocationArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.TimestampArgs;\nimport com.pulumi.std.inputs.Sha256Args;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Invocation(\"example\", InvocationArgs.builder()\n .functionName(exampleAwsLambdaFunction.functionName())\n .triggers(Map.ofEntries(\n Map.entry(\"function_version\", exampleAwsLambdaFunction.version()),\n Map.entry(\"config_hash\", StdFunctions.sha256(Sha256Args.builder()\n .input(serializeJson(\n jsonObject(\n jsonProperty(\"environment\", environment),\n jsonProperty(\"timestamp\", StdFunctions.timestamp(TimestampArgs.builder()\n .build()).result())\n )))\n .build()).applyValue(_invoke -\u003e _invoke.result()))\n ))\n .input(serializeJson(\n jsonObject(\n jsonProperty(\"operation\", \"process_data\"),\n jsonProperty(\"environment\", environment),\n jsonProperty(\"batch_id\", batchId.result())\n )))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:lambda:Invocation\n properties:\n functionName: ${exampleAwsLambdaFunction.functionName}\n triggers:\n function_version: ${exampleAwsLambdaFunction.version}\n config_hash:\n fn::invoke:\n function: std:sha256\n arguments:\n input:\n fn::toJSON:\n environment: ${environment}\n timestamp:\n fn::invoke:\n function: std:timestamp\n arguments: {}\n return: result\n return: result\n input:\n fn::toJSON:\n operation: process_data\n environment: ${environment}\n batch_id: ${batchId.result}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### CRUD Lifecycle Management\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.lambda.Invocation(\"example\", {\n functionName: exampleAwsLambdaFunction.functionName,\n input: JSON.stringify({\n resource_name: \"database_setup\",\n database_url: exampleAwsDbInstance.endpoint,\n credentials: {\n username: dbUsername,\n password: dbPassword,\n },\n }),\n lifecycleScope: \"CRUD\",\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nexample = aws.lambda_.Invocation(\"example\",\n function_name=example_aws_lambda_function[\"functionName\"],\n input=json.dumps({\n \"resource_name\": \"database_setup\",\n \"database_url\": example_aws_db_instance[\"endpoint\"],\n \"credentials\": {\n \"username\": db_username,\n \"password\": db_password,\n },\n }),\n lifecycle_scope=\"CRUD\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Lambda.Invocation(\"example\", new()\n {\n FunctionName = exampleAwsLambdaFunction.FunctionName,\n Input = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"resource_name\"] = \"database_setup\",\n [\"database_url\"] = exampleAwsDbInstance.Endpoint,\n [\"credentials\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"username\"] = dbUsername,\n [\"password\"] = dbPassword,\n },\n }),\n LifecycleScope = \"CRUD\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"resource_name\": \"database_setup\",\n\t\t\t\"database_url\": exampleAwsDbInstance.Endpoint,\n\t\t\t\"credentials\": map[string]interface{}{\n\t\t\t\t\"username\": dbUsername,\n\t\t\t\t\"password\": dbPassword,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = lambda.NewInvocation(ctx, \"example\", \u0026lambda.InvocationArgs{\n\t\t\tFunctionName: pulumi.Any(exampleAwsLambdaFunction.FunctionName),\n\t\t\tInput: pulumi.String(json0),\n\t\t\tLifecycleScope: pulumi.String(\"CRUD\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lambda.Invocation;\nimport com.pulumi.aws.lambda.InvocationArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Invocation(\"example\", InvocationArgs.builder()\n .functionName(exampleAwsLambdaFunction.functionName())\n .input(serializeJson(\n jsonObject(\n jsonProperty(\"resource_name\", \"database_setup\"),\n jsonProperty(\"database_url\", exampleAwsDbInstance.endpoint()),\n jsonProperty(\"credentials\", jsonObject(\n jsonProperty(\"username\", dbUsername),\n jsonProperty(\"password\", dbPassword)\n ))\n )))\n .lifecycleScope(\"CRUD\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:lambda:Invocation\n properties:\n functionName: ${exampleAwsLambdaFunction.functionName}\n input:\n fn::toJSON:\n resource_name: database_setup\n database_url: ${exampleAwsDbInstance.endpoint}\n credentials:\n username: ${dbUsername}\n password: ${dbPassword}\n lifecycleScope: CRUD\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e **Note:** \u003cspan pulumi-lang-nodejs=\"`lifecycleScope \" pulumi-lang-dotnet=\"`LifecycleScope \" pulumi-lang-go=\"`lifecycleScope \" pulumi-lang-python=\"`lifecycle_scope \" pulumi-lang-yaml=\"`lifecycleScope \" pulumi-lang-java=\"`lifecycleScope \"\u003e`lifecycle_scope \u003c/span\u003e= \"CRUD\"` will inject a key \u003cspan pulumi-lang-nodejs=\"`tf`\" pulumi-lang-dotnet=\"`Tf`\" pulumi-lang-go=\"`tf`\" pulumi-lang-python=\"`tf`\" pulumi-lang-yaml=\"`tf`\" pulumi-lang-java=\"`tf`\"\u003e`tf`\u003c/span\u003e in the input event to pass lifecycle information! This allows the Lambda function to handle different lifecycle transitions uniquely. If you need to use a key \u003cspan pulumi-lang-nodejs=\"`tf`\" pulumi-lang-dotnet=\"`Tf`\" pulumi-lang-go=\"`tf`\" pulumi-lang-python=\"`tf`\" pulumi-lang-yaml=\"`tf`\" pulumi-lang-java=\"`tf`\"\u003e`tf`\u003c/span\u003e in your own input JSON, the default key name can be overridden with the \u003cspan pulumi-lang-nodejs=\"`pulumiKey`\" pulumi-lang-dotnet=\"`PulumiKey`\" pulumi-lang-go=\"`pulumiKey`\" pulumi-lang-python=\"`pulumi_key`\" pulumi-lang-yaml=\"`pulumiKey`\" pulumi-lang-java=\"`pulumiKey`\"\u003e`pulumi_key`\u003c/span\u003e argument.\n\nThe lifecycle key gets added with subkeys:\n\n* \u003cspan pulumi-lang-nodejs=\"`action`\" pulumi-lang-dotnet=\"`Action`\" pulumi-lang-go=\"`action`\" pulumi-lang-python=\"`action`\" pulumi-lang-yaml=\"`action`\" pulumi-lang-java=\"`action`\"\u003e`action`\u003c/span\u003e - Action Pulumi performs on the resource. Values are \u003cspan pulumi-lang-nodejs=\"`create`\" pulumi-lang-dotnet=\"`Create`\" pulumi-lang-go=\"`create`\" pulumi-lang-python=\"`create`\" pulumi-lang-yaml=\"`create`\" pulumi-lang-java=\"`create`\"\u003e`create`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`update`\" pulumi-lang-dotnet=\"`Update`\" pulumi-lang-go=\"`update`\" pulumi-lang-python=\"`update`\" pulumi-lang-yaml=\"`update`\" pulumi-lang-java=\"`update`\"\u003e`update`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`delete`\" pulumi-lang-dotnet=\"`Delete`\" pulumi-lang-go=\"`delete`\" pulumi-lang-python=\"`delete`\" pulumi-lang-yaml=\"`delete`\" pulumi-lang-java=\"`delete`\"\u003e`delete`\u003c/span\u003e.\n* \u003cspan pulumi-lang-nodejs=\"`prevInput`\" pulumi-lang-dotnet=\"`PrevInput`\" pulumi-lang-go=\"`prevInput`\" pulumi-lang-python=\"`prev_input`\" pulumi-lang-yaml=\"`prevInput`\" pulumi-lang-java=\"`prevInput`\"\u003e`prev_input`\u003c/span\u003e - Input JSON payload from the previous invocation. This can be used to handle update and delete events.\n\nWhen the resource from the CRUD example above is created, the Lambda will receive the following JSON payload:\n\n```json\n{\n \"resource_name\": \"database_setup\",\n \"database_url\": \"mydb.cluster-xyz.us-west-2.rds.amazonaws.com:5432\",\n \"credentials\": {\n \"username\": \"admin\",\n \"password\": \"secret123\"\n },\n \"tf\": {\n \"action\": \"create\",\n \"prev_input\": null\n }\n}\n```\n\nIf the \u003cspan pulumi-lang-nodejs=\"`databaseUrl`\" pulumi-lang-dotnet=\"`DatabaseUrl`\" pulumi-lang-go=\"`databaseUrl`\" pulumi-lang-python=\"`database_url`\" pulumi-lang-yaml=\"`databaseUrl`\" pulumi-lang-java=\"`databaseUrl`\"\u003e`database_url`\u003c/span\u003e changes, the Lambda will be invoked again with:\n\n```json\n{\n \"resource_name\": \"database_setup\",\n \"database_url\": \"mydb-new.cluster-abc.us-west-2.rds.amazonaws.com:5432\",\n \"credentials\": {\n \"username\": \"admin\",\n \"password\": \"secret123\"\n },\n \"tf\": {\n \"action\": \"update\",\n \"prev_input\": {\n \"resource_name\": \"database_setup\",\n \"database_url\": \"mydb.cluster-xyz.us-west-2.rds.amazonaws.com:5432\",\n \"credentials\": {\n \"username\": \"admin\",\n \"password\": \"secret123\"\n }\n }\n }\n}\n```\n\nWhen the invocation resource is removed, the final invocation will have:\n\n```json\n{\n \"resource_name\": \"database_setup\",\n \"database_url\": \"mydb-new.cluster-abc.us-west-2.rds.amazonaws.com:5432\",\n \"credentials\": {\n \"username\": \"admin\",\n \"password\": \"secret123\"\n },\n \"tf\": {\n \"action\": \"delete\",\n \"prev_input\": {\n \"resource_name\": \"database_setup\",\n \"database_url\": \"mydb-new.cluster-abc.us-west-2.rds.amazonaws.com:5432\",\n \"credentials\": {\n \"username\": \"admin\",\n \"password\": \"secret123\"\n }\n }\n }\n}\n```\n", "properties": { "functionName": { "type": "string", @@ -339024,7 +339024,7 @@ } }, "aws:m2/application:Application": { - "description": "Resource for managing an [AWS Mainframe Modernization Application](https://docs.aws.amazon.com/m2/latest/userguide/applications-m2.html).\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.m2.Application(\"example\", {\n name: \"Example\",\n engineType: \"bluage\",\n definition: {\n content: `{\n \"definition\": {\n \"listeners\": [\n {\n \"port\": 8196,\n \"type\": \"http\"\n }\n ],\n \"ba-application\": {\n \"app-location\": \"${s3_source}/PlanetsDemo-v1.zip\"\n }\n },\n \"source-locations\": [\n {\n \"source-id\": \"s3-source\",\n \"source-type\": \"s3\",\n \"properties\": {\n \"s3-bucket\": \"example-bucket\",\n \"s3-key-prefix\": \"v1\"\n }\n }\n ],\n \"template-version\": \"2.0\"\n}\n\n`,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.m2.Application(\"example\",\n name=\"Example\",\n engine_type=\"bluage\",\n definition={\n \"content\": f\"\"\"{{\n \"definition\": {{\n \"listeners\": [\n {{\n \"port\": 8196,\n \"type\": \"http\"\n }}\n ],\n \"ba-application\": {{\n \"app-location\": \"{s3_source}/PlanetsDemo-v1.zip\"\n }}\n }},\n \"source-locations\": [\n {{\n \"source-id\": \"s3-source\",\n \"source-type\": \"s3\",\n \"properties\": {{\n \"s3-bucket\": \"example-bucket\",\n \"s3-key-prefix\": \"v1\"\n }}\n }}\n ],\n \"template-version\": \"2.0\"\n}}\n\n\"\"\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.M2.Application(\"example\", new()\n {\n Name = \"Example\",\n EngineType = \"bluage\",\n Definition = new Aws.M2.Inputs.ApplicationDefinitionArgs\n {\n Content = @$\"{{\n \"\"definition\"\": {{\n \"\"listeners\"\": [\n {{\n \"\"port\"\": 8196,\n \"\"type\"\": \"\"http\"\"\n }}\n ],\n \"\"ba-application\"\": {{\n \"\"app-location\"\": \"\"{s3_source}/PlanetsDemo-v1.zip\"\"\n }}\n }},\n \"\"source-locations\"\": [\n {{\n \"\"source-id\"\": \"\"s3-source\"\",\n \"\"source-type\"\": \"\"s3\"\",\n \"\"properties\"\": {{\n \"\"s3-bucket\"\": \"\"example-bucket\"\",\n \"\"s3-key-prefix\"\": \"\"v1\"\"\n }}\n }}\n ],\n \"\"template-version\"\": \"\"2.0\"\"\n}}\n\n\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/m2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := m2.NewApplication(ctx, \"example\", \u0026m2.ApplicationArgs{\n\t\t\tName: pulumi.String(\"Example\"),\n\t\t\tEngineType: pulumi.String(\"bluage\"),\n\t\t\tDefinition: \u0026m2.ApplicationDefinitionArgs{\n\t\t\t\tContent: pulumi.Sprintf(`{\n \"definition\": {\n \"listeners\": [\n {\n \"port\": 8196,\n \"type\": \"http\"\n }\n ],\n \"ba-application\": {\n \"app-location\": \"%v/PlanetsDemo-v1.zip\"\n }\n },\n \"source-locations\": [\n {\n \"source-id\": \"s3-source\",\n \"source-type\": \"s3\",\n \"properties\": {\n \"s3-bucket\": \"example-bucket\",\n \"s3-key-prefix\": \"v1\"\n }\n }\n ],\n \"template-version\": \"2.0\"\n}\n\n`, s3_source),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.m2.Application;\nimport com.pulumi.aws.m2.ApplicationArgs;\nimport com.pulumi.aws.m2.inputs.ApplicationDefinitionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Application(\"example\", ApplicationArgs.builder()\n .name(\"Example\")\n .engineType(\"bluage\")\n .definition(ApplicationDefinitionArgs.builder()\n .content(\"\"\"\n{\n \"definition\": {\n \"listeners\": [\n {\n \"port\": 8196,\n \"type\": \"http\"\n }\n ],\n \"ba-application\": {\n \"app-location\": \"%s/PlanetsDemo-v1.zip\"\n }\n },\n \"source-locations\": [\n {\n \"source-id\": \"s3-source\",\n \"source-type\": \"s3\",\n \"properties\": {\n \"s3-bucket\": \"example-bucket\",\n \"s3-key-prefix\": \"v1\"\n }\n }\n ],\n \"template-version\": \"2.0\"\n}\n\n\", s3_source))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:m2:Application\n properties:\n name: Example\n engineType: bluage\n definition:\n content: |+\n {\n \"definition\": {\n \"listeners\": [\n {\n \"port\": 8196,\n \"type\": \"http\"\n }\n ],\n \"ba-application\": {\n \"app-location\": \"${[\"s3-source\"]}/PlanetsDemo-v1.zip\"\n }\n },\n \"source-locations\": [\n {\n \"source-id\": \"s3-source\",\n \"source-type\": \"s3\",\n \"properties\": {\n \"s3-bucket\": \"example-bucket\",\n \"s3-key-prefix\": \"v1\"\n }\n }\n ],\n \"template-version\": \"2.0\"\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Mainframe Modernization Application using the `01234567890abcdef012345678`. For example:\n\n```sh\n$ pulumi import aws:m2/application:Application example 01234567890abcdef012345678\n```\n", + "description": "Resource for managing an [AWS Mainframe Modernization Application](https://docs.aws.amazon.com/m2/latest/userguide/applications-m2.html).\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.m2.Application(\"example\", {\n name: \"Example\",\n engineType: \"bluage\",\n definition: {\n content: `{\n \\\"definition\\\": {\n \\\"listeners\\\": [\n {\n \\\"port\\\": 8196,\n \\\"type\\\": \\\"http\\\"\n }\n ],\n \\\"ba-application\\\": {\n \\\"app-location\\\": \\\"${s3_source}/PlanetsDemo-v1.zip\\\"\n }\n },\n \\\"source-locations\\\": [\n {\n \\\"source-id\\\": \\\"s3-source\\\",\n \\\"source-type\\\": \\\"s3\\\",\n \\\"properties\\\": {\n \\\"s3-bucket\\\": \\\"example-bucket\\\",\n \\\"s3-key-prefix\\\": \\\"v1\\\"\n }\n }\n ],\n \\\"template-version\\\": \\\"2.0\\\"\n}\n\n`,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.m2.Application(\"example\",\n name=\"Example\",\n engine_type=\"bluage\",\n definition={\n \"content\": f\"\"\"{{\n \\\"definition\\\": {{\n \\\"listeners\\\": [\n {{\n \\\"port\\\": 8196,\n \\\"type\\\": \\\"http\\\"\n }}\n ],\n \\\"ba-application\\\": {{\n \\\"app-location\\\": \\\"{s3_source}/PlanetsDemo-v1.zip\\\"\n }}\n }},\n \\\"source-locations\\\": [\n {{\n \\\"source-id\\\": \\\"s3-source\\\",\n \\\"source-type\\\": \\\"s3\\\",\n \\\"properties\\\": {{\n \\\"s3-bucket\\\": \\\"example-bucket\\\",\n \\\"s3-key-prefix\\\": \\\"v1\\\"\n }}\n }}\n ],\n \\\"template-version\\\": \\\"2.0\\\"\n}}\n\n\"\"\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.M2.Application(\"example\", new()\n {\n Name = \"Example\",\n EngineType = \"bluage\",\n Definition = new Aws.M2.Inputs.ApplicationDefinitionArgs\n {\n Content = @$\"{{\n \\\"\"definition\\\"\": {{\n \\\"\"listeners\\\"\": [\n {{\n \\\"\"port\\\"\": 8196,\n \\\"\"type\\\"\": \\\"\"http\\\"\"\n }}\n ],\n \\\"\"ba-application\\\"\": {{\n \\\"\"app-location\\\"\": \\\"\"{s3_source}/PlanetsDemo-v1.zip\\\"\"\n }}\n }},\n \\\"\"source-locations\\\"\": [\n {{\n \\\"\"source-id\\\"\": \\\"\"s3-source\\\"\",\n \\\"\"source-type\\\"\": \\\"\"s3\\\"\",\n \\\"\"properties\\\"\": {{\n \\\"\"s3-bucket\\\"\": \\\"\"example-bucket\\\"\",\n \\\"\"s3-key-prefix\\\"\": \\\"\"v1\\\"\"\n }}\n }}\n ],\n \\\"\"template-version\\\"\": \\\"\"2.0\\\"\"\n}}\n\n\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/m2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := m2.NewApplication(ctx, \"example\", \u0026m2.ApplicationArgs{\n\t\t\tName: pulumi.String(\"Example\"),\n\t\t\tEngineType: pulumi.String(\"bluage\"),\n\t\t\tDefinition: \u0026m2.ApplicationDefinitionArgs{\n\t\t\t\tContent: pulumi.Sprintf(`{\n \\\"definition\\\": {\n \\\"listeners\\\": [\n {\n \\\"port\\\": 8196,\n \\\"type\\\": \\\"http\\\"\n }\n ],\n \\\"ba-application\\\": {\n \\\"app-location\\\": \\\"%v/PlanetsDemo-v1.zip\\\"\n }\n },\n \\\"source-locations\\\": [\n {\n \\\"source-id\\\": \\\"s3-source\\\",\n \\\"source-type\\\": \\\"s3\\\",\n \\\"properties\\\": {\n \\\"s3-bucket\\\": \\\"example-bucket\\\",\n \\\"s3-key-prefix\\\": \\\"v1\\\"\n }\n }\n ],\n \\\"template-version\\\": \\\"2.0\\\"\n}\n\n`, s3_source),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.m2.Application;\nimport com.pulumi.aws.m2.ApplicationArgs;\nimport com.pulumi.aws.m2.inputs.ApplicationDefinitionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Application(\"example\", ApplicationArgs.builder()\n .name(\"Example\")\n .engineType(\"bluage\")\n .definition(ApplicationDefinitionArgs.builder()\n .content(\"\"\"\n{\n \\\"definition\\\": {\n \\\"listeners\\\": [\n {\n \\\"port\\\": 8196,\n \\\"type\\\": \\\"http\\\"\n }\n ],\n \\\"ba-application\\\": {\n \\\"app-location\\\": \\\"%s/PlanetsDemo-v1.zip\\\"\n }\n },\n \\\"source-locations\\\": [\n {\n \\\"source-id\\\": \\\"s3-source\\\",\n \\\"source-type\\\": \\\"s3\\\",\n \\\"properties\\\": {\n \\\"s3-bucket\\\": \\\"example-bucket\\\",\n \\\"s3-key-prefix\\\": \\\"v1\\\"\n }\n }\n ],\n \\\"template-version\\\": \\\"2.0\\\"\n}\n\n\", s3_source))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:m2:Application\n properties:\n name: Example\n engineType: bluage\n definition:\n content: |+\n {\n \\\"definition\\\": {\n \\\"listeners\\\": [\n {\n \\\"port\\\": 8196,\n \\\"type\\\": \\\"http\\\"\n }\n ],\n \\\"ba-application\\\": {\n \\\"app-location\\\": \\\"${[\"s3-source\"]}/PlanetsDemo-v1.zip\\\"\n }\n },\n \\\"source-locations\\\": [\n {\n \\\"source-id\\\": \\\"s3-source\\\",\n \\\"source-type\\\": \\\"s3\\\",\n \\\"properties\\\": {\n \\\"s3-bucket\\\": \\\"example-bucket\\\",\n \\\"s3-key-prefix\\\": \\\"v1\\\"\n }\n }\n ],\n \\\"template-version\\\": \\\"2.0\\\"\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Mainframe Modernization Application using the `01234567890abcdef012345678`. For example:\n\n```sh\n$ pulumi import aws:m2/application:Application example 01234567890abcdef012345678\n```\n", "properties": { "applicationId": { "type": "string", @@ -343367,7 +343367,7 @@ } }, "aws:memorydb/user:User": { - "description": "Provides a MemoryDB User.\n\nMore information about users and ACL-s can be found in the [MemoryDB User Guide](https://docs.aws.amazon.com/memorydb/latest/devguide/clusters.acls.html).\n\n\u003e **Note:** All arguments including the username and passwords will be stored in the raw state as plain-text.\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as random from \"@pulumi/random\";\n\nconst example = new random.index.Password(\"example\", {length: 16});\nconst exampleUser = new aws.memorydb.User(\"example\", {\n userName: \"my-user\",\n accessString: \"on ~* \u0026* +@all\",\n authenticationMode: {\n type: \"password\",\n passwords: [example.result],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_random as random\n\nexample = random.index.Password(\"example\", length=16)\nexample_user = aws.memorydb.User(\"example\",\n user_name=\"my-user\",\n access_string=\"on ~* \u0026* +@all\",\n authentication_mode={\n \"type\": \"password\",\n \"passwords\": [example[\"result\"]],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Random.Index.Password(\"example\", new()\n {\n Length = 16,\n });\n\n var exampleUser = new Aws.MemoryDb.User(\"example\", new()\n {\n UserName = \"my-user\",\n AccessString = \"on ~* \u0026* +@all\",\n AuthenticationMode = new Aws.MemoryDb.Inputs.UserAuthenticationModeArgs\n {\n Type = \"password\",\n Passwords = new[]\n {\n example.Result,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/memorydb\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := random.NewPassword(ctx, \"example\", \u0026random.PasswordArgs{\n\t\t\tLength: 16,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = memorydb.NewUser(ctx, \"example\", \u0026memorydb.UserArgs{\n\t\t\tUserName: pulumi.String(\"my-user\"),\n\t\t\tAccessString: pulumi.String(\"on ~* \u0026* +@all\"),\n\t\t\tAuthenticationMode: \u0026memorydb.UserAuthenticationModeArgs{\n\t\t\t\tType: pulumi.String(\"password\"),\n\t\t\t\tPasswords: pulumi.StringArray{\n\t\t\t\t\texample.Result,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.pulumi.aws.memorydb.User;\nimport com.pulumi.aws.memorydb.UserArgs;\nimport com.pulumi.aws.memorydb.inputs.UserAuthenticationModeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Password(\"example\", PasswordArgs.builder()\n .length(16)\n .build());\n\n var exampleUser = new User(\"exampleUser\", UserArgs.builder()\n .userName(\"my-user\")\n .accessString(\"on ~* \u0026* +@all\")\n .authenticationMode(UserAuthenticationModeArgs.builder()\n .type(\"password\")\n .passwords(example.result())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: random:password\n properties:\n length: 16\n exampleUser:\n type: aws:memorydb:User\n name: example\n properties:\n userName: my-user\n accessString: on ~* \u0026* +@all\n authenticationMode:\n type: password\n passwords:\n - ${example.result}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import a user using the `user_name`. For example:\n\n```sh\n$ pulumi import aws:memorydb/user:User example my-user\n```\nThe `passwords` are not available for imported resources, as this information cannot be read back from the MemoryDB API.\n\n", + "description": "Provides a MemoryDB User.\n\nMore information about users and ACL-s can be found in the [MemoryDB User Guide](https://docs.aws.amazon.com/memorydb/latest/devguide/clusters.acls.html).\n\n\u003e **Note:** All arguments including the username and passwords will be stored in the raw state as plain-text.\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as random from \"@pulumi/random\";\n\nconst example = new random.index.Password(\"example\", {length: 16});\nconst exampleUser = new aws.memorydb.User(\"example\", {\n userName: \"my-user\",\n accessString: \"on ~* \u0026* +@all\",\n authenticationMode: {\n type: \"password\",\n passwords: [example.result],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_random as random\n\nexample = random.index.Password(\"example\", length=16)\nexample_user = aws.memorydb.User(\"example\",\n user_name=\"my-user\",\n access_string=\"on ~* \u0026* +@all\",\n authentication_mode={\n \"type\": \"password\",\n \"passwords\": [example[\"result\"]],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Random.Index.Password(\"example\", new()\n {\n Length = 16,\n });\n\n var exampleUser = new Aws.MemoryDb.User(\"example\", new()\n {\n UserName = \"my-user\",\n AccessString = \"on ~* \u0026* +@all\",\n AuthenticationMode = new Aws.MemoryDb.Inputs.UserAuthenticationModeArgs\n {\n Type = \"password\",\n Passwords = new[]\n {\n example.Result,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/memorydb\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := random.NewPassword(ctx, \"example\", \u0026random.PasswordArgs{\n\t\t\tLength: 16,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = memorydb.NewUser(ctx, \"example\", \u0026memorydb.UserArgs{\n\t\t\tUserName: pulumi.String(\"my-user\"),\n\t\t\tAccessString: pulumi.String(\"on ~* \u0026* +@all\"),\n\t\t\tAuthenticationMode: \u0026memorydb.UserAuthenticationModeArgs{\n\t\t\t\tType: pulumi.String(\"password\"),\n\t\t\t\tPasswords: pulumi.StringArray{\n\t\t\t\t\texample.Result,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.random.Password;\nimport com.pulumi.random.PasswordArgs;\nimport com.pulumi.aws.memorydb.User;\nimport com.pulumi.aws.memorydb.UserArgs;\nimport com.pulumi.aws.memorydb.inputs.UserAuthenticationModeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Password(\"example\", PasswordArgs.builder()\n .length(16)\n .build());\n\n var exampleUser = new User(\"exampleUser\", UserArgs.builder()\n .userName(\"my-user\")\n .accessString(\"on ~* \u0026* +@all\")\n .authenticationMode(UserAuthenticationModeArgs.builder()\n .type(\"password\")\n .passwords(example.result())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: random:Password\n properties:\n length: 16\n exampleUser:\n type: aws:memorydb:User\n name: example\n properties:\n userName: my-user\n accessString: on ~* \u0026* +@all\n authenticationMode:\n type: password\n passwords:\n - ${example.result}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import a user using the `user_name`. For example:\n\n```sh\n$ pulumi import aws:memorydb/user:User example my-user\n```\nThe `passwords` are not available for imported resources, as this information cannot be read back from the MemoryDB API.\n\n", "properties": { "accessString": { "type": "string", @@ -343892,7 +343892,7 @@ } }, "aws:mq/configuration:Configuration": { - "description": "Manages an Amazon MQ configuration. Use this resource to create and manage broker configurations for ActiveMQ and RabbitMQ brokers.\n\n## Example Usage\n\n### ActiveMQ\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.mq.Configuration(\"example\", {\n description: \"Example Configuration\",\n name: \"example\",\n engineType: \"ActiveMQ\",\n engineVersion: \"5.17.6\",\n data: `\u003c?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?\u003e\n\u003cbroker xmlns=\"http://activemq.apache.org/schema/core\"\u003e\n \u003cplugins\u003e\n \u003cforcePersistencyModeBrokerPlugin persistenceFlag=\"true\"/\u003e\n \u003cstatisticsBrokerPlugin/\u003e\n \u003ctimeStampingBrokerPlugin ttlCeiling=\"86400000\" zeroExpirationOverride=\"86400000\"/\u003e\n \u003c/plugins\u003e\n\u003c/broker\u003e\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.mq.Configuration(\"example\",\n description=\"Example Configuration\",\n name=\"example\",\n engine_type=\"ActiveMQ\",\n engine_version=\"5.17.6\",\n data=\"\"\"\u003c?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?\u003e\n\u003cbroker xmlns=\"http://activemq.apache.org/schema/core\"\u003e\n \u003cplugins\u003e\n \u003cforcePersistencyModeBrokerPlugin persistenceFlag=\"true\"/\u003e\n \u003cstatisticsBrokerPlugin/\u003e\n \u003ctimeStampingBrokerPlugin ttlCeiling=\"86400000\" zeroExpirationOverride=\"86400000\"/\u003e\n \u003c/plugins\u003e\n\u003c/broker\u003e\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Mq.Configuration(\"example\", new()\n {\n Description = \"Example Configuration\",\n Name = \"example\",\n EngineType = \"ActiveMQ\",\n EngineVersion = \"5.17.6\",\n Data = @\"\u003c?xml version=\"\"1.0\"\" encoding=\"\"UTF-8\"\" standalone=\"\"yes\"\"?\u003e\n\u003cbroker xmlns=\"\"http://activemq.apache.org/schema/core\"\"\u003e\n \u003cplugins\u003e\n \u003cforcePersistencyModeBrokerPlugin persistenceFlag=\"\"true\"\"/\u003e\n \u003cstatisticsBrokerPlugin/\u003e\n \u003ctimeStampingBrokerPlugin ttlCeiling=\"\"86400000\"\" zeroExpirationOverride=\"\"86400000\"\"/\u003e\n \u003c/plugins\u003e\n\u003c/broker\u003e\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/mq\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := mq.NewConfiguration(ctx, \"example\", \u0026mq.ConfigurationArgs{\n\t\t\tDescription: pulumi.String(\"Example Configuration\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tEngineType: pulumi.String(\"ActiveMQ\"),\n\t\t\tEngineVersion: pulumi.String(\"5.17.6\"),\n\t\t\tData: pulumi.String(`\u003c?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?\u003e\n\u003cbroker xmlns=\"http://activemq.apache.org/schema/core\"\u003e\n \u003cplugins\u003e\n \u003cforcePersistencyModeBrokerPlugin persistenceFlag=\"true\"/\u003e\n \u003cstatisticsBrokerPlugin/\u003e\n \u003ctimeStampingBrokerPlugin ttlCeiling=\"86400000\" zeroExpirationOverride=\"86400000\"/\u003e\n \u003c/plugins\u003e\n\u003c/broker\u003e\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.mq.Configuration;\nimport com.pulumi.aws.mq.ConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Configuration(\"example\", ConfigurationArgs.builder()\n .description(\"Example Configuration\")\n .name(\"example\")\n .engineType(\"ActiveMQ\")\n .engineVersion(\"5.17.6\")\n .data(\"\"\"\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?\u003e\n\u003cbroker xmlns=\"http://activemq.apache.org/schema/core\"\u003e\n \u003cplugins\u003e\n \u003cforcePersistencyModeBrokerPlugin persistenceFlag=\"true\"/\u003e\n \u003cstatisticsBrokerPlugin/\u003e\n \u003ctimeStampingBrokerPlugin ttlCeiling=\"86400000\" zeroExpirationOverride=\"86400000\"/\u003e\n \u003c/plugins\u003e\n\u003c/broker\u003e\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:mq:Configuration\n properties:\n description: Example Configuration\n name: example\n engineType: ActiveMQ\n engineVersion: 5.17.6\n data: |\n \u003c?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?\u003e\n \u003cbroker xmlns=\"http://activemq.apache.org/schema/core\"\u003e\n \u003cplugins\u003e\n \u003cforcePersistencyModeBrokerPlugin persistenceFlag=\"true\"/\u003e\n \u003cstatisticsBrokerPlugin/\u003e\n \u003ctimeStampingBrokerPlugin ttlCeiling=\"86400000\" zeroExpirationOverride=\"86400000\"/\u003e\n \u003c/plugins\u003e\n \u003c/broker\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### RabbitMQ\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.mq.Configuration(\"example\", {\n description: \"Example Configuration\",\n name: \"example\",\n engineType: \"RabbitMQ\",\n engineVersion: \"3.11.20\",\n data: `# Default RabbitMQ delivery acknowledgement timeout is 30 minutes in milliseconds\nconsumer_timeout = 1800000\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.mq.Configuration(\"example\",\n description=\"Example Configuration\",\n name=\"example\",\n engine_type=\"RabbitMQ\",\n engine_version=\"3.11.20\",\n data=\"\"\"# Default RabbitMQ delivery acknowledgement timeout is 30 minutes in milliseconds\nconsumer_timeout = 1800000\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Mq.Configuration(\"example\", new()\n {\n Description = \"Example Configuration\",\n Name = \"example\",\n EngineType = \"RabbitMQ\",\n EngineVersion = \"3.11.20\",\n Data = @\"# Default RabbitMQ delivery acknowledgement timeout is 30 minutes in milliseconds\nconsumer_timeout = 1800000\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/mq\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := mq.NewConfiguration(ctx, \"example\", \u0026mq.ConfigurationArgs{\n\t\t\tDescription: pulumi.String(\"Example Configuration\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tEngineType: pulumi.String(\"RabbitMQ\"),\n\t\t\tEngineVersion: pulumi.String(\"3.11.20\"),\n\t\t\tData: pulumi.String(\"# Default RabbitMQ delivery acknowledgement timeout is 30 minutes in milliseconds\\nconsumer_timeout = 1800000\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.mq.Configuration;\nimport com.pulumi.aws.mq.ConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Configuration(\"example\", ConfigurationArgs.builder()\n .description(\"Example Configuration\")\n .name(\"example\")\n .engineType(\"RabbitMQ\")\n .engineVersion(\"3.11.20\")\n .data(\"\"\"\n# Default RabbitMQ delivery acknowledgement timeout is 30 minutes in milliseconds\nconsumer_timeout = 1800000\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:mq:Configuration\n properties:\n description: Example Configuration\n name: example\n engineType: RabbitMQ\n engineVersion: 3.11.20\n data: |\n # Default RabbitMQ delivery acknowledgement timeout is 30 minutes in milliseconds\n consumer_timeout = 1800000\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import MQ Configurations using the configuration ID. For example:\n\n```sh\n$ pulumi import aws:mq/configuration:Configuration example c-0187d1eb-88c8-475a-9b79-16ef5a10c94f\n```\n", + "description": "Manages an Amazon MQ configuration. Use this resource to create and manage broker configurations for ActiveMQ and RabbitMQ brokers.\n\n## Example Usage\n\n### ActiveMQ\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.mq.Configuration(\"example\", {\n description: \"Example Configuration\",\n name: \"example\",\n engineType: \"ActiveMQ\",\n engineVersion: \"5.17.6\",\n data: `\u003c?xml version=\\\\\"1.0\\\\\" encoding=\\\\\"UTF-8\\\\\" standalone=\\\\\"yes\\\\\"?\u003e\n\u003cbroker xmlns=\\\\\"http://activemq.apache.org/schema/core\\\\\"\u003e\n \u003cplugins\u003e\n \u003cforcePersistencyModeBrokerPlugin persistenceFlag=\\\\\"true\\\\\"/\u003e\n \u003cstatisticsBrokerPlugin/\u003e\n \u003ctimeStampingBrokerPlugin ttlCeiling=\\\\\"86400000\\\\\" zeroExpirationOverride=\\\\\"86400000\\\\\"/\u003e\n \u003c/plugins\u003e\n\u003c/broker\u003e\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.mq.Configuration(\"example\",\n description=\"Example Configuration\",\n name=\"example\",\n engine_type=\"ActiveMQ\",\n engine_version=\"5.17.6\",\n data=\"\"\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"yes\\\"?\u003e\n\u003cbroker xmlns=\\\"http://activemq.apache.org/schema/core\\\"\u003e\n \u003cplugins\u003e\n \u003cforcePersistencyModeBrokerPlugin persistenceFlag=\\\"true\\\"/\u003e\n \u003cstatisticsBrokerPlugin/\u003e\n \u003ctimeStampingBrokerPlugin ttlCeiling=\\\"86400000\\\" zeroExpirationOverride=\\\"86400000\\\"/\u003e\n \u003c/plugins\u003e\n\u003c/broker\u003e\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Mq.Configuration(\"example\", new()\n {\n Description = \"Example Configuration\",\n Name = \"example\",\n EngineType = \"ActiveMQ\",\n EngineVersion = \"5.17.6\",\n Data = @\"\u003c?xml version=\\\"\"1.0\\\"\" encoding=\\\"\"UTF-8\\\"\" standalone=\\\"\"yes\\\"\"?\u003e\n\u003cbroker xmlns=\\\"\"http://activemq.apache.org/schema/core\\\"\"\u003e\n \u003cplugins\u003e\n \u003cforcePersistencyModeBrokerPlugin persistenceFlag=\\\"\"true\\\"\"/\u003e\n \u003cstatisticsBrokerPlugin/\u003e\n \u003ctimeStampingBrokerPlugin ttlCeiling=\\\"\"86400000\\\"\" zeroExpirationOverride=\\\"\"86400000\\\"\"/\u003e\n \u003c/plugins\u003e\n\u003c/broker\u003e\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/mq\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := mq.NewConfiguration(ctx, \"example\", \u0026mq.ConfigurationArgs{\n\t\t\tDescription: pulumi.String(\"Example Configuration\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tEngineType: pulumi.String(\"ActiveMQ\"),\n\t\t\tEngineVersion: pulumi.String(\"5.17.6\"),\n\t\t\tData: pulumi.String(`\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"yes\\\"?\u003e\n\u003cbroker xmlns=\\\"http://activemq.apache.org/schema/core\\\"\u003e\n \u003cplugins\u003e\n \u003cforcePersistencyModeBrokerPlugin persistenceFlag=\\\"true\\\"/\u003e\n \u003cstatisticsBrokerPlugin/\u003e\n \u003ctimeStampingBrokerPlugin ttlCeiling=\\\"86400000\\\" zeroExpirationOverride=\\\"86400000\\\"/\u003e\n \u003c/plugins\u003e\n\u003c/broker\u003e\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.mq.Configuration;\nimport com.pulumi.aws.mq.ConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Configuration(\"example\", ConfigurationArgs.builder()\n .description(\"Example Configuration\")\n .name(\"example\")\n .engineType(\"ActiveMQ\")\n .engineVersion(\"5.17.6\")\n .data(\"\"\"\n\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"yes\\\"?\u003e\n\u003cbroker xmlns=\\\"http://activemq.apache.org/schema/core\\\"\u003e\n \u003cplugins\u003e\n \u003cforcePersistencyModeBrokerPlugin persistenceFlag=\\\"true\\\"/\u003e\n \u003cstatisticsBrokerPlugin/\u003e\n \u003ctimeStampingBrokerPlugin ttlCeiling=\\\"86400000\\\" zeroExpirationOverride=\\\"86400000\\\"/\u003e\n \u003c/plugins\u003e\n\u003c/broker\u003e\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:mq:Configuration\n properties:\n description: Example Configuration\n name: example\n engineType: ActiveMQ\n engineVersion: 5.17.6\n data: |\n \u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"yes\\\"?\u003e\n \u003cbroker xmlns=\\\"http://activemq.apache.org/schema/core\\\"\u003e\n \u003cplugins\u003e\n \u003cforcePersistencyModeBrokerPlugin persistenceFlag=\\\"true\\\"/\u003e\n \u003cstatisticsBrokerPlugin/\u003e\n \u003ctimeStampingBrokerPlugin ttlCeiling=\\\"86400000\\\" zeroExpirationOverride=\\\"86400000\\\"/\u003e\n \u003c/plugins\u003e\n \u003c/broker\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### RabbitMQ\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.mq.Configuration(\"example\", {\n description: \"Example Configuration\",\n name: \"example\",\n engineType: \"RabbitMQ\",\n engineVersion: \"3.11.20\",\n data: `# Default RabbitMQ delivery acknowledgement timeout is 30 minutes in milliseconds\nconsumer_timeout = 1800000\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.mq.Configuration(\"example\",\n description=\"Example Configuration\",\n name=\"example\",\n engine_type=\"RabbitMQ\",\n engine_version=\"3.11.20\",\n data=\"\"\"# Default RabbitMQ delivery acknowledgement timeout is 30 minutes in milliseconds\nconsumer_timeout = 1800000\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Mq.Configuration(\"example\", new()\n {\n Description = \"Example Configuration\",\n Name = \"example\",\n EngineType = \"RabbitMQ\",\n EngineVersion = \"3.11.20\",\n Data = @\"# Default RabbitMQ delivery acknowledgement timeout is 30 minutes in milliseconds\nconsumer_timeout = 1800000\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/mq\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := mq.NewConfiguration(ctx, \"example\", \u0026mq.ConfigurationArgs{\n\t\t\tDescription: pulumi.String(\"Example Configuration\"),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tEngineType: pulumi.String(\"RabbitMQ\"),\n\t\t\tEngineVersion: pulumi.String(\"3.11.20\"),\n\t\t\tData: pulumi.String(\"# Default RabbitMQ delivery acknowledgement timeout is 30 minutes in milliseconds\\nconsumer_timeout = 1800000\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.mq.Configuration;\nimport com.pulumi.aws.mq.ConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Configuration(\"example\", ConfigurationArgs.builder()\n .description(\"Example Configuration\")\n .name(\"example\")\n .engineType(\"RabbitMQ\")\n .engineVersion(\"3.11.20\")\n .data(\"\"\"\n# Default RabbitMQ delivery acknowledgement timeout is 30 minutes in milliseconds\nconsumer_timeout = 1800000\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:mq:Configuration\n properties:\n description: Example Configuration\n name: example\n engineType: RabbitMQ\n engineVersion: 3.11.20\n data: |\n # Default RabbitMQ delivery acknowledgement timeout is 30 minutes in milliseconds\n consumer_timeout = 1800000\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import MQ Configurations using the configuration ID. For example:\n\n```sh\n$ pulumi import aws:mq/configuration:Configuration example c-0187d1eb-88c8-475a-9b79-16ef5a10c94f\n```\n", "properties": { "arn": { "type": "string", @@ -351473,7 +351473,7 @@ } }, "aws:networkmanager/siteToSiteVpnAttachment:SiteToSiteVpnAttachment": { - "description": "Manages a Network Manager site-to-site VPN attachment.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.networkmanager.SiteToSiteVpnAttachment(\"example\", {\n coreNetworkId: exampleAwsccNetworkmanagerCoreNetwork.id,\n vpnConnectionArn: exampleAwsVpnConnection.arn,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.networkmanager.SiteToSiteVpnAttachment(\"example\",\n core_network_id=example_awscc_networkmanager_core_network[\"id\"],\n vpn_connection_arn=example_aws_vpn_connection[\"arn\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.NetworkManager.SiteToSiteVpnAttachment(\"example\", new()\n {\n CoreNetworkId = exampleAwsccNetworkmanagerCoreNetwork.Id,\n VpnConnectionArn = exampleAwsVpnConnection.Arn,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/networkmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networkmanager.NewSiteToSiteVpnAttachment(ctx, \"example\", \u0026networkmanager.SiteToSiteVpnAttachmentArgs{\n\t\t\tCoreNetworkId: pulumi.Any(exampleAwsccNetworkmanagerCoreNetwork.Id),\n\t\t\tVpnConnectionArn: pulumi.Any(exampleAwsVpnConnection.Arn),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.networkmanager.SiteToSiteVpnAttachment;\nimport com.pulumi.aws.networkmanager.SiteToSiteVpnAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new SiteToSiteVpnAttachment(\"example\", SiteToSiteVpnAttachmentArgs.builder()\n .coreNetworkId(exampleAwsccNetworkmanagerCoreNetwork.id())\n .vpnConnectionArn(exampleAwsVpnConnection.arn())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:networkmanager:SiteToSiteVpnAttachment\n properties:\n coreNetworkId: ${exampleAwsccNetworkmanagerCoreNetwork.id}\n vpnConnectionArn: ${exampleAwsVpnConnection.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import `aws_networkmanager_site_to_site_vpn_attachment` using the attachment ID. For example:\n\n```sh\n$ pulumi import aws:networkmanager/siteToSiteVpnAttachment:SiteToSiteVpnAttachment example attachment-0f8fa60d2238d1bd8\n```\n", + "description": "Manages a Network Manager site-to-site VPN attachment.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.networkmanager.SiteToSiteVpnAttachment(\"example\", {\n coreNetworkId: exampleAwsccNetworkmanagerCoreNetwork.id,\n vpnConnectionArn: exampleAwsVpnConnection.arn,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.networkmanager.SiteToSiteVpnAttachment(\"example\",\n core_network_id=example_awscc_networkmanager_core_network[\"id\"],\n vpn_connection_arn=example_aws_vpn_connection[\"arn\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.NetworkManager.SiteToSiteVpnAttachment(\"example\", new()\n {\n CoreNetworkId = exampleAwsccNetworkmanagerCoreNetwork.Id,\n VpnConnectionArn = exampleAwsVpnConnection.Arn,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/networkmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networkmanager.NewSiteToSiteVpnAttachment(ctx, \"example\", \u0026networkmanager.SiteToSiteVpnAttachmentArgs{\n\t\t\tCoreNetworkId: pulumi.Any(exampleAwsccNetworkmanagerCoreNetwork.Id),\n\t\t\tVpnConnectionArn: pulumi.Any(exampleAwsVpnConnection.Arn),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.networkmanager.SiteToSiteVpnAttachment;\nimport com.pulumi.aws.networkmanager.SiteToSiteVpnAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new SiteToSiteVpnAttachment(\"example\", SiteToSiteVpnAttachmentArgs.builder()\n .coreNetworkId(exampleAwsccNetworkmanagerCoreNetwork.id())\n .vpnConnectionArn(exampleAwsVpnConnection.arn())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:networkmanager:SiteToSiteVpnAttachment\n properties:\n coreNetworkId: ${exampleAwsccNetworkmanagerCoreNetwork.id}\n vpnConnectionArn: ${exampleAwsVpnConnection.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Full Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as awscc from \"@pulumi/awscc\";\nimport * as std from \"@pulumi/std\";\n\nconst testCustomerGateway = new aws.ec2.CustomerGateway(\"test\", {\n bgpAsn: \"65000\",\n ipAddress: \"172.0.0.1\",\n type: \"ipsec.1\",\n});\nconst testVpnConnection = new aws.ec2.VpnConnection(\"test\", {\n customerGatewayId: testCustomerGateway.id,\n type: \"ipsec.1\",\n tags: {\n Name: \"test\",\n },\n});\nconst testGlobalNetwork = new aws.networkmanager.GlobalNetwork(\"test\", {tags: {\n Name: \"test\",\n}});\nconst test = aws.networkmanager.getCoreNetworkPolicyDocument({\n coreNetworkConfigurations: [{\n vpnEcmpSupport: false,\n asnRanges: [\"64512-64555\"],\n edgeLocations: [{\n location: current.region,\n asn: \"64512\",\n }],\n }],\n segments: [{\n name: \"shared\",\n description: \"SegmentForSharedServices\",\n requireAttachmentAcceptance: true,\n }],\n segmentActions: [{\n action: \"share\",\n mode: \"attachment-route\",\n segment: \"shared\",\n shareWiths: [\"*\"],\n }],\n attachmentPolicies: [{\n ruleNumber: 1,\n conditionLogic: \"or\",\n conditions: [{\n type: \"tag-value\",\n operator: \"equals\",\n key: \"segment\",\n value: \"shared\",\n }],\n action: {\n associationMethod: \"constant\",\n segment: \"shared\",\n },\n }],\n});\nconst testNetworkmanagerCoreNetwork = new awscc.index.NetworkmanagerCoreNetwork(\"test\", {\n globalNetworkId: testGlobalNetwork.id,\n policyDocument: JSON.stringify(std.jsondecode({\n input: test.json,\n }).result),\n});\nconst testSiteToSiteVpnAttachment = new aws.networkmanager.SiteToSiteVpnAttachment(\"test\", {\n coreNetworkId: testNetworkmanagerCoreNetwork.id,\n vpnConnectionArn: testVpnConnection.arn,\n tags: {\n segment: \"shared\",\n },\n});\nconst testAttachmentAccepter = new aws.networkmanager.AttachmentAccepter(\"test\", {\n attachmentId: testSiteToSiteVpnAttachment.id,\n attachmentType: testSiteToSiteVpnAttachment.attachmentType,\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\nimport pulumi_awscc as awscc\nimport pulumi_std as std\n\ntest_customer_gateway = aws.ec2.CustomerGateway(\"test\",\n bgp_asn=\"65000\",\n ip_address=\"172.0.0.1\",\n type=\"ipsec.1\")\ntest_vpn_connection = aws.ec2.VpnConnection(\"test\",\n customer_gateway_id=test_customer_gateway.id,\n type=\"ipsec.1\",\n tags={\n \"Name\": \"test\",\n })\ntest_global_network = aws.networkmanager.GlobalNetwork(\"test\", tags={\n \"Name\": \"test\",\n})\ntest = aws.networkmanager.get_core_network_policy_document(core_network_configurations=[{\n \"vpn_ecmp_support\": False,\n \"asn_ranges\": [\"64512-64555\"],\n \"edge_locations\": [{\n \"location\": current[\"region\"],\n \"asn\": \"64512\",\n }],\n }],\n segments=[{\n \"name\": \"shared\",\n \"description\": \"SegmentForSharedServices\",\n \"require_attachment_acceptance\": True,\n }],\n segment_actions=[{\n \"action\": \"share\",\n \"mode\": \"attachment-route\",\n \"segment\": \"shared\",\n \"share_withs\": [\"*\"],\n }],\n attachment_policies=[{\n \"rule_number\": 1,\n \"condition_logic\": \"or\",\n \"conditions\": [{\n \"type\": \"tag-value\",\n \"operator\": \"equals\",\n \"key\": \"segment\",\n \"value\": \"shared\",\n }],\n \"action\": {\n \"association_method\": \"constant\",\n \"segment\": \"shared\",\n },\n }])\ntest_networkmanager_core_network = awscc.index.NetworkmanagerCoreNetwork(\"test\",\n global_network_id=test_global_network.id,\n policy_document=json.dumps(std.jsondecode(input=test.json).result))\ntest_site_to_site_vpn_attachment = aws.networkmanager.SiteToSiteVpnAttachment(\"test\",\n core_network_id=test_networkmanager_core_network[\"id\"],\n vpn_connection_arn=test_vpn_connection.arn,\n tags={\n \"segment\": \"shared\",\n })\ntest_attachment_accepter = aws.networkmanager.AttachmentAccepter(\"test\",\n attachment_id=test_site_to_site_vpn_attachment.id,\n attachment_type=test_site_to_site_vpn_attachment.attachment_type)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Awscc = Pulumi.Awscc;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCustomerGateway = new Aws.Ec2.CustomerGateway(\"test\", new()\n {\n BgpAsn = \"65000\",\n IpAddress = \"172.0.0.1\",\n Type = \"ipsec.1\",\n });\n\n var testVpnConnection = new Aws.Ec2.VpnConnection(\"test\", new()\n {\n CustomerGatewayId = testCustomerGateway.Id,\n Type = \"ipsec.1\",\n Tags = \n {\n { \"Name\", \"test\" },\n },\n });\n\n var testGlobalNetwork = new Aws.NetworkManager.GlobalNetwork(\"test\", new()\n {\n Tags = \n {\n { \"Name\", \"test\" },\n },\n });\n\n var test = Aws.NetworkManager.GetCoreNetworkPolicyDocument.Invoke(new()\n {\n CoreNetworkConfigurations = new[]\n {\n new Aws.NetworkManager.Inputs.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationInputArgs\n {\n VpnEcmpSupport = false,\n AsnRanges = new[]\n {\n \"64512-64555\",\n },\n EdgeLocations = new[]\n {\n new Aws.NetworkManager.Inputs.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationEdgeLocationInputArgs\n {\n Location = current.Region,\n Asn = \"64512\",\n },\n },\n },\n },\n Segments = new[]\n {\n new Aws.NetworkManager.Inputs.GetCoreNetworkPolicyDocumentSegmentInputArgs\n {\n Name = \"shared\",\n Description = \"SegmentForSharedServices\",\n RequireAttachmentAcceptance = true,\n },\n },\n SegmentActions = new[]\n {\n new Aws.NetworkManager.Inputs.GetCoreNetworkPolicyDocumentSegmentActionInputArgs\n {\n Action = \"share\",\n Mode = \"attachment-route\",\n Segment = \"shared\",\n ShareWiths = new[]\n {\n \"*\",\n },\n },\n },\n AttachmentPolicies = new[]\n {\n new Aws.NetworkManager.Inputs.GetCoreNetworkPolicyDocumentAttachmentPolicyInputArgs\n {\n RuleNumber = 1,\n ConditionLogic = \"or\",\n Conditions = new[]\n {\n new Aws.NetworkManager.Inputs.GetCoreNetworkPolicyDocumentAttachmentPolicyConditionInputArgs\n {\n Type = \"tag-value\",\n Operator = \"equals\",\n Key = \"segment\",\n Value = \"shared\",\n },\n },\n Action = new Aws.NetworkManager.Inputs.GetCoreNetworkPolicyDocumentAttachmentPolicyActionInputArgs\n {\n AssociationMethod = \"constant\",\n Segment = \"shared\",\n },\n },\n },\n });\n\n var testNetworkmanagerCoreNetwork = new Awscc.Index.NetworkmanagerCoreNetwork(\"test\", new()\n {\n GlobalNetworkId = testGlobalNetwork.Id,\n PolicyDocument = JsonSerializer.Serialize(Std.Jsondecode.Invoke(new()\n {\n Input = test.Apply(getCoreNetworkPolicyDocumentResult =\u003e getCoreNetworkPolicyDocumentResult.Json),\n }).Result),\n });\n\n var testSiteToSiteVpnAttachment = new Aws.NetworkManager.SiteToSiteVpnAttachment(\"test\", new()\n {\n CoreNetworkId = testNetworkmanagerCoreNetwork.Id,\n VpnConnectionArn = testVpnConnection.Arn,\n Tags = \n {\n { \"segment\", \"shared\" },\n },\n });\n\n var testAttachmentAccepter = new Aws.NetworkManager.AttachmentAccepter(\"test\", new()\n {\n AttachmentId = testSiteToSiteVpnAttachment.Id,\n AttachmentType = testSiteToSiteVpnAttachment.AttachmentType,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/networkmanager\"\n\t\"github.com/pulumi/pulumi-awscc/sdk/go/awscc\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\ntestCustomerGateway, err := ec2.NewCustomerGateway(ctx, \"test\", \u0026ec2.CustomerGatewayArgs{\nBgpAsn: pulumi.String(\"65000\"),\nIpAddress: pulumi.String(\"172.0.0.1\"),\nType: pulumi.String(\"ipsec.1\"),\n})\nif err != nil {\nreturn err\n}\ntestVpnConnection, err := ec2.NewVpnConnection(ctx, \"test\", \u0026ec2.VpnConnectionArgs{\nCustomerGatewayId: testCustomerGateway.ID(),\nType: pulumi.String(\"ipsec.1\"),\nTags: pulumi.StringMap{\n\"Name\": pulumi.String(\"test\"),\n},\n})\nif err != nil {\nreturn err\n}\ntestGlobalNetwork, err := networkmanager.NewGlobalNetwork(ctx, \"test\", \u0026networkmanager.GlobalNetworkArgs{\nTags: pulumi.StringMap{\n\"Name\": pulumi.String(\"test\"),\n},\n})\nif err != nil {\nreturn err\n}\ntest, err := networkmanager.GetCoreNetworkPolicyDocument(ctx, \u0026networkmanager.GetCoreNetworkPolicyDocumentArgs{\nCoreNetworkConfigurations: []networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfiguration{\n{\nVpnEcmpSupport: pulumi.BoolRef(false),\nAsnRanges: []string{\n\"64512-64555\",\n},\nEdgeLocations: []networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationEdgeLocation{\n{\nLocation: current.Region,\nAsn: pulumi.StringRef(\"64512\"),\n},\n},\n},\n},\nSegments: []networkmanager.GetCoreNetworkPolicyDocumentSegment{\n{\nName: \"shared\",\nDescription: pulumi.StringRef(\"SegmentForSharedServices\"),\nRequireAttachmentAcceptance: pulumi.BoolRef(true),\n},\n},\nSegmentActions: []networkmanager.GetCoreNetworkPolicyDocumentSegmentAction{\n{\nAction: \"share\",\nMode: pulumi.StringRef(\"attachment-route\"),\nSegment: \"shared\",\nShareWiths: []string{\n\"*\",\n},\n},\n},\nAttachmentPolicies: []networkmanager.GetCoreNetworkPolicyDocumentAttachmentPolicy{\n{\nRuleNumber: 1,\nConditionLogic: pulumi.StringRef(\"or\"),\nConditions: []networkmanager.GetCoreNetworkPolicyDocumentAttachmentPolicyCondition{\n{\nType: \"tag-value\",\nOperator: pulumi.StringRef(\"equals\"),\nKey: pulumi.StringRef(\"segment\"),\nValue: pulumi.StringRef(\"shared\"),\n},\n},\nAction: {\nAssociationMethod: pulumi.StringRef(\"constant\"),\nSegment: pulumi.StringRef(\"shared\"),\n},\n},\n},\n}, nil);\nif err != nil {\nreturn err\n}\ntestNetworkmanagerCoreNetwork, err := awscc.NewNetworkmanagerCoreNetwork(ctx, \"test\", \u0026awscc.NetworkmanagerCoreNetworkArgs{\nGlobalNetworkId: testGlobalNetwork.ID(),\nPolicyDocument: %!v(PANIC=Format method: fatal: An assertion has failed: unlowered function toJSON),\n})\nif err != nil {\nreturn err\n}\ntestSiteToSiteVpnAttachment, err := networkmanager.NewSiteToSiteVpnAttachment(ctx, \"test\", \u0026networkmanager.SiteToSiteVpnAttachmentArgs{\nCoreNetworkId: testNetworkmanagerCoreNetwork.Id,\nVpnConnectionArn: testVpnConnection.Arn,\nTags: pulumi.StringMap{\n\"segment\": pulumi.String(\"shared\"),\n},\n})\nif err != nil {\nreturn err\n}\n_, err = networkmanager.NewAttachmentAccepter(ctx, \"test\", \u0026networkmanager.AttachmentAccepterArgs{\nAttachmentId: testSiteToSiteVpnAttachment.ID(),\nAttachmentType: testSiteToSiteVpnAttachment.AttachmentType,\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.CustomerGateway;\nimport com.pulumi.aws.ec2.CustomerGatewayArgs;\nimport com.pulumi.aws.ec2.VpnConnection;\nimport com.pulumi.aws.ec2.VpnConnectionArgs;\nimport com.pulumi.aws.networkmanager.GlobalNetwork;\nimport com.pulumi.aws.networkmanager.GlobalNetworkArgs;\nimport com.pulumi.aws.networkmanager.NetworkmanagerFunctions;\nimport com.pulumi.aws.networkmanager.inputs.GetCoreNetworkPolicyDocumentArgs;\nimport com.pulumi.awscc.NetworkmanagerCoreNetwork;\nimport com.pulumi.awscc.NetworkmanagerCoreNetworkArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.JsondecodeArgs;\nimport com.pulumi.aws.networkmanager.SiteToSiteVpnAttachment;\nimport com.pulumi.aws.networkmanager.SiteToSiteVpnAttachmentArgs;\nimport com.pulumi.aws.networkmanager.AttachmentAccepter;\nimport com.pulumi.aws.networkmanager.AttachmentAccepterArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCustomerGateway = new CustomerGateway(\"testCustomerGateway\", CustomerGatewayArgs.builder()\n .bgpAsn(\"65000\")\n .ipAddress(\"172.0.0.1\")\n .type(\"ipsec.1\")\n .build());\n\n var testVpnConnection = new VpnConnection(\"testVpnConnection\", VpnConnectionArgs.builder()\n .customerGatewayId(testCustomerGateway.id())\n .type(\"ipsec.1\")\n .tags(Map.of(\"Name\", \"test\"))\n .build());\n\n var testGlobalNetwork = new GlobalNetwork(\"testGlobalNetwork\", GlobalNetworkArgs.builder()\n .tags(Map.of(\"Name\", \"test\"))\n .build());\n\n final var test = NetworkmanagerFunctions.getCoreNetworkPolicyDocument(GetCoreNetworkPolicyDocumentArgs.builder()\n .coreNetworkConfigurations(GetCoreNetworkPolicyDocumentCoreNetworkConfigurationArgs.builder()\n .vpnEcmpSupport(false)\n .asnRanges(\"64512-64555\")\n .edgeLocations(GetCoreNetworkPolicyDocumentCoreNetworkConfigurationEdgeLocationArgs.builder()\n .location(current.region())\n .asn(\"64512\")\n .build())\n .build())\n .segments(GetCoreNetworkPolicyDocumentSegmentArgs.builder()\n .name(\"shared\")\n .description(\"SegmentForSharedServices\")\n .requireAttachmentAcceptance(true)\n .build())\n .segmentActions(GetCoreNetworkPolicyDocumentSegmentActionArgs.builder()\n .action(\"share\")\n .mode(\"attachment-route\")\n .segment(\"shared\")\n .shareWiths(\"*\")\n .build())\n .attachmentPolicies(GetCoreNetworkPolicyDocumentAttachmentPolicyArgs.builder()\n .ruleNumber(1)\n .conditionLogic(\"or\")\n .conditions(GetCoreNetworkPolicyDocumentAttachmentPolicyConditionArgs.builder()\n .type(\"tag-value\")\n .operator(\"equals\")\n .key(\"segment\")\n .value(\"shared\")\n .build())\n .action(GetCoreNetworkPolicyDocumentAttachmentPolicyActionArgs.builder()\n .associationMethod(\"constant\")\n .segment(\"shared\")\n .build())\n .build())\n .build());\n\n var testNetworkmanagerCoreNetwork = new NetworkmanagerCoreNetwork(\"testNetworkmanagerCoreNetwork\", NetworkmanagerCoreNetworkArgs.builder()\n .globalNetworkId(testGlobalNetwork.id())\n .policyDocument(serializeJson(\n StdFunctions.jsondecode(JsondecodeArgs.builder()\n .input(test.json())\n .build()).result()))\n .build());\n\n var testSiteToSiteVpnAttachment = new SiteToSiteVpnAttachment(\"testSiteToSiteVpnAttachment\", SiteToSiteVpnAttachmentArgs.builder()\n .coreNetworkId(testNetworkmanagerCoreNetwork.id())\n .vpnConnectionArn(testVpnConnection.arn())\n .tags(Map.of(\"segment\", \"shared\"))\n .build());\n\n var testAttachmentAccepter = new AttachmentAccepter(\"testAttachmentAccepter\", AttachmentAccepterArgs.builder()\n .attachmentId(testSiteToSiteVpnAttachment.id())\n .attachmentType(testSiteToSiteVpnAttachment.attachmentType())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCustomerGateway:\n type: aws:ec2:CustomerGateway\n name: test\n properties:\n bgpAsn: 65000\n ipAddress: 172.0.0.1\n type: ipsec.1\n testVpnConnection:\n type: aws:ec2:VpnConnection\n name: test\n properties:\n customerGatewayId: ${testCustomerGateway.id}\n type: ipsec.1\n tags:\n Name: test\n testGlobalNetwork:\n type: aws:networkmanager:GlobalNetwork\n name: test\n properties:\n tags:\n Name: test\n testNetworkmanagerCoreNetwork:\n type: awscc:NetworkmanagerCoreNetwork\n name: test\n properties:\n globalNetworkId: ${testGlobalNetwork.id}\n policyDocument:\n fn::toJSON:\n fn::invoke:\n function: std:jsondecode\n arguments:\n input: ${test.json}\n return: result\n testSiteToSiteVpnAttachment:\n type: aws:networkmanager:SiteToSiteVpnAttachment\n name: test\n properties:\n coreNetworkId: ${testNetworkmanagerCoreNetwork.id}\n vpnConnectionArn: ${testVpnConnection.arn}\n tags:\n segment: shared\n testAttachmentAccepter:\n type: aws:networkmanager:AttachmentAccepter\n name: test\n properties:\n attachmentId: ${testSiteToSiteVpnAttachment.id}\n attachmentType: ${testSiteToSiteVpnAttachment.attachmentType}\nvariables:\n test:\n fn::invoke:\n function: aws:networkmanager:getCoreNetworkPolicyDocument\n arguments:\n coreNetworkConfigurations:\n - vpnEcmpSupport: false\n asnRanges:\n - 64512-64555\n edgeLocations:\n - location: ${current.region}\n asn: 64512\n segments:\n - name: shared\n description: SegmentForSharedServices\n requireAttachmentAcceptance: true\n segmentActions:\n - action: share\n mode: attachment-route\n segment: shared\n shareWiths:\n - '*'\n attachmentPolicies:\n - ruleNumber: 1\n conditionLogic: or\n conditions:\n - type: tag-value\n operator: equals\n key: segment\n value: shared\n action:\n associationMethod: constant\n segment: shared\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import `aws_networkmanager_site_to_site_vpn_attachment` using the attachment ID. For example:\n\n```sh\n$ pulumi import aws:networkmanager/siteToSiteVpnAttachment:SiteToSiteVpnAttachment example attachment-0f8fa60d2238d1bd8\n```\n", "properties": { "arn": { "type": "string", @@ -357015,7 +357015,7 @@ } }, "aws:opensearchingest/pipeline:Pipeline": { - "description": "Resource for managing an AWS OpenSearch Ingestion Pipeline.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst current = aws.getRegion({});\nconst example = new aws.iam.Role(\"example\", {assumeRolePolicy: JSON.stringify({\n Version: \"2012-10-17\",\n Statement: [{\n Action: \"sts:AssumeRole\",\n Effect: \"Allow\",\n Sid: \"\",\n Principal: {\n Service: \"osis-pipelines.amazonaws.com\",\n },\n }],\n})});\nconst examplePipeline = new aws.opensearchingest.Pipeline(\"example\", {\n pipelineName: \"example\",\n pipelineConfigurationBody: pulumi.all([example.arn, current]).apply(([arn, current]) =\u003e `version: \"2\"\nexample-pipeline:\n source:\n http:\n path: \"/example\"\n sink:\n - s3:\n aws:\n sts_role_arn: \"${arn}\"\n region: \"${current.region}\"\n bucket: \"example\"\n threshold:\n event_collect_timeout: \"60s\"\n codec:\n ndjson:\n`),\n maxUnits: 1,\n minUnits: 1,\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\ncurrent = aws.get_region()\nexample = aws.iam.Role(\"example\", assume_role_policy=json.dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Action\": \"sts:AssumeRole\",\n \"Effect\": \"Allow\",\n \"Sid\": \"\",\n \"Principal\": {\n \"Service\": \"osis-pipelines.amazonaws.com\",\n },\n }],\n}))\nexample_pipeline = aws.opensearchingest.Pipeline(\"example\",\n pipeline_name=\"example\",\n pipeline_configuration_body=example.arn.apply(lambda arn: f\"\"\"version: \"2\"\nexample-pipeline:\n source:\n http:\n path: \"/example\"\n sink:\n - s3:\n aws:\n sts_role_arn: \"{arn}\"\n region: \"{current.region}\"\n bucket: \"example\"\n threshold:\n event_collect_timeout: \"60s\"\n codec:\n ndjson:\n\"\"\"),\n max_units=1,\n min_units=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Aws.GetRegion.Invoke();\n\n var example = new Aws.Iam.Role(\"example\", new()\n {\n AssumeRolePolicy = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"Version\"] = \"2012-10-17\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Action\"] = \"sts:AssumeRole\",\n [\"Effect\"] = \"Allow\",\n [\"Sid\"] = \"\",\n [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"Service\"] = \"osis-pipelines.amazonaws.com\",\n },\n },\n },\n }),\n });\n\n var examplePipeline = new Aws.OpenSearchIngest.Pipeline(\"example\", new()\n {\n PipelineName = \"example\",\n PipelineConfigurationBody = Output.Tuple(example.Arn, current).Apply(values =\u003e\n {\n var arn = values.Item1;\n var current = values.Item2;\n return @$\"version: \"\"2\"\"\nexample-pipeline:\n source:\n http:\n path: \"\"/example\"\"\n sink:\n - s3:\n aws:\n sts_role_arn: \"\"{arn}\"\"\n region: \"\"{current.Apply(getRegionResult =\u003e getRegionResult.Region)}\"\"\n bucket: \"\"example\"\"\n threshold:\n event_collect_timeout: \"\"60s\"\"\n codec:\n ndjson:\n\";\n }),\n MaxUnits = 1,\n MinUnits = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/opensearchingest\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := aws.GetRegion(ctx, \u0026aws.GetRegionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"Version\": \"2012-10-17\",\n\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"Action\": \"sts:AssumeRole\",\n\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\"Sid\": \"\",\n\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\"Service\": \"osis-pipelines.amazonaws.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\texample, err := iam.NewRole(ctx, \"example\", \u0026iam.RoleArgs{\n\t\t\tAssumeRolePolicy: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = opensearchingest.NewPipeline(ctx, \"example\", \u0026opensearchingest.PipelineArgs{\n\t\t\tPipelineName: pulumi.String(\"example\"),\n\t\t\tPipelineConfigurationBody: example.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(`version: \"2\"\nexample-pipeline:\n source:\n http:\n path: \"/example\"\n sink:\n - s3:\n aws:\n sts_role_arn: \"%v\"\n region: \"%v\"\n bucket: \"example\"\n threshold:\n event_collect_timeout: \"60s\"\n codec:\n ndjson:\n`, arn, current.Region), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tMaxUnits: pulumi.Int(1),\n\t\t\tMinUnits: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.AwsFunctions;\nimport com.pulumi.aws.inputs.GetRegionArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.opensearchingest.Pipeline;\nimport com.pulumi.aws.opensearchingest.PipelineArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AwsFunctions.getRegion(GetRegionArgs.builder()\n .build());\n\n var example = new Role(\"example\", RoleArgs.builder()\n .assumeRolePolicy(serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Action\", \"sts:AssumeRole\"),\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Sid\", \"\"),\n jsonProperty(\"Principal\", jsonObject(\n jsonProperty(\"Service\", \"osis-pipelines.amazonaws.com\")\n ))\n )))\n )))\n .build());\n\n var examplePipeline = new Pipeline(\"examplePipeline\", PipelineArgs.builder()\n .pipelineName(\"example\")\n .pipelineConfigurationBody(example.arn().applyValue(_arn -\u003e \"\"\"\nversion: \"2\"\nexample-pipeline:\n source:\n http:\n path: \"/example\"\n sink:\n - s3:\n aws:\n sts_role_arn: \"%s\"\n region: \"%s\"\n bucket: \"example\"\n threshold:\n event_collect_timeout: \"60s\"\n codec:\n ndjson:\n\", _arn,current.region())))\n .maxUnits(1)\n .minUnits(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:iam:Role\n properties:\n assumeRolePolicy:\n fn::toJSON:\n Version: 2012-10-17\n Statement:\n - Action: sts:AssumeRole\n Effect: Allow\n Sid: \"\"\n Principal:\n Service: osis-pipelines.amazonaws.com\n examplePipeline:\n type: aws:opensearchingest:Pipeline\n name: example\n properties:\n pipelineName: example\n pipelineConfigurationBody: |\n version: \"2\"\n example-pipeline:\n source:\n http:\n path: \"/example\"\n sink:\n - s3:\n aws:\n sts_role_arn: \"${example.arn}\"\n region: \"${current.region}\"\n bucket: \"example\"\n threshold:\n event_collect_timeout: \"60s\"\n codec:\n ndjson:\n maxUnits: 1\n minUnits: 1\nvariables:\n current:\n fn::invoke:\n function: aws:getRegion\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Using file function\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new aws.opensearchingest.Pipeline(\"example\", {\n pipelineName: \"example\",\n pipelineConfigurationBody: std.file({\n input: \"example.yaml\",\n }).then(invoke =\u003e invoke.result),\n maxUnits: 1,\n minUnits: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.opensearchingest.Pipeline(\"example\",\n pipeline_name=\"example\",\n pipeline_configuration_body=std.file(input=\"example.yaml\").result,\n max_units=1,\n min_units=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.OpenSearchIngest.Pipeline(\"example\", new()\n {\n PipelineName = \"example\",\n PipelineConfigurationBody = Std.File.Invoke(new()\n {\n Input = \"example.yaml\",\n }).Apply(invoke =\u003e invoke.Result),\n MaxUnits = 1,\n MinUnits = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/opensearchingest\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"example.yaml\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = opensearchingest.NewPipeline(ctx, \"example\", \u0026opensearchingest.PipelineArgs{\n\t\t\tPipelineName: pulumi.String(\"example\"),\n\t\t\tPipelineConfigurationBody: pulumi.String(invokeFile.Result),\n\t\t\tMaxUnits: pulumi.Int(1),\n\t\t\tMinUnits: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.opensearchingest.Pipeline;\nimport com.pulumi.aws.opensearchingest.PipelineArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Pipeline(\"example\", PipelineArgs.builder()\n .pipelineName(\"example\")\n .pipelineConfigurationBody(StdFunctions.file(FileArgs.builder()\n .input(\"example.yaml\")\n .build()).result())\n .maxUnits(1)\n .minUnits(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:opensearchingest:Pipeline\n properties:\n pipelineName: example\n pipelineConfigurationBody:\n fn::invoke:\n function: std:file\n arguments:\n input: example.yaml\n return: result\n maxUnits: 1\n minUnits: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import OpenSearch Ingestion Pipeline using the `id`. For example:\n\n```sh\n$ pulumi import aws:opensearchingest/pipeline:Pipeline example example\n```\n", + "description": "Resource for managing an AWS OpenSearch Ingestion Pipeline.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst current = aws.getRegion({});\nconst example = new aws.iam.Role(\"example\", {assumeRolePolicy: JSON.stringify({\n Version: \"2012-10-17\",\n Statement: [{\n Action: \"sts:AssumeRole\",\n Effect: \"Allow\",\n Sid: \"\",\n Principal: {\n Service: \"osis-pipelines.amazonaws.com\",\n },\n }],\n})});\nconst examplePipeline = new aws.opensearchingest.Pipeline(\"example\", {\n pipelineName: \"example\",\n pipelineConfigurationBody: pulumi.all([example.arn, current]).apply(([arn, current]) =\u003e `version: \\\"2\\\"\nexample-pipeline:\n source:\n http:\n path: \\\"/example\\\"\n sink:\n - s3:\n aws:\n sts_role_arn: \\\"${arn}\\\"\n region: \\\"${current.region}\\\"\n bucket: \\\"example\\\"\n threshold:\n event_collect_timeout: \\\"60s\\\"\n codec:\n ndjson:\n`),\n maxUnits: 1,\n minUnits: 1,\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\ncurrent = aws.get_region()\nexample = aws.iam.Role(\"example\", assume_role_policy=json.dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Action\": \"sts:AssumeRole\",\n \"Effect\": \"Allow\",\n \"Sid\": \"\",\n \"Principal\": {\n \"Service\": \"osis-pipelines.amazonaws.com\",\n },\n }],\n}))\nexample_pipeline = aws.opensearchingest.Pipeline(\"example\",\n pipeline_name=\"example\",\n pipeline_configuration_body=example.arn.apply(lambda arn: f\"\"\"version: \\\"2\\\"\nexample-pipeline:\n source:\n http:\n path: \\\"/example\\\"\n sink:\n - s3:\n aws:\n sts_role_arn: \\\"{arn}\\\"\n region: \\\"{current.region}\\\"\n bucket: \\\"example\\\"\n threshold:\n event_collect_timeout: \\\"60s\\\"\n codec:\n ndjson:\n\"\"\"),\n max_units=1,\n min_units=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Aws.GetRegion.Invoke();\n\n var example = new Aws.Iam.Role(\"example\", new()\n {\n AssumeRolePolicy = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"Version\"] = \"2012-10-17\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Action\"] = \"sts:AssumeRole\",\n [\"Effect\"] = \"Allow\",\n [\"Sid\"] = \"\",\n [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"Service\"] = \"osis-pipelines.amazonaws.com\",\n },\n },\n },\n }),\n });\n\n var examplePipeline = new Aws.OpenSearchIngest.Pipeline(\"example\", new()\n {\n PipelineName = \"example\",\n PipelineConfigurationBody = Output.Tuple(example.Arn, current).Apply(values =\u003e\n {\n var arn = values.Item1;\n var current = values.Item2;\n return @$\"version: \\\"\"2\\\"\"\nexample-pipeline:\n source:\n http:\n path: \\\"\"/example\\\"\"\n sink:\n - s3:\n aws:\n sts_role_arn: \\\"\"{arn}\\\"\"\n region: \\\"\"{current.Apply(getRegionResult =\u003e getRegionResult.Region)}\\\"\"\n bucket: \\\"\"example\\\"\"\n threshold:\n event_collect_timeout: \\\"\"60s\\\"\"\n codec:\n ndjson:\n\";\n }),\n MaxUnits = 1,\n MinUnits = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/opensearchingest\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := aws.GetRegion(ctx, \u0026aws.GetRegionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"Version\": \"2012-10-17\",\n\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"Action\": \"sts:AssumeRole\",\n\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\"Sid\": \"\",\n\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\"Service\": \"osis-pipelines.amazonaws.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\texample, err := iam.NewRole(ctx, \"example\", \u0026iam.RoleArgs{\n\t\t\tAssumeRolePolicy: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = opensearchingest.NewPipeline(ctx, \"example\", \u0026opensearchingest.PipelineArgs{\n\t\t\tPipelineName: pulumi.String(\"example\"),\n\t\t\tPipelineConfigurationBody: example.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(`version: \\\"2\\\"\nexample-pipeline:\n source:\n http:\n path: \\\"/example\\\"\n sink:\n - s3:\n aws:\n sts_role_arn: \\\"%v\\\"\n region: \\\"%v\\\"\n bucket: \\\"example\\\"\n threshold:\n event_collect_timeout: \\\"60s\\\"\n codec:\n ndjson:\n`, arn, current.Region), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tMaxUnits: pulumi.Int(1),\n\t\t\tMinUnits: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.AwsFunctions;\nimport com.pulumi.aws.inputs.GetRegionArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.opensearchingest.Pipeline;\nimport com.pulumi.aws.opensearchingest.PipelineArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AwsFunctions.getRegion(GetRegionArgs.builder()\n .build());\n\n var example = new Role(\"example\", RoleArgs.builder()\n .assumeRolePolicy(serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Action\", \"sts:AssumeRole\"),\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Sid\", \"\"),\n jsonProperty(\"Principal\", jsonObject(\n jsonProperty(\"Service\", \"osis-pipelines.amazonaws.com\")\n ))\n )))\n )))\n .build());\n\n var examplePipeline = new Pipeline(\"examplePipeline\", PipelineArgs.builder()\n .pipelineName(\"example\")\n .pipelineConfigurationBody(example.arn().applyValue(_arn -\u003e \"\"\"\nversion: \\\"2\\\"\nexample-pipeline:\n source:\n http:\n path: \\\"/example\\\"\n sink:\n - s3:\n aws:\n sts_role_arn: \\\"%s\\\"\n region: \\\"%s\\\"\n bucket: \\\"example\\\"\n threshold:\n event_collect_timeout: \\\"60s\\\"\n codec:\n ndjson:\n\", _arn,current.region())))\n .maxUnits(1)\n .minUnits(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:iam:Role\n properties:\n assumeRolePolicy:\n fn::toJSON:\n Version: 2012-10-17\n Statement:\n - Action: sts:AssumeRole\n Effect: Allow\n Sid: \"\"\n Principal:\n Service: osis-pipelines.amazonaws.com\n examplePipeline:\n type: aws:opensearchingest:Pipeline\n name: example\n properties:\n pipelineName: example\n pipelineConfigurationBody: |\n version: \\\"2\\\"\n example-pipeline:\n source:\n http:\n path: \\\"/example\\\"\n sink:\n - s3:\n aws:\n sts_role_arn: \\\"${example.arn}\\\"\n region: \\\"${current.region}\\\"\n bucket: \\\"example\\\"\n threshold:\n event_collect_timeout: \\\"60s\\\"\n codec:\n ndjson:\n maxUnits: 1\n minUnits: 1\nvariables:\n current:\n fn::invoke:\n function: aws:getRegion\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Using file function\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new aws.opensearchingest.Pipeline(\"example\", {\n pipelineName: \"example\",\n pipelineConfigurationBody: std.file({\n input: \"example.yaml\",\n }).then(invoke =\u003e invoke.result),\n maxUnits: 1,\n minUnits: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.opensearchingest.Pipeline(\"example\",\n pipeline_name=\"example\",\n pipeline_configuration_body=std.file(input=\"example.yaml\").result,\n max_units=1,\n min_units=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.OpenSearchIngest.Pipeline(\"example\", new()\n {\n PipelineName = \"example\",\n PipelineConfigurationBody = Std.File.Invoke(new()\n {\n Input = \"example.yaml\",\n }).Apply(invoke =\u003e invoke.Result),\n MaxUnits = 1,\n MinUnits = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/opensearchingest\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"example.yaml\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = opensearchingest.NewPipeline(ctx, \"example\", \u0026opensearchingest.PipelineArgs{\n\t\t\tPipelineName: pulumi.String(\"example\"),\n\t\t\tPipelineConfigurationBody: pulumi.String(invokeFile.Result),\n\t\t\tMaxUnits: pulumi.Int(1),\n\t\t\tMinUnits: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.opensearchingest.Pipeline;\nimport com.pulumi.aws.opensearchingest.PipelineArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Pipeline(\"example\", PipelineArgs.builder()\n .pipelineName(\"example\")\n .pipelineConfigurationBody(StdFunctions.file(FileArgs.builder()\n .input(\"example.yaml\")\n .build()).result())\n .maxUnits(1)\n .minUnits(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:opensearchingest:Pipeline\n properties:\n pipelineName: example\n pipelineConfigurationBody:\n fn::invoke:\n function: std:file\n arguments:\n input: example.yaml\n return: result\n maxUnits: 1\n minUnits: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import OpenSearch Ingestion Pipeline using the `id`. For example:\n\n```sh\n$ pulumi import aws:opensearchingest/pipeline:Pipeline example example\n```\n", "properties": { "bufferOptions": { "$ref": "#/types/aws:opensearchingest/PipelineBufferOptions:PipelineBufferOptions", @@ -357984,7 +357984,7 @@ } }, "aws:organizations/resourcePolicy:ResourcePolicy": { - "description": "Provides a resource to manage a resource-based delegation policy that can be used to delegate policy management for AWS Organizations to specified member accounts to perform policy actions that are by default available only to the management account. See the [_AWS Organizations User Guide_](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_delegate_policies.html) for more information.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.organizations.ResourcePolicy(\"example\", {content: `{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"DelegatingNecessaryDescribeListActions\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"arn:aws:iam::123456789012:root\"\n },\n \"Action\": [\n \"organizations:DescribeOrganization\",\n \"organizations:DescribeOrganizationalUnit\",\n \"organizations:DescribeAccount\",\n \"organizations:DescribePolicy\",\n \"organizations:DescribeEffectivePolicy\",\n \"organizations:ListRoots\",\n \"organizations:ListOrganizationalUnitsForParent\",\n \"organizations:ListParents\",\n \"organizations:ListChildren\",\n \"organizations:ListAccounts\",\n \"organizations:ListAccountsForParent\",\n \"organizations:ListPolicies\",\n \"organizations:ListPoliciesForTarget\",\n \"organizations:ListTargetsForPolicy\",\n \"organizations:ListTagsForResource\"\n ],\n \"Resource\": \"*\"\n }\n ]\n}\n`});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.organizations.ResourcePolicy(\"example\", content=\"\"\"{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"DelegatingNecessaryDescribeListActions\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"arn:aws:iam::123456789012:root\"\n },\n \"Action\": [\n \"organizations:DescribeOrganization\",\n \"organizations:DescribeOrganizationalUnit\",\n \"organizations:DescribeAccount\",\n \"organizations:DescribePolicy\",\n \"organizations:DescribeEffectivePolicy\",\n \"organizations:ListRoots\",\n \"organizations:ListOrganizationalUnitsForParent\",\n \"organizations:ListParents\",\n \"organizations:ListChildren\",\n \"organizations:ListAccounts\",\n \"organizations:ListAccountsForParent\",\n \"organizations:ListPolicies\",\n \"organizations:ListPoliciesForTarget\",\n \"organizations:ListTargetsForPolicy\",\n \"organizations:ListTagsForResource\"\n ],\n \"Resource\": \"*\"\n }\n ]\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Organizations.ResourcePolicy(\"example\", new()\n {\n Content = @\"{\n \"\"Version\"\": \"\"2012-10-17\"\",\n \"\"Statement\"\": [\n {\n \"\"Sid\"\": \"\"DelegatingNecessaryDescribeListActions\"\",\n \"\"Effect\"\": \"\"Allow\"\",\n \"\"Principal\"\": {\n \"\"AWS\"\": \"\"arn:aws:iam::123456789012:root\"\"\n },\n \"\"Action\"\": [\n \"\"organizations:DescribeOrganization\"\",\n \"\"organizations:DescribeOrganizationalUnit\"\",\n \"\"organizations:DescribeAccount\"\",\n \"\"organizations:DescribePolicy\"\",\n \"\"organizations:DescribeEffectivePolicy\"\",\n \"\"organizations:ListRoots\"\",\n \"\"organizations:ListOrganizationalUnitsForParent\"\",\n \"\"organizations:ListParents\"\",\n \"\"organizations:ListChildren\"\",\n \"\"organizations:ListAccounts\"\",\n \"\"organizations:ListAccountsForParent\"\",\n \"\"organizations:ListPolicies\"\",\n \"\"organizations:ListPoliciesForTarget\"\",\n \"\"organizations:ListTargetsForPolicy\"\",\n \"\"organizations:ListTagsForResource\"\"\n ],\n \"\"Resource\"\": \"\"*\"\"\n }\n ]\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.NewResourcePolicy(ctx, \"example\", \u0026organizations.ResourcePolicyArgs{\n\t\t\tContent: pulumi.String(`{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"DelegatingNecessaryDescribeListActions\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"arn:aws:iam::123456789012:root\"\n },\n \"Action\": [\n \"organizations:DescribeOrganization\",\n \"organizations:DescribeOrganizationalUnit\",\n \"organizations:DescribeAccount\",\n \"organizations:DescribePolicy\",\n \"organizations:DescribeEffectivePolicy\",\n \"organizations:ListRoots\",\n \"organizations:ListOrganizationalUnitsForParent\",\n \"organizations:ListParents\",\n \"organizations:ListChildren\",\n \"organizations:ListAccounts\",\n \"organizations:ListAccountsForParent\",\n \"organizations:ListPolicies\",\n \"organizations:ListPoliciesForTarget\",\n \"organizations:ListTargetsForPolicy\",\n \"organizations:ListTagsForResource\"\n ],\n \"Resource\": \"*\"\n }\n ]\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.organizations.ResourcePolicy;\nimport com.pulumi.aws.organizations.ResourcePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ResourcePolicy(\"example\", ResourcePolicyArgs.builder()\n .content(\"\"\"\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"DelegatingNecessaryDescribeListActions\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"arn:aws:iam::123456789012:root\"\n },\n \"Action\": [\n \"organizations:DescribeOrganization\",\n \"organizations:DescribeOrganizationalUnit\",\n \"organizations:DescribeAccount\",\n \"organizations:DescribePolicy\",\n \"organizations:DescribeEffectivePolicy\",\n \"organizations:ListRoots\",\n \"organizations:ListOrganizationalUnitsForParent\",\n \"organizations:ListParents\",\n \"organizations:ListChildren\",\n \"organizations:ListAccounts\",\n \"organizations:ListAccountsForParent\",\n \"organizations:ListPolicies\",\n \"organizations:ListPoliciesForTarget\",\n \"organizations:ListTargetsForPolicy\",\n \"organizations:ListTagsForResource\"\n ],\n \"Resource\": \"*\"\n }\n ]\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:organizations:ResourcePolicy\n properties:\n content: |\n {\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"DelegatingNecessaryDescribeListActions\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"arn:aws:iam::123456789012:root\"\n },\n \"Action\": [\n \"organizations:DescribeOrganization\",\n \"organizations:DescribeOrganizationalUnit\",\n \"organizations:DescribeAccount\",\n \"organizations:DescribePolicy\",\n \"organizations:DescribeEffectivePolicy\",\n \"organizations:ListRoots\",\n \"organizations:ListOrganizationalUnitsForParent\",\n \"organizations:ListParents\",\n \"organizations:ListChildren\",\n \"organizations:ListAccounts\",\n \"organizations:ListAccountsForParent\",\n \"organizations:ListPolicies\",\n \"organizations:ListPoliciesForTarget\",\n \"organizations:ListTargetsForPolicy\",\n \"organizations:ListTagsForResource\"\n ],\n \"Resource\": \"*\"\n }\n ]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import `aws_organizations_resource_policy` using the resource policy ID. For example:\n\n```sh\n$ pulumi import aws:organizations/resourcePolicy:ResourcePolicy example rp-12345678\n```\n", + "description": "Provides a resource to manage a resource-based delegation policy that can be used to delegate policy management for AWS Organizations to specified member accounts to perform policy actions that are by default available only to the management account. See the [_AWS Organizations User Guide_](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_delegate_policies.html) for more information.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.organizations.ResourcePolicy(\"example\", {content: `{\n \\\\\"Version\\\\\": \\\\\"2012-10-17\\\\\",\n \\\\\"Statement\\\\\": [\n {\n \\\\\"Sid\\\\\": \\\\\"DelegatingNecessaryDescribeListActions\\\\\",\n \\\\\"Effect\\\\\": \\\\\"Allow\\\\\",\n \\\\\"Principal\\\\\": {\n \\\\\"AWS\\\\\": \\\\\"arn:aws:iam::123456789012:root\\\\\"\n },\n \\\\\"Action\\\\\": [\n \\\\\"organizations:DescribeOrganization\\\\\",\n \\\\\"organizations:DescribeOrganizationalUnit\\\\\",\n \\\\\"organizations:DescribeAccount\\\\\",\n \\\\\"organizations:DescribePolicy\\\\\",\n \\\\\"organizations:DescribeEffectivePolicy\\\\\",\n \\\\\"organizations:ListRoots\\\\\",\n \\\\\"organizations:ListOrganizationalUnitsForParent\\\\\",\n \\\\\"organizations:ListParents\\\\\",\n \\\\\"organizations:ListChildren\\\\\",\n \\\\\"organizations:ListAccounts\\\\\",\n \\\\\"organizations:ListAccountsForParent\\\\\",\n \\\\\"organizations:ListPolicies\\\\\",\n \\\\\"organizations:ListPoliciesForTarget\\\\\",\n \\\\\"organizations:ListTargetsForPolicy\\\\\",\n \\\\\"organizations:ListTagsForResource\\\\\"\n ],\n \\\\\"Resource\\\\\": \\\\\"*\\\\\"\n }\n ]\n}\n`});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.organizations.ResourcePolicy(\"example\", content=\"\"\"{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {\n \\\"Sid\\\": \\\"DelegatingNecessaryDescribeListActions\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Principal\\\": {\n \\\"AWS\\\": \\\"arn:aws:iam::123456789012:root\\\"\n },\n \\\"Action\\\": [\n \\\"organizations:DescribeOrganization\\\",\n \\\"organizations:DescribeOrganizationalUnit\\\",\n \\\"organizations:DescribeAccount\\\",\n \\\"organizations:DescribePolicy\\\",\n \\\"organizations:DescribeEffectivePolicy\\\",\n \\\"organizations:ListRoots\\\",\n \\\"organizations:ListOrganizationalUnitsForParent\\\",\n \\\"organizations:ListParents\\\",\n \\\"organizations:ListChildren\\\",\n \\\"organizations:ListAccounts\\\",\n \\\"organizations:ListAccountsForParent\\\",\n \\\"organizations:ListPolicies\\\",\n \\\"organizations:ListPoliciesForTarget\\\",\n \\\"organizations:ListTargetsForPolicy\\\",\n \\\"organizations:ListTagsForResource\\\"\n ],\n \\\"Resource\\\": \\\"*\\\"\n }\n ]\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Organizations.ResourcePolicy(\"example\", new()\n {\n Content = @\"{\n \\\"\"Version\\\"\": \\\"\"2012-10-17\\\"\",\n \\\"\"Statement\\\"\": [\n {\n \\\"\"Sid\\\"\": \\\"\"DelegatingNecessaryDescribeListActions\\\"\",\n \\\"\"Effect\\\"\": \\\"\"Allow\\\"\",\n \\\"\"Principal\\\"\": {\n \\\"\"AWS\\\"\": \\\"\"arn:aws:iam::123456789012:root\\\"\"\n },\n \\\"\"Action\\\"\": [\n \\\"\"organizations:DescribeOrganization\\\"\",\n \\\"\"organizations:DescribeOrganizationalUnit\\\"\",\n \\\"\"organizations:DescribeAccount\\\"\",\n \\\"\"organizations:DescribePolicy\\\"\",\n \\\"\"organizations:DescribeEffectivePolicy\\\"\",\n \\\"\"organizations:ListRoots\\\"\",\n \\\"\"organizations:ListOrganizationalUnitsForParent\\\"\",\n \\\"\"organizations:ListParents\\\"\",\n \\\"\"organizations:ListChildren\\\"\",\n \\\"\"organizations:ListAccounts\\\"\",\n \\\"\"organizations:ListAccountsForParent\\\"\",\n \\\"\"organizations:ListPolicies\\\"\",\n \\\"\"organizations:ListPoliciesForTarget\\\"\",\n \\\"\"organizations:ListTargetsForPolicy\\\"\",\n \\\"\"organizations:ListTagsForResource\\\"\"\n ],\n \\\"\"Resource\\\"\": \\\"\"*\\\"\"\n }\n ]\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.NewResourcePolicy(ctx, \"example\", \u0026organizations.ResourcePolicyArgs{\n\t\t\tContent: pulumi.String(`{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {\n \\\"Sid\\\": \\\"DelegatingNecessaryDescribeListActions\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Principal\\\": {\n \\\"AWS\\\": \\\"arn:aws:iam::123456789012:root\\\"\n },\n \\\"Action\\\": [\n \\\"organizations:DescribeOrganization\\\",\n \\\"organizations:DescribeOrganizationalUnit\\\",\n \\\"organizations:DescribeAccount\\\",\n \\\"organizations:DescribePolicy\\\",\n \\\"organizations:DescribeEffectivePolicy\\\",\n \\\"organizations:ListRoots\\\",\n \\\"organizations:ListOrganizationalUnitsForParent\\\",\n \\\"organizations:ListParents\\\",\n \\\"organizations:ListChildren\\\",\n \\\"organizations:ListAccounts\\\",\n \\\"organizations:ListAccountsForParent\\\",\n \\\"organizations:ListPolicies\\\",\n \\\"organizations:ListPoliciesForTarget\\\",\n \\\"organizations:ListTargetsForPolicy\\\",\n \\\"organizations:ListTagsForResource\\\"\n ],\n \\\"Resource\\\": \\\"*\\\"\n }\n ]\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.organizations.ResourcePolicy;\nimport com.pulumi.aws.organizations.ResourcePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ResourcePolicy(\"example\", ResourcePolicyArgs.builder()\n .content(\"\"\"\n{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {\n \\\"Sid\\\": \\\"DelegatingNecessaryDescribeListActions\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Principal\\\": {\n \\\"AWS\\\": \\\"arn:aws:iam::123456789012:root\\\"\n },\n \\\"Action\\\": [\n \\\"organizations:DescribeOrganization\\\",\n \\\"organizations:DescribeOrganizationalUnit\\\",\n \\\"organizations:DescribeAccount\\\",\n \\\"organizations:DescribePolicy\\\",\n \\\"organizations:DescribeEffectivePolicy\\\",\n \\\"organizations:ListRoots\\\",\n \\\"organizations:ListOrganizationalUnitsForParent\\\",\n \\\"organizations:ListParents\\\",\n \\\"organizations:ListChildren\\\",\n \\\"organizations:ListAccounts\\\",\n \\\"organizations:ListAccountsForParent\\\",\n \\\"organizations:ListPolicies\\\",\n \\\"organizations:ListPoliciesForTarget\\\",\n \\\"organizations:ListTargetsForPolicy\\\",\n \\\"organizations:ListTagsForResource\\\"\n ],\n \\\"Resource\\\": \\\"*\\\"\n }\n ]\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:organizations:ResourcePolicy\n properties:\n content: |\n {\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Statement\\\": [\n {\n \\\"Sid\\\": \\\"DelegatingNecessaryDescribeListActions\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Principal\\\": {\n \\\"AWS\\\": \\\"arn:aws:iam::123456789012:root\\\"\n },\n \\\"Action\\\": [\n \\\"organizations:DescribeOrganization\\\",\n \\\"organizations:DescribeOrganizationalUnit\\\",\n \\\"organizations:DescribeAccount\\\",\n \\\"organizations:DescribePolicy\\\",\n \\\"organizations:DescribeEffectivePolicy\\\",\n \\\"organizations:ListRoots\\\",\n \\\"organizations:ListOrganizationalUnitsForParent\\\",\n \\\"organizations:ListParents\\\",\n \\\"organizations:ListChildren\\\",\n \\\"organizations:ListAccounts\\\",\n \\\"organizations:ListAccountsForParent\\\",\n \\\"organizations:ListPolicies\\\",\n \\\"organizations:ListPoliciesForTarget\\\",\n \\\"organizations:ListTargetsForPolicy\\\",\n \\\"organizations:ListTagsForResource\\\"\n ],\n \\\"Resource\\\": \\\"*\\\"\n }\n ]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import `aws_organizations_resource_policy` using the resource policy ID. For example:\n\n```sh\n$ pulumi import aws:organizations/resourcePolicy:ResourcePolicy example rp-12345678\n```\n", "properties": { "arn": { "type": "string", @@ -367845,7 +367845,7 @@ } }, "aws:rds/customDbEngineVersion:CustomDbEngineVersion": { - "description": "Provides an custom engine version (CEV) resource for Amazon RDS Custom. For additional information, see [Working with CEVs for RDS Custom for Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-cev.html) and [Working with CEVs for RDS Custom for SQL Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-cev-sqlserver.html) in the the [RDS User Guide](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html).\n\n## Example Usage\n\n### RDS Custom for Oracle Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.kms.Key(\"example\", {description: \"KMS symmetric key for RDS Custom for Oracle\"});\nconst exampleCustomDbEngineVersion = new aws.rds.CustomDbEngineVersion(\"example\", {\n databaseInstallationFilesS3BucketName: \"DOC-EXAMPLE-BUCKET\",\n databaseInstallationFilesS3Prefix: \"1915_GI/\",\n engine: \"custom-oracle-ee-cdb\",\n engineVersion: \"19.cdb_cev1\",\n kmsKeyId: example.arn,\n manifest: ` {\n\\x09\"databaseInstallationFileNames\":[\"V982063-01.zip\"]\n }\n`,\n tags: {\n Name: \"example\",\n Key: \"value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.kms.Key(\"example\", description=\"KMS symmetric key for RDS Custom for Oracle\")\nexample_custom_db_engine_version = aws.rds.CustomDbEngineVersion(\"example\",\n database_installation_files_s3_bucket_name=\"DOC-EXAMPLE-BUCKET\",\n database_installation_files_s3_prefix=\"1915_GI/\",\n engine=\"custom-oracle-ee-cdb\",\n engine_version=\"19.cdb_cev1\",\n kms_key_id=example.arn,\n manifest=\"\"\" {\n\\x09\"databaseInstallationFileNames\":[\"V982063-01.zip\"]\n }\n\"\"\",\n tags={\n \"Name\": \"example\",\n \"Key\": \"value\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Kms.Key(\"example\", new()\n {\n Description = \"KMS symmetric key for RDS Custom for Oracle\",\n });\n\n var exampleCustomDbEngineVersion = new Aws.Rds.CustomDbEngineVersion(\"example\", new()\n {\n DatabaseInstallationFilesS3BucketName = \"DOC-EXAMPLE-BUCKET\",\n DatabaseInstallationFilesS3Prefix = \"1915_GI/\",\n Engine = \"custom-oracle-ee-cdb\",\n EngineVersion = \"19.cdb_cev1\",\n KmsKeyId = example.Arn,\n Manifest = @\" {\n\t\"\"databaseInstallationFileNames\"\":[\"\"V982063-01.zip\"\"]\n }\n\",\n Tags = \n {\n { \"Name\", \"example\" },\n { \"Key\", \"value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kms\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/rds\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := kms.NewKey(ctx, \"example\", \u0026kms.KeyArgs{\n\t\t\tDescription: pulumi.String(\"KMS symmetric key for RDS Custom for Oracle\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rds.NewCustomDbEngineVersion(ctx, \"example\", \u0026rds.CustomDbEngineVersionArgs{\n\t\t\tDatabaseInstallationFilesS3BucketName: pulumi.String(\"DOC-EXAMPLE-BUCKET\"),\n\t\t\tDatabaseInstallationFilesS3Prefix: pulumi.String(\"1915_GI/\"),\n\t\t\tEngine: pulumi.String(\"custom-oracle-ee-cdb\"),\n\t\t\tEngineVersion: pulumi.String(\"19.cdb_cev1\"),\n\t\t\tKmsKeyId: example.Arn,\n\t\t\tManifest: pulumi.String(\" {\\n\t\\\"databaseInstallationFileNames\\\":[\\\"V982063-01.zip\\\"]\\n }\\n\"),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"example\"),\n\t\t\t\t\"Key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kms.Key;\nimport com.pulumi.aws.kms.KeyArgs;\nimport com.pulumi.aws.rds.CustomDbEngineVersion;\nimport com.pulumi.aws.rds.CustomDbEngineVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Key(\"example\", KeyArgs.builder()\n .description(\"KMS symmetric key for RDS Custom for Oracle\")\n .build());\n\n var exampleCustomDbEngineVersion = new CustomDbEngineVersion(\"exampleCustomDbEngineVersion\", CustomDbEngineVersionArgs.builder()\n .databaseInstallationFilesS3BucketName(\"DOC-EXAMPLE-BUCKET\")\n .databaseInstallationFilesS3Prefix(\"1915_GI/\")\n .engine(\"custom-oracle-ee-cdb\")\n .engineVersion(\"19.cdb_cev1\")\n .kmsKeyId(example.arn())\n .manifest(\"\"\"\n {\n\t\"databaseInstallationFileNames\":[\"V982063-01.zip\"]\n }\n \"\"\")\n .tags(Map.ofEntries(\n Map.entry(\"Name\", \"example\"),\n Map.entry(\"Key\", \"value\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:kms:Key\n properties:\n description: KMS symmetric key for RDS Custom for Oracle\n exampleCustomDbEngineVersion:\n type: aws:rds:CustomDbEngineVersion\n name: example\n properties:\n databaseInstallationFilesS3BucketName: DOC-EXAMPLE-BUCKET\n databaseInstallationFilesS3Prefix: 1915_GI/\n engine: custom-oracle-ee-cdb\n engineVersion: 19.cdb_cev1\n kmsKeyId: ${example.arn}\n manifest: |2\n {\n \t\"databaseInstallationFileNames\":[\"V982063-01.zip\"]\n }\n tags:\n Name: example\n Key: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### RDS Custom for Oracle External Manifest Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new aws.kms.Key(\"example\", {description: \"KMS symmetric key for RDS Custom for Oracle\"});\nconst exampleCustomDbEngineVersion = new aws.rds.CustomDbEngineVersion(\"example\", {\n databaseInstallationFilesS3BucketName: \"DOC-EXAMPLE-BUCKET\",\n databaseInstallationFilesS3Prefix: \"1915_GI/\",\n engine: \"custom-oracle-ee-cdb\",\n engineVersion: \"19.cdb_cev1\",\n kmsKeyId: example.arn,\n filename: \"manifest_1915_GI.json\",\n manifestHash: std.filebase64sha256({\n input: json,\n }).then(invoke =\u003e invoke.result),\n tags: {\n Name: \"example\",\n Key: \"value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.kms.Key(\"example\", description=\"KMS symmetric key for RDS Custom for Oracle\")\nexample_custom_db_engine_version = aws.rds.CustomDbEngineVersion(\"example\",\n database_installation_files_s3_bucket_name=\"DOC-EXAMPLE-BUCKET\",\n database_installation_files_s3_prefix=\"1915_GI/\",\n engine=\"custom-oracle-ee-cdb\",\n engine_version=\"19.cdb_cev1\",\n kms_key_id=example.arn,\n filename=\"manifest_1915_GI.json\",\n manifest_hash=std.filebase64sha256(input=json).result,\n tags={\n \"Name\": \"example\",\n \"Key\": \"value\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Kms.Key(\"example\", new()\n {\n Description = \"KMS symmetric key for RDS Custom for Oracle\",\n });\n\n var exampleCustomDbEngineVersion = new Aws.Rds.CustomDbEngineVersion(\"example\", new()\n {\n DatabaseInstallationFilesS3BucketName = \"DOC-EXAMPLE-BUCKET\",\n DatabaseInstallationFilesS3Prefix = \"1915_GI/\",\n Engine = \"custom-oracle-ee-cdb\",\n EngineVersion = \"19.cdb_cev1\",\n KmsKeyId = example.Arn,\n Filename = \"manifest_1915_GI.json\",\n ManifestHash = Std.Filebase64sha256.Invoke(new()\n {\n Input = json,\n }).Apply(invoke =\u003e invoke.Result),\n Tags = \n {\n { \"Name\", \"example\" },\n { \"Key\", \"value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kms\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/rds\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := kms.NewKey(ctx, \"example\", \u0026kms.KeyArgs{\n\t\t\tDescription: pulumi.String(\"KMS symmetric key for RDS Custom for Oracle\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilebase64sha256, err := std.Filebase64sha256(ctx, \u0026std.Filebase64sha256Args{\n\t\t\tInput: json,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rds.NewCustomDbEngineVersion(ctx, \"example\", \u0026rds.CustomDbEngineVersionArgs{\n\t\t\tDatabaseInstallationFilesS3BucketName: pulumi.String(\"DOC-EXAMPLE-BUCKET\"),\n\t\t\tDatabaseInstallationFilesS3Prefix: pulumi.String(\"1915_GI/\"),\n\t\t\tEngine: pulumi.String(\"custom-oracle-ee-cdb\"),\n\t\t\tEngineVersion: pulumi.String(\"19.cdb_cev1\"),\n\t\t\tKmsKeyId: example.Arn,\n\t\t\tFilename: pulumi.String(\"manifest_1915_GI.json\"),\n\t\t\tManifestHash: pulumi.String(invokeFilebase64sha256.Result),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"example\"),\n\t\t\t\t\"Key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kms.Key;\nimport com.pulumi.aws.kms.KeyArgs;\nimport com.pulumi.aws.rds.CustomDbEngineVersion;\nimport com.pulumi.aws.rds.CustomDbEngineVersionArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.Filebase64sha256Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Key(\"example\", KeyArgs.builder()\n .description(\"KMS symmetric key for RDS Custom for Oracle\")\n .build());\n\n var exampleCustomDbEngineVersion = new CustomDbEngineVersion(\"exampleCustomDbEngineVersion\", CustomDbEngineVersionArgs.builder()\n .databaseInstallationFilesS3BucketName(\"DOC-EXAMPLE-BUCKET\")\n .databaseInstallationFilesS3Prefix(\"1915_GI/\")\n .engine(\"custom-oracle-ee-cdb\")\n .engineVersion(\"19.cdb_cev1\")\n .kmsKeyId(example.arn())\n .filename(\"manifest_1915_GI.json\")\n .manifestHash(StdFunctions.filebase64sha256(Filebase64sha256Args.builder()\n .input(json)\n .build()).result())\n .tags(Map.ofEntries(\n Map.entry(\"Name\", \"example\"),\n Map.entry(\"Key\", \"value\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:kms:Key\n properties:\n description: KMS symmetric key for RDS Custom for Oracle\n exampleCustomDbEngineVersion:\n type: aws:rds:CustomDbEngineVersion\n name: example\n properties:\n databaseInstallationFilesS3BucketName: DOC-EXAMPLE-BUCKET\n databaseInstallationFilesS3Prefix: 1915_GI/\n engine: custom-oracle-ee-cdb\n engineVersion: 19.cdb_cev1\n kmsKeyId: ${example.arn}\n filename: manifest_1915_GI.json\n manifestHash:\n fn::invoke:\n function: std:filebase64sha256\n arguments:\n input: ${json}\n return: result\n tags:\n Name: example\n Key: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### RDS Custom for SQL Server Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// CEV creation requires an AMI owned by the operator\nconst test = new aws.rds.CustomDbEngineVersion(\"test\", {\n engine: \"custom-sqlserver-se\",\n engineVersion: \"15.00.4249.2.cev-1\",\n sourceImageId: \"ami-0aa12345678a12ab1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\n# CEV creation requires an AMI owned by the operator\ntest = aws.rds.CustomDbEngineVersion(\"test\",\n engine=\"custom-sqlserver-se\",\n engine_version=\"15.00.4249.2.cev-1\",\n source_image_id=\"ami-0aa12345678a12ab1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // CEV creation requires an AMI owned by the operator\n var test = new Aws.Rds.CustomDbEngineVersion(\"test\", new()\n {\n Engine = \"custom-sqlserver-se\",\n EngineVersion = \"15.00.4249.2.cev-1\",\n SourceImageId = \"ami-0aa12345678a12ab1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/rds\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// CEV creation requires an AMI owned by the operator\n\t\t_, err := rds.NewCustomDbEngineVersion(ctx, \"test\", \u0026rds.CustomDbEngineVersionArgs{\n\t\t\tEngine: pulumi.String(\"custom-sqlserver-se\"),\n\t\t\tEngineVersion: pulumi.String(\"15.00.4249.2.cev-1\"),\n\t\t\tSourceImageId: pulumi.String(\"ami-0aa12345678a12ab1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.rds.CustomDbEngineVersion;\nimport com.pulumi.aws.rds.CustomDbEngineVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // CEV creation requires an AMI owned by the operator\n var test = new CustomDbEngineVersion(\"test\", CustomDbEngineVersionArgs.builder()\n .engine(\"custom-sqlserver-se\")\n .engineVersion(\"15.00.4249.2.cev-1\")\n .sourceImageId(\"ami-0aa12345678a12ab1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # CEV creation requires an AMI owned by the operator\n test:\n type: aws:rds:CustomDbEngineVersion\n properties:\n engine: custom-sqlserver-se\n engineVersion: 15.00.4249.2.cev-1\n sourceImageId: ami-0aa12345678a12ab1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### RDS Custom for SQL Server Usage with AMI from another region\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ec2.AmiCopy(\"example\", {\n name: \"sqlserver-se-2019-15.00.4249.2\",\n description: \"A copy of ami-xxxxxxxx\",\n sourceAmiId: \"ami-xxxxxxxx\",\n sourceAmiRegion: \"us-east-1\",\n});\n// CEV creation requires an AMI owned by the operator\nconst test = new aws.rds.CustomDbEngineVersion(\"test\", {\n engine: \"custom-sqlserver-se\",\n engineVersion: \"15.00.4249.2.cev-1\",\n sourceImageId: example.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ec2.AmiCopy(\"example\",\n name=\"sqlserver-se-2019-15.00.4249.2\",\n description=\"A copy of ami-xxxxxxxx\",\n source_ami_id=\"ami-xxxxxxxx\",\n source_ami_region=\"us-east-1\")\n# CEV creation requires an AMI owned by the operator\ntest = aws.rds.CustomDbEngineVersion(\"test\",\n engine=\"custom-sqlserver-se\",\n engine_version=\"15.00.4249.2.cev-1\",\n source_image_id=example.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ec2.AmiCopy(\"example\", new()\n {\n Name = \"sqlserver-se-2019-15.00.4249.2\",\n Description = \"A copy of ami-xxxxxxxx\",\n SourceAmiId = \"ami-xxxxxxxx\",\n SourceAmiRegion = \"us-east-1\",\n });\n\n // CEV creation requires an AMI owned by the operator\n var test = new Aws.Rds.CustomDbEngineVersion(\"test\", new()\n {\n Engine = \"custom-sqlserver-se\",\n EngineVersion = \"15.00.4249.2.cev-1\",\n SourceImageId = example.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/rds\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := ec2.NewAmiCopy(ctx, \"example\", \u0026ec2.AmiCopyArgs{\n\t\t\tName: pulumi.String(\"sqlserver-se-2019-15.00.4249.2\"),\n\t\t\tDescription: pulumi.String(\"A copy of ami-xxxxxxxx\"),\n\t\t\tSourceAmiId: pulumi.String(\"ami-xxxxxxxx\"),\n\t\t\tSourceAmiRegion: pulumi.String(\"us-east-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// CEV creation requires an AMI owned by the operator\n\t\t_, err = rds.NewCustomDbEngineVersion(ctx, \"test\", \u0026rds.CustomDbEngineVersionArgs{\n\t\t\tEngine: pulumi.String(\"custom-sqlserver-se\"),\n\t\t\tEngineVersion: pulumi.String(\"15.00.4249.2.cev-1\"),\n\t\t\tSourceImageId: example.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.AmiCopy;\nimport com.pulumi.aws.ec2.AmiCopyArgs;\nimport com.pulumi.aws.rds.CustomDbEngineVersion;\nimport com.pulumi.aws.rds.CustomDbEngineVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new AmiCopy(\"example\", AmiCopyArgs.builder()\n .name(\"sqlserver-se-2019-15.00.4249.2\")\n .description(\"A copy of ami-xxxxxxxx\")\n .sourceAmiId(\"ami-xxxxxxxx\")\n .sourceAmiRegion(\"us-east-1\")\n .build());\n\n // CEV creation requires an AMI owned by the operator\n var test = new CustomDbEngineVersion(\"test\", CustomDbEngineVersionArgs.builder()\n .engine(\"custom-sqlserver-se\")\n .engineVersion(\"15.00.4249.2.cev-1\")\n .sourceImageId(example.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ec2:AmiCopy\n properties:\n name: sqlserver-se-2019-15.00.4249.2\n description: A copy of ami-xxxxxxxx\n sourceAmiId: ami-xxxxxxxx\n sourceAmiRegion: us-east-1\n # CEV creation requires an AMI owned by the operator\n test:\n type: aws:rds:CustomDbEngineVersion\n properties:\n engine: custom-sqlserver-se\n engineVersion: 15.00.4249.2.cev-1\n sourceImageId: ${example.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import custom engine versions for Amazon RDS custom using the `engine` and `engine_version` separated by a colon (`:`). For example:\n\n```sh\n$ pulumi import aws:rds/customDbEngineVersion:CustomDbEngineVersion example custom-oracle-ee-cdb:19.cdb_cev1\n```\n", + "description": "Provides an custom engine version (CEV) resource for Amazon RDS Custom. For additional information, see [Working with CEVs for RDS Custom for Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-cev.html) and [Working with CEVs for RDS Custom for SQL Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-cev-sqlserver.html) in the the [RDS User Guide](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html).\n\n## Example Usage\n\n### RDS Custom for Oracle Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.kms.Key(\"example\", {description: \"KMS symmetric key for RDS Custom for Oracle\"});\nconst exampleCustomDbEngineVersion = new aws.rds.CustomDbEngineVersion(\"example\", {\n databaseInstallationFilesS3BucketName: \"DOC-EXAMPLE-BUCKET\",\n databaseInstallationFilesS3Prefix: \"1915_GI/\",\n engine: \"custom-oracle-ee-cdb\",\n engineVersion: \"19.cdb_cev1\",\n kmsKeyId: example.arn,\n manifest: ` {\n\\\\t\\\\\"databaseInstallationFileNames\\\\\":[\\\\\"V982063-01.zip\\\\\"]\n }\n`,\n tags: {\n Name: \"example\",\n Key: \"value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.kms.Key(\"example\", description=\"KMS symmetric key for RDS Custom for Oracle\")\nexample_custom_db_engine_version = aws.rds.CustomDbEngineVersion(\"example\",\n database_installation_files_s3_bucket_name=\"DOC-EXAMPLE-BUCKET\",\n database_installation_files_s3_prefix=\"1915_GI/\",\n engine=\"custom-oracle-ee-cdb\",\n engine_version=\"19.cdb_cev1\",\n kms_key_id=example.arn,\n manifest=\"\"\" {\n\\t\\\"databaseInstallationFileNames\\\":[\\\"V982063-01.zip\\\"]\n }\n\"\"\",\n tags={\n \"Name\": \"example\",\n \"Key\": \"value\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Kms.Key(\"example\", new()\n {\n Description = \"KMS symmetric key for RDS Custom for Oracle\",\n });\n\n var exampleCustomDbEngineVersion = new Aws.Rds.CustomDbEngineVersion(\"example\", new()\n {\n DatabaseInstallationFilesS3BucketName = \"DOC-EXAMPLE-BUCKET\",\n DatabaseInstallationFilesS3Prefix = \"1915_GI/\",\n Engine = \"custom-oracle-ee-cdb\",\n EngineVersion = \"19.cdb_cev1\",\n KmsKeyId = example.Arn,\n Manifest = @\" {\n\\t\\\"\"databaseInstallationFileNames\\\"\":[\\\"\"V982063-01.zip\\\"\"]\n }\n\",\n Tags = \n {\n { \"Name\", \"example\" },\n { \"Key\", \"value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kms\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/rds\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := kms.NewKey(ctx, \"example\", \u0026kms.KeyArgs{\n\t\t\tDescription: pulumi.String(\"KMS symmetric key for RDS Custom for Oracle\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rds.NewCustomDbEngineVersion(ctx, \"example\", \u0026rds.CustomDbEngineVersionArgs{\n\t\t\tDatabaseInstallationFilesS3BucketName: pulumi.String(\"DOC-EXAMPLE-BUCKET\"),\n\t\t\tDatabaseInstallationFilesS3Prefix: pulumi.String(\"1915_GI/\"),\n\t\t\tEngine: pulumi.String(\"custom-oracle-ee-cdb\"),\n\t\t\tEngineVersion: pulumi.String(\"19.cdb_cev1\"),\n\t\t\tKmsKeyId: example.Arn,\n\t\t\tManifest: pulumi.String(\" {\\n\\\\t\\\\\\\"databaseInstallationFileNames\\\\\\\":[\\\\\\\"V982063-01.zip\\\\\\\"]\\n }\\n\"),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"example\"),\n\t\t\t\t\"Key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kms.Key;\nimport com.pulumi.aws.kms.KeyArgs;\nimport com.pulumi.aws.rds.CustomDbEngineVersion;\nimport com.pulumi.aws.rds.CustomDbEngineVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Key(\"example\", KeyArgs.builder()\n .description(\"KMS symmetric key for RDS Custom for Oracle\")\n .build());\n\n var exampleCustomDbEngineVersion = new CustomDbEngineVersion(\"exampleCustomDbEngineVersion\", CustomDbEngineVersionArgs.builder()\n .databaseInstallationFilesS3BucketName(\"DOC-EXAMPLE-BUCKET\")\n .databaseInstallationFilesS3Prefix(\"1915_GI/\")\n .engine(\"custom-oracle-ee-cdb\")\n .engineVersion(\"19.cdb_cev1\")\n .kmsKeyId(example.arn())\n .manifest(\"\"\"\n {\n\\t\\\"databaseInstallationFileNames\\\":[\\\"V982063-01.zip\\\"]\n }\n \"\"\")\n .tags(Map.ofEntries(\n Map.entry(\"Name\", \"example\"),\n Map.entry(\"Key\", \"value\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:kms:Key\n properties:\n description: KMS symmetric key for RDS Custom for Oracle\n exampleCustomDbEngineVersion:\n type: aws:rds:CustomDbEngineVersion\n name: example\n properties:\n databaseInstallationFilesS3BucketName: DOC-EXAMPLE-BUCKET\n databaseInstallationFilesS3Prefix: 1915_GI/\n engine: custom-oracle-ee-cdb\n engineVersion: 19.cdb_cev1\n kmsKeyId: ${example.arn}\n manifest: |2\n {\n \\t\\\"databaseInstallationFileNames\\\":[\\\"V982063-01.zip\\\"]\n }\n tags:\n Name: example\n Key: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### RDS Custom for Oracle External Manifest Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new aws.kms.Key(\"example\", {description: \"KMS symmetric key for RDS Custom for Oracle\"});\nconst exampleCustomDbEngineVersion = new aws.rds.CustomDbEngineVersion(\"example\", {\n databaseInstallationFilesS3BucketName: \"DOC-EXAMPLE-BUCKET\",\n databaseInstallationFilesS3Prefix: \"1915_GI/\",\n engine: \"custom-oracle-ee-cdb\",\n engineVersion: \"19.cdb_cev1\",\n kmsKeyId: example.arn,\n filename: \"manifest_1915_GI.json\",\n manifestHash: std.filebase64sha256({\n input: json,\n }).then(invoke =\u003e invoke.result),\n tags: {\n Name: \"example\",\n Key: \"value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.kms.Key(\"example\", description=\"KMS symmetric key for RDS Custom for Oracle\")\nexample_custom_db_engine_version = aws.rds.CustomDbEngineVersion(\"example\",\n database_installation_files_s3_bucket_name=\"DOC-EXAMPLE-BUCKET\",\n database_installation_files_s3_prefix=\"1915_GI/\",\n engine=\"custom-oracle-ee-cdb\",\n engine_version=\"19.cdb_cev1\",\n kms_key_id=example.arn,\n filename=\"manifest_1915_GI.json\",\n manifest_hash=std.filebase64sha256(input=json).result,\n tags={\n \"Name\": \"example\",\n \"Key\": \"value\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Kms.Key(\"example\", new()\n {\n Description = \"KMS symmetric key for RDS Custom for Oracle\",\n });\n\n var exampleCustomDbEngineVersion = new Aws.Rds.CustomDbEngineVersion(\"example\", new()\n {\n DatabaseInstallationFilesS3BucketName = \"DOC-EXAMPLE-BUCKET\",\n DatabaseInstallationFilesS3Prefix = \"1915_GI/\",\n Engine = \"custom-oracle-ee-cdb\",\n EngineVersion = \"19.cdb_cev1\",\n KmsKeyId = example.Arn,\n Filename = \"manifest_1915_GI.json\",\n ManifestHash = Std.Filebase64sha256.Invoke(new()\n {\n Input = json,\n }).Apply(invoke =\u003e invoke.Result),\n Tags = \n {\n { \"Name\", \"example\" },\n { \"Key\", \"value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kms\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/rds\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := kms.NewKey(ctx, \"example\", \u0026kms.KeyArgs{\n\t\t\tDescription: pulumi.String(\"KMS symmetric key for RDS Custom for Oracle\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilebase64sha256, err := std.Filebase64sha256(ctx, \u0026std.Filebase64sha256Args{\n\t\t\tInput: json,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rds.NewCustomDbEngineVersion(ctx, \"example\", \u0026rds.CustomDbEngineVersionArgs{\n\t\t\tDatabaseInstallationFilesS3BucketName: pulumi.String(\"DOC-EXAMPLE-BUCKET\"),\n\t\t\tDatabaseInstallationFilesS3Prefix: pulumi.String(\"1915_GI/\"),\n\t\t\tEngine: pulumi.String(\"custom-oracle-ee-cdb\"),\n\t\t\tEngineVersion: pulumi.String(\"19.cdb_cev1\"),\n\t\t\tKmsKeyId: example.Arn,\n\t\t\tFilename: pulumi.String(\"manifest_1915_GI.json\"),\n\t\t\tManifestHash: pulumi.String(invokeFilebase64sha256.Result),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"example\"),\n\t\t\t\t\"Key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kms.Key;\nimport com.pulumi.aws.kms.KeyArgs;\nimport com.pulumi.aws.rds.CustomDbEngineVersion;\nimport com.pulumi.aws.rds.CustomDbEngineVersionArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.Filebase64sha256Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Key(\"example\", KeyArgs.builder()\n .description(\"KMS symmetric key for RDS Custom for Oracle\")\n .build());\n\n var exampleCustomDbEngineVersion = new CustomDbEngineVersion(\"exampleCustomDbEngineVersion\", CustomDbEngineVersionArgs.builder()\n .databaseInstallationFilesS3BucketName(\"DOC-EXAMPLE-BUCKET\")\n .databaseInstallationFilesS3Prefix(\"1915_GI/\")\n .engine(\"custom-oracle-ee-cdb\")\n .engineVersion(\"19.cdb_cev1\")\n .kmsKeyId(example.arn())\n .filename(\"manifest_1915_GI.json\")\n .manifestHash(StdFunctions.filebase64sha256(Filebase64sha256Args.builder()\n .input(json)\n .build()).result())\n .tags(Map.ofEntries(\n Map.entry(\"Name\", \"example\"),\n Map.entry(\"Key\", \"value\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:kms:Key\n properties:\n description: KMS symmetric key for RDS Custom for Oracle\n exampleCustomDbEngineVersion:\n type: aws:rds:CustomDbEngineVersion\n name: example\n properties:\n databaseInstallationFilesS3BucketName: DOC-EXAMPLE-BUCKET\n databaseInstallationFilesS3Prefix: 1915_GI/\n engine: custom-oracle-ee-cdb\n engineVersion: 19.cdb_cev1\n kmsKeyId: ${example.arn}\n filename: manifest_1915_GI.json\n manifestHash:\n fn::invoke:\n function: std:filebase64sha256\n arguments:\n input: ${json}\n return: result\n tags:\n Name: example\n Key: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### RDS Custom for SQL Server Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// CEV creation requires an AMI owned by the operator\nconst test = new aws.rds.CustomDbEngineVersion(\"test\", {\n engine: \"custom-sqlserver-se\",\n engineVersion: \"15.00.4249.2.cev-1\",\n sourceImageId: \"ami-0aa12345678a12ab1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\n# CEV creation requires an AMI owned by the operator\ntest = aws.rds.CustomDbEngineVersion(\"test\",\n engine=\"custom-sqlserver-se\",\n engine_version=\"15.00.4249.2.cev-1\",\n source_image_id=\"ami-0aa12345678a12ab1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // CEV creation requires an AMI owned by the operator\n var test = new Aws.Rds.CustomDbEngineVersion(\"test\", new()\n {\n Engine = \"custom-sqlserver-se\",\n EngineVersion = \"15.00.4249.2.cev-1\",\n SourceImageId = \"ami-0aa12345678a12ab1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/rds\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// CEV creation requires an AMI owned by the operator\n\t\t_, err := rds.NewCustomDbEngineVersion(ctx, \"test\", \u0026rds.CustomDbEngineVersionArgs{\n\t\t\tEngine: pulumi.String(\"custom-sqlserver-se\"),\n\t\t\tEngineVersion: pulumi.String(\"15.00.4249.2.cev-1\"),\n\t\t\tSourceImageId: pulumi.String(\"ami-0aa12345678a12ab1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.rds.CustomDbEngineVersion;\nimport com.pulumi.aws.rds.CustomDbEngineVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // CEV creation requires an AMI owned by the operator\n var test = new CustomDbEngineVersion(\"test\", CustomDbEngineVersionArgs.builder()\n .engine(\"custom-sqlserver-se\")\n .engineVersion(\"15.00.4249.2.cev-1\")\n .sourceImageId(\"ami-0aa12345678a12ab1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # CEV creation requires an AMI owned by the operator\n test:\n type: aws:rds:CustomDbEngineVersion\n properties:\n engine: custom-sqlserver-se\n engineVersion: 15.00.4249.2.cev-1\n sourceImageId: ami-0aa12345678a12ab1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### RDS Custom for SQL Server Usage with AMI from another region\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ec2.AmiCopy(\"example\", {\n name: \"sqlserver-se-2019-15.00.4249.2\",\n description: \"A copy of ami-xxxxxxxx\",\n sourceAmiId: \"ami-xxxxxxxx\",\n sourceAmiRegion: \"us-east-1\",\n});\n// CEV creation requires an AMI owned by the operator\nconst test = new aws.rds.CustomDbEngineVersion(\"test\", {\n engine: \"custom-sqlserver-se\",\n engineVersion: \"15.00.4249.2.cev-1\",\n sourceImageId: example.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ec2.AmiCopy(\"example\",\n name=\"sqlserver-se-2019-15.00.4249.2\",\n description=\"A copy of ami-xxxxxxxx\",\n source_ami_id=\"ami-xxxxxxxx\",\n source_ami_region=\"us-east-1\")\n# CEV creation requires an AMI owned by the operator\ntest = aws.rds.CustomDbEngineVersion(\"test\",\n engine=\"custom-sqlserver-se\",\n engine_version=\"15.00.4249.2.cev-1\",\n source_image_id=example.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ec2.AmiCopy(\"example\", new()\n {\n Name = \"sqlserver-se-2019-15.00.4249.2\",\n Description = \"A copy of ami-xxxxxxxx\",\n SourceAmiId = \"ami-xxxxxxxx\",\n SourceAmiRegion = \"us-east-1\",\n });\n\n // CEV creation requires an AMI owned by the operator\n var test = new Aws.Rds.CustomDbEngineVersion(\"test\", new()\n {\n Engine = \"custom-sqlserver-se\",\n EngineVersion = \"15.00.4249.2.cev-1\",\n SourceImageId = example.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/rds\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := ec2.NewAmiCopy(ctx, \"example\", \u0026ec2.AmiCopyArgs{\n\t\t\tName: pulumi.String(\"sqlserver-se-2019-15.00.4249.2\"),\n\t\t\tDescription: pulumi.String(\"A copy of ami-xxxxxxxx\"),\n\t\t\tSourceAmiId: pulumi.String(\"ami-xxxxxxxx\"),\n\t\t\tSourceAmiRegion: pulumi.String(\"us-east-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// CEV creation requires an AMI owned by the operator\n\t\t_, err = rds.NewCustomDbEngineVersion(ctx, \"test\", \u0026rds.CustomDbEngineVersionArgs{\n\t\t\tEngine: pulumi.String(\"custom-sqlserver-se\"),\n\t\t\tEngineVersion: pulumi.String(\"15.00.4249.2.cev-1\"),\n\t\t\tSourceImageId: example.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.AmiCopy;\nimport com.pulumi.aws.ec2.AmiCopyArgs;\nimport com.pulumi.aws.rds.CustomDbEngineVersion;\nimport com.pulumi.aws.rds.CustomDbEngineVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new AmiCopy(\"example\", AmiCopyArgs.builder()\n .name(\"sqlserver-se-2019-15.00.4249.2\")\n .description(\"A copy of ami-xxxxxxxx\")\n .sourceAmiId(\"ami-xxxxxxxx\")\n .sourceAmiRegion(\"us-east-1\")\n .build());\n\n // CEV creation requires an AMI owned by the operator\n var test = new CustomDbEngineVersion(\"test\", CustomDbEngineVersionArgs.builder()\n .engine(\"custom-sqlserver-se\")\n .engineVersion(\"15.00.4249.2.cev-1\")\n .sourceImageId(example.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ec2:AmiCopy\n properties:\n name: sqlserver-se-2019-15.00.4249.2\n description: A copy of ami-xxxxxxxx\n sourceAmiId: ami-xxxxxxxx\n sourceAmiRegion: us-east-1\n # CEV creation requires an AMI owned by the operator\n test:\n type: aws:rds:CustomDbEngineVersion\n properties:\n engine: custom-sqlserver-se\n engineVersion: 15.00.4249.2.cev-1\n sourceImageId: ${example.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import custom engine versions for Amazon RDS custom using the `engine` and `engine_version` separated by a colon (`:`). For example:\n\n```sh\n$ pulumi import aws:rds/customDbEngineVersion:CustomDbEngineVersion example custom-oracle-ee-cdb:19.cdb_cev1\n```\n", "properties": { "arn": { "type": "string", @@ -377978,7 +377978,7 @@ } }, "aws:resourcegroups/group:Group": { - "description": "Provides a Resource Group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.resourcegroups.Group(\"test\", {\n name: \"test-group\",\n resourceQuery: {\n query: `{\n \"ResourceTypeFilters\": [\n \"AWS::EC2::Instance\"\n ],\n \"TagFilters\": [\n {\n \"Key\": \"Stage\",\n \"Values\": [\"Test\"]\n }\n ]\n}\n`,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.resourcegroups.Group(\"test\",\n name=\"test-group\",\n resource_query={\n \"query\": \"\"\"{\n \"ResourceTypeFilters\": [\n \"AWS::EC2::Instance\"\n ],\n \"TagFilters\": [\n {\n \"Key\": \"Stage\",\n \"Values\": [\"Test\"]\n }\n ]\n}\n\"\"\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Aws.ResourceGroups.Group(\"test\", new()\n {\n Name = \"test-group\",\n ResourceQuery = new Aws.ResourceGroups.Inputs.GroupResourceQueryArgs\n {\n Query = @\"{\n \"\"ResourceTypeFilters\"\": [\n \"\"AWS::EC2::Instance\"\"\n ],\n \"\"TagFilters\"\": [\n {\n \"\"Key\"\": \"\"Stage\"\",\n \"\"Values\"\": [\"\"Test\"\"]\n }\n ]\n}\n\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/resourcegroups\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := resourcegroups.NewGroup(ctx, \"test\", \u0026resourcegroups.GroupArgs{\n\t\t\tName: pulumi.String(\"test-group\"),\n\t\t\tResourceQuery: \u0026resourcegroups.GroupResourceQueryArgs{\n\t\t\t\tQuery: pulumi.String(`{\n \"ResourceTypeFilters\": [\n \"AWS::EC2::Instance\"\n ],\n \"TagFilters\": [\n {\n \"Key\": \"Stage\",\n \"Values\": [\"Test\"]\n }\n ]\n}\n`),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.resourcegroups.Group;\nimport com.pulumi.aws.resourcegroups.GroupArgs;\nimport com.pulumi.aws.resourcegroups.inputs.GroupResourceQueryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Group(\"test\", GroupArgs.builder()\n .name(\"test-group\")\n .resourceQuery(GroupResourceQueryArgs.builder()\n .query(\"\"\"\n{\n \"ResourceTypeFilters\": [\n \"AWS::EC2::Instance\"\n ],\n \"TagFilters\": [\n {\n \"Key\": \"Stage\",\n \"Values\": [\"Test\"]\n }\n ]\n}\n \"\"\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:resourcegroups:Group\n properties:\n name: test-group\n resourceQuery:\n query: |\n {\n \"ResourceTypeFilters\": [\n \"AWS::EC2::Instance\"\n ],\n \"TagFilters\": [\n {\n \"Key\": \"Stage\",\n \"Values\": [\"Test\"]\n }\n ]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import resource groups using the `name`. For example:\n\n```sh\n$ pulumi import aws:resourcegroups/group:Group foo resource-group-name\n```\n", + "description": "Provides a Resource Group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.resourcegroups.Group(\"test\", {\n name: \"test-group\",\n resourceQuery: {\n query: `{\n \\\\\"ResourceTypeFilters\\\\\": [\n \\\\\"AWS::EC2::Instance\\\\\"\n ],\n \\\\\"TagFilters\\\\\": [\n {\n \\\\\"Key\\\\\": \\\\\"Stage\\\\\",\n \\\\\"Values\\\\\": [\\\\\"Test\\\\\"]\n }\n ]\n}\n`,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.resourcegroups.Group(\"test\",\n name=\"test-group\",\n resource_query={\n \"query\": \"\"\"{\n \\\"ResourceTypeFilters\\\": [\n \\\"AWS::EC2::Instance\\\"\n ],\n \\\"TagFilters\\\": [\n {\n \\\"Key\\\": \\\"Stage\\\",\n \\\"Values\\\": [\\\"Test\\\"]\n }\n ]\n}\n\"\"\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Aws.ResourceGroups.Group(\"test\", new()\n {\n Name = \"test-group\",\n ResourceQuery = new Aws.ResourceGroups.Inputs.GroupResourceQueryArgs\n {\n Query = @\"{\n \\\"\"ResourceTypeFilters\\\"\": [\n \\\"\"AWS::EC2::Instance\\\"\"\n ],\n \\\"\"TagFilters\\\"\": [\n {\n \\\"\"Key\\\"\": \\\"\"Stage\\\"\",\n \\\"\"Values\\\"\": [\\\"\"Test\\\"\"]\n }\n ]\n}\n\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/resourcegroups\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := resourcegroups.NewGroup(ctx, \"test\", \u0026resourcegroups.GroupArgs{\n\t\t\tName: pulumi.String(\"test-group\"),\n\t\t\tResourceQuery: \u0026resourcegroups.GroupResourceQueryArgs{\n\t\t\t\tQuery: pulumi.String(`{\n \\\"ResourceTypeFilters\\\": [\n \\\"AWS::EC2::Instance\\\"\n ],\n \\\"TagFilters\\\": [\n {\n \\\"Key\\\": \\\"Stage\\\",\n \\\"Values\\\": [\\\"Test\\\"]\n }\n ]\n}\n`),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.resourcegroups.Group;\nimport com.pulumi.aws.resourcegroups.GroupArgs;\nimport com.pulumi.aws.resourcegroups.inputs.GroupResourceQueryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Group(\"test\", GroupArgs.builder()\n .name(\"test-group\")\n .resourceQuery(GroupResourceQueryArgs.builder()\n .query(\"\"\"\n{\n \\\"ResourceTypeFilters\\\": [\n \\\"AWS::EC2::Instance\\\"\n ],\n \\\"TagFilters\\\": [\n {\n \\\"Key\\\": \\\"Stage\\\",\n \\\"Values\\\": [\\\"Test\\\"]\n }\n ]\n}\n \"\"\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:resourcegroups:Group\n properties:\n name: test-group\n resourceQuery:\n query: |\n {\n \\\"ResourceTypeFilters\\\": [\n \\\"AWS::EC2::Instance\\\"\n ],\n \\\"TagFilters\\\": [\n {\n \\\"Key\\\": \\\"Stage\\\",\n \\\"Values\\\": [\\\"Test\\\"]\n }\n ]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import resource groups using the `name`. For example:\n\n```sh\n$ pulumi import aws:resourcegroups/group:Group foo resource-group-name\n```\n", "properties": { "arn": { "type": "string", @@ -381403,7 +381403,7 @@ } }, "aws:route53/trafficPolicy:TrafficPolicy": { - "description": "Manages a Route53 Traffic Policy.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.route53.TrafficPolicy(\"example\", {\n name: \"example\",\n comment: \"example comment\",\n document: `{\n \"AWSPolicyFormatVersion\": \"2015-10-01\",\n \"RecordType\": \"A\",\n \"Endpoints\": {\n \"endpoint-start-NkPh\": {\n \"Type\": \"value\",\n \"Value\": \"10.0.0.2\"\n }\n },\n \"StartEndpoint\": \"endpoint-start-NkPh\"\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.route53.TrafficPolicy(\"example\",\n name=\"example\",\n comment=\"example comment\",\n document=\"\"\"{\n \"AWSPolicyFormatVersion\": \"2015-10-01\",\n \"RecordType\": \"A\",\n \"Endpoints\": {\n \"endpoint-start-NkPh\": {\n \"Type\": \"value\",\n \"Value\": \"10.0.0.2\"\n }\n },\n \"StartEndpoint\": \"endpoint-start-NkPh\"\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Route53.TrafficPolicy(\"example\", new()\n {\n Name = \"example\",\n Comment = \"example comment\",\n Document = @\"{\n \"\"AWSPolicyFormatVersion\"\": \"\"2015-10-01\"\",\n \"\"RecordType\"\": \"\"A\"\",\n \"\"Endpoints\"\": {\n \"\"endpoint-start-NkPh\"\": {\n \"\"Type\"\": \"\"value\"\",\n \"\"Value\"\": \"\"10.0.0.2\"\"\n }\n },\n \"\"StartEndpoint\"\": \"\"endpoint-start-NkPh\"\"\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/route53\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := route53.NewTrafficPolicy(ctx, \"example\", \u0026route53.TrafficPolicyArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tComment: pulumi.String(\"example comment\"),\n\t\t\tDocument: pulumi.String(`{\n \"AWSPolicyFormatVersion\": \"2015-10-01\",\n \"RecordType\": \"A\",\n \"Endpoints\": {\n \"endpoint-start-NkPh\": {\n \"Type\": \"value\",\n \"Value\": \"10.0.0.2\"\n }\n },\n \"StartEndpoint\": \"endpoint-start-NkPh\"\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.route53.TrafficPolicy;\nimport com.pulumi.aws.route53.TrafficPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new TrafficPolicy(\"example\", TrafficPolicyArgs.builder()\n .name(\"example\")\n .comment(\"example comment\")\n .document(\"\"\"\n{\n \"AWSPolicyFormatVersion\": \"2015-10-01\",\n \"RecordType\": \"A\",\n \"Endpoints\": {\n \"endpoint-start-NkPh\": {\n \"Type\": \"value\",\n \"Value\": \"10.0.0.2\"\n }\n },\n \"StartEndpoint\": \"endpoint-start-NkPh\"\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:route53:TrafficPolicy\n properties:\n name: example\n comment: example comment\n document: |\n {\n \"AWSPolicyFormatVersion\": \"2015-10-01\",\n \"RecordType\": \"A\",\n \"Endpoints\": {\n \"endpoint-start-NkPh\": {\n \"Type\": \"value\",\n \"Value\": \"10.0.0.2\"\n }\n },\n \"StartEndpoint\": \"endpoint-start-NkPh\"\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Route53 Traffic Policy using the `id` and `version`. For example:\n\n```sh\n$ pulumi import aws:route53/trafficPolicy:TrafficPolicy example 01a52019-d16f-422a-ae72-c306d2b6df7e/1\n```\n", + "description": "Manages a Route53 Traffic Policy.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.route53.TrafficPolicy(\"example\", {\n name: \"example\",\n comment: \"example comment\",\n document: `{\n \\\\\"AWSPolicyFormatVersion\\\\\": \\\\\"2015-10-01\\\\\",\n \\\\\"RecordType\\\\\": \\\\\"A\\\\\",\n \\\\\"Endpoints\\\\\": {\n \\\\\"endpoint-start-NkPh\\\\\": {\n \\\\\"Type\\\\\": \\\\\"value\\\\\",\n \\\\\"Value\\\\\": \\\\\"10.0.0.2\\\\\"\n }\n },\n \\\\\"StartEndpoint\\\\\": \\\\\"endpoint-start-NkPh\\\\\"\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.route53.TrafficPolicy(\"example\",\n name=\"example\",\n comment=\"example comment\",\n document=\"\"\"{\n \\\"AWSPolicyFormatVersion\\\": \\\"2015-10-01\\\",\n \\\"RecordType\\\": \\\"A\\\",\n \\\"Endpoints\\\": {\n \\\"endpoint-start-NkPh\\\": {\n \\\"Type\\\": \\\"value\\\",\n \\\"Value\\\": \\\"10.0.0.2\\\"\n }\n },\n \\\"StartEndpoint\\\": \\\"endpoint-start-NkPh\\\"\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Route53.TrafficPolicy(\"example\", new()\n {\n Name = \"example\",\n Comment = \"example comment\",\n Document = @\"{\n \\\"\"AWSPolicyFormatVersion\\\"\": \\\"\"2015-10-01\\\"\",\n \\\"\"RecordType\\\"\": \\\"\"A\\\"\",\n \\\"\"Endpoints\\\"\": {\n \\\"\"endpoint-start-NkPh\\\"\": {\n \\\"\"Type\\\"\": \\\"\"value\\\"\",\n \\\"\"Value\\\"\": \\\"\"10.0.0.2\\\"\"\n }\n },\n \\\"\"StartEndpoint\\\"\": \\\"\"endpoint-start-NkPh\\\"\"\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/route53\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := route53.NewTrafficPolicy(ctx, \"example\", \u0026route53.TrafficPolicyArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tComment: pulumi.String(\"example comment\"),\n\t\t\tDocument: pulumi.String(`{\n \\\"AWSPolicyFormatVersion\\\": \\\"2015-10-01\\\",\n \\\"RecordType\\\": \\\"A\\\",\n \\\"Endpoints\\\": {\n \\\"endpoint-start-NkPh\\\": {\n \\\"Type\\\": \\\"value\\\",\n \\\"Value\\\": \\\"10.0.0.2\\\"\n }\n },\n \\\"StartEndpoint\\\": \\\"endpoint-start-NkPh\\\"\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.route53.TrafficPolicy;\nimport com.pulumi.aws.route53.TrafficPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new TrafficPolicy(\"example\", TrafficPolicyArgs.builder()\n .name(\"example\")\n .comment(\"example comment\")\n .document(\"\"\"\n{\n \\\"AWSPolicyFormatVersion\\\": \\\"2015-10-01\\\",\n \\\"RecordType\\\": \\\"A\\\",\n \\\"Endpoints\\\": {\n \\\"endpoint-start-NkPh\\\": {\n \\\"Type\\\": \\\"value\\\",\n \\\"Value\\\": \\\"10.0.0.2\\\"\n }\n },\n \\\"StartEndpoint\\\": \\\"endpoint-start-NkPh\\\"\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:route53:TrafficPolicy\n properties:\n name: example\n comment: example comment\n document: |\n {\n \\\"AWSPolicyFormatVersion\\\": \\\"2015-10-01\\\",\n \\\"RecordType\\\": \\\"A\\\",\n \\\"Endpoints\\\": {\n \\\"endpoint-start-NkPh\\\": {\n \\\"Type\\\": \\\"value\\\",\n \\\"Value\\\": \\\"10.0.0.2\\\"\n }\n },\n \\\"StartEndpoint\\\": \\\"endpoint-start-NkPh\\\"\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Route53 Traffic Policy using the `id` and `version`. For example:\n\n```sh\n$ pulumi import aws:route53/trafficPolicy:TrafficPolicy example 01a52019-d16f-422a-ae72-c306d2b6df7e/1\n```\n", "properties": { "arn": { "type": "string", @@ -388446,7 +388446,7 @@ "deprecationMessage": "aws.s3/bucketversioningv2.BucketVersioningV2 has been deprecated in favor of aws.s3/bucketversioning.BucketVersioning" }, "aws:s3/bucketWebsiteConfiguration:BucketWebsiteConfiguration": { - "description": "Provides an S3 bucket website configuration resource. For more information, see [Hosting Websites on S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).\n\n\u003e This resource cannot be used with S3 directory buckets.\n\n## Example Usage\n\n### With \u003cspan pulumi-lang-nodejs=\"`routingRule`\" pulumi-lang-dotnet=\"`RoutingRule`\" pulumi-lang-go=\"`routingRule`\" pulumi-lang-python=\"`routing_rule`\" pulumi-lang-yaml=\"`routingRule`\" pulumi-lang-java=\"`routingRule`\"\u003e`routing_rule`\u003c/span\u003e configured\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.s3.BucketWebsiteConfiguration(\"example\", {\n bucket: exampleAwsS3Bucket.id,\n indexDocument: {\n suffix: \"index.html\",\n },\n errorDocument: {\n key: \"error.html\",\n },\n routingRules: [{\n condition: {\n keyPrefixEquals: \"docs/\",\n },\n redirect: {\n replaceKeyPrefixWith: \"documents/\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.s3.BucketWebsiteConfiguration(\"example\",\n bucket=example_aws_s3_bucket[\"id\"],\n index_document={\n \"suffix\": \"index.html\",\n },\n error_document={\n \"key\": \"error.html\",\n },\n routing_rules=[{\n \"condition\": {\n \"key_prefix_equals\": \"docs/\",\n },\n \"redirect\": {\n \"replace_key_prefix_with\": \"documents/\",\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.S3.BucketWebsiteConfiguration(\"example\", new()\n {\n Bucket = exampleAwsS3Bucket.Id,\n IndexDocument = new Aws.S3.Inputs.BucketWebsiteConfigurationIndexDocumentArgs\n {\n Suffix = \"index.html\",\n },\n ErrorDocument = new Aws.S3.Inputs.BucketWebsiteConfigurationErrorDocumentArgs\n {\n Key = \"error.html\",\n },\n RoutingRules = new[]\n {\n new Aws.S3.Inputs.BucketWebsiteConfigurationRoutingRuleArgs\n {\n Condition = new Aws.S3.Inputs.BucketWebsiteConfigurationRoutingRuleConditionArgs\n {\n KeyPrefixEquals = \"docs/\",\n },\n Redirect = new Aws.S3.Inputs.BucketWebsiteConfigurationRoutingRuleRedirectArgs\n {\n ReplaceKeyPrefixWith = \"documents/\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/s3\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := s3.NewBucketWebsiteConfiguration(ctx, \"example\", \u0026s3.BucketWebsiteConfigurationArgs{\n\t\t\tBucket: pulumi.Any(exampleAwsS3Bucket.Id),\n\t\t\tIndexDocument: \u0026s3.BucketWebsiteConfigurationIndexDocumentArgs{\n\t\t\t\tSuffix: pulumi.String(\"index.html\"),\n\t\t\t},\n\t\t\tErrorDocument: \u0026s3.BucketWebsiteConfigurationErrorDocumentArgs{\n\t\t\t\tKey: pulumi.String(\"error.html\"),\n\t\t\t},\n\t\t\tRoutingRules: s3.BucketWebsiteConfigurationRoutingRuleArray{\n\t\t\t\t\u0026s3.BucketWebsiteConfigurationRoutingRuleArgs{\n\t\t\t\t\tCondition: \u0026s3.BucketWebsiteConfigurationRoutingRuleConditionArgs{\n\t\t\t\t\t\tKeyPrefixEquals: pulumi.String(\"docs/\"),\n\t\t\t\t\t},\n\t\t\t\t\tRedirect: \u0026s3.BucketWebsiteConfigurationRoutingRuleRedirectArgs{\n\t\t\t\t\t\tReplaceKeyPrefixWith: pulumi.String(\"documents/\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.s3.BucketWebsiteConfiguration;\nimport com.pulumi.aws.s3.BucketWebsiteConfigurationArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationIndexDocumentArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationErrorDocumentArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationRoutingRuleArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationRoutingRuleConditionArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationRoutingRuleRedirectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new BucketWebsiteConfiguration(\"example\", BucketWebsiteConfigurationArgs.builder()\n .bucket(exampleAwsS3Bucket.id())\n .indexDocument(BucketWebsiteConfigurationIndexDocumentArgs.builder()\n .suffix(\"index.html\")\n .build())\n .errorDocument(BucketWebsiteConfigurationErrorDocumentArgs.builder()\n .key(\"error.html\")\n .build())\n .routingRules(BucketWebsiteConfigurationRoutingRuleArgs.builder()\n .condition(BucketWebsiteConfigurationRoutingRuleConditionArgs.builder()\n .keyPrefixEquals(\"docs/\")\n .build())\n .redirect(BucketWebsiteConfigurationRoutingRuleRedirectArgs.builder()\n .replaceKeyPrefixWith(\"documents/\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:s3:BucketWebsiteConfiguration\n properties:\n bucket: ${exampleAwsS3Bucket.id}\n indexDocument:\n suffix: index.html\n errorDocument:\n key: error.html\n routingRules:\n - condition:\n keyPrefixEquals: docs/\n redirect:\n replaceKeyPrefixWith: documents/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With \u003cspan pulumi-lang-nodejs=\"`routingRules`\" pulumi-lang-dotnet=\"`RoutingRules`\" pulumi-lang-go=\"`routingRules`\" pulumi-lang-python=\"`routing_rules`\" pulumi-lang-yaml=\"`routingRules`\" pulumi-lang-java=\"`routingRules`\"\u003e`routing_rules`\u003c/span\u003e configured\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.s3.BucketWebsiteConfiguration(\"example\", {\n bucket: exampleAwsS3Bucket.id,\n indexDocument: {\n suffix: \"index.html\",\n },\n errorDocument: {\n key: \"error.html\",\n },\n routingRuleDetails: `[{\n \"Condition\": {\n \"KeyPrefixEquals\": \"docs/\"\n },\n \"Redirect\": {\n \"ReplaceKeyPrefixWith\": \"\"\n }\n}]\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.s3.BucketWebsiteConfiguration(\"example\",\n bucket=example_aws_s3_bucket[\"id\"],\n index_document={\n \"suffix\": \"index.html\",\n },\n error_document={\n \"key\": \"error.html\",\n },\n routing_rule_details=\"\"\"[{\n \"Condition\": {\n \"KeyPrefixEquals\": \"docs/\"\n },\n \"Redirect\": {\n \"ReplaceKeyPrefixWith\": \"\"\n }\n}]\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.S3.BucketWebsiteConfiguration(\"example\", new()\n {\n Bucket = exampleAwsS3Bucket.Id,\n IndexDocument = new Aws.S3.Inputs.BucketWebsiteConfigurationIndexDocumentArgs\n {\n Suffix = \"index.html\",\n },\n ErrorDocument = new Aws.S3.Inputs.BucketWebsiteConfigurationErrorDocumentArgs\n {\n Key = \"error.html\",\n },\n RoutingRuleDetails = @\"[{\n \"\"Condition\"\": {\n \"\"KeyPrefixEquals\"\": \"\"docs/\"\"\n },\n \"\"Redirect\"\": {\n \"\"ReplaceKeyPrefixWith\"\": \"\"\"\"\n }\n}]\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/s3\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := s3.NewBucketWebsiteConfiguration(ctx, \"example\", \u0026s3.BucketWebsiteConfigurationArgs{\n\t\t\tBucket: pulumi.Any(exampleAwsS3Bucket.Id),\n\t\t\tIndexDocument: \u0026s3.BucketWebsiteConfigurationIndexDocumentArgs{\n\t\t\t\tSuffix: pulumi.String(\"index.html\"),\n\t\t\t},\n\t\t\tErrorDocument: \u0026s3.BucketWebsiteConfigurationErrorDocumentArgs{\n\t\t\t\tKey: pulumi.String(\"error.html\"),\n\t\t\t},\n\t\t\tRoutingRuleDetails: pulumi.String(`[{\n \"Condition\": {\n \"KeyPrefixEquals\": \"docs/\"\n },\n \"Redirect\": {\n \"ReplaceKeyPrefixWith\": \"\"\n }\n}]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.s3.BucketWebsiteConfiguration;\nimport com.pulumi.aws.s3.BucketWebsiteConfigurationArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationIndexDocumentArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationErrorDocumentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new BucketWebsiteConfiguration(\"example\", BucketWebsiteConfigurationArgs.builder()\n .bucket(exampleAwsS3Bucket.id())\n .indexDocument(BucketWebsiteConfigurationIndexDocumentArgs.builder()\n .suffix(\"index.html\")\n .build())\n .errorDocument(BucketWebsiteConfigurationErrorDocumentArgs.builder()\n .key(\"error.html\")\n .build())\n .routingRuleDetails(\"\"\"\n[{\n \"Condition\": {\n \"KeyPrefixEquals\": \"docs/\"\n },\n \"Redirect\": {\n \"ReplaceKeyPrefixWith\": \"\"\n }\n}]\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:s3:BucketWebsiteConfiguration\n properties:\n bucket: ${exampleAwsS3Bucket.id}\n indexDocument:\n suffix: index.html\n errorDocument:\n key: error.html\n routingRuleDetails: |\n [{\n \"Condition\": {\n \"KeyPrefixEquals\": \"docs/\"\n },\n \"Redirect\": {\n \"ReplaceKeyPrefixWith\": \"\"\n }\n }]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n* `bucket` (String) S3 bucket name.\n\n#### Optional\n\n* `account_id` (String) AWS Account where this resource is managed.\n\n* `expected_bucket_owner` (String) Account ID of the expected bucket owner.\n\n* `region` (String) Region where this resource is managed.\n\nIf the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`):\n\nterraform\n\nimport {\n\n to = aws_s3_bucket_website_configuration.example\n\n id = \"bucket-name,123456789012\"\n\n}\n\n**Using `pulumi import` to import** S3 bucket website configuration using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example:\n\nIf the owner (account ID) of the source bucket is the same account used to configure the AWS Provider, import using the `bucket`:\n\nconsole\n\n% pulumi import aws_s3_bucket_website_configuration.example bucket-name\n\nIf the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`):\n\nconsole\n\n% pulumi import aws_s3_bucket_website_configuration.example bucket-name,123456789012\n\n", + "description": "Provides an S3 bucket website configuration resource. For more information, see [Hosting Websites on S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).\n\n\u003e This resource cannot be used with S3 directory buckets.\n\n## Example Usage\n\n### With \u003cspan pulumi-lang-nodejs=\"`routingRule`\" pulumi-lang-dotnet=\"`RoutingRule`\" pulumi-lang-go=\"`routingRule`\" pulumi-lang-python=\"`routing_rule`\" pulumi-lang-yaml=\"`routingRule`\" pulumi-lang-java=\"`routingRule`\"\u003e`routing_rule`\u003c/span\u003e configured\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.s3.BucketWebsiteConfiguration(\"example\", {\n bucket: exampleAwsS3Bucket.id,\n indexDocument: {\n suffix: \"index.html\",\n },\n errorDocument: {\n key: \"error.html\",\n },\n routingRules: [{\n condition: {\n keyPrefixEquals: \"docs/\",\n },\n redirect: {\n replaceKeyPrefixWith: \"documents/\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.s3.BucketWebsiteConfiguration(\"example\",\n bucket=example_aws_s3_bucket[\"id\"],\n index_document={\n \"suffix\": \"index.html\",\n },\n error_document={\n \"key\": \"error.html\",\n },\n routing_rules=[{\n \"condition\": {\n \"key_prefix_equals\": \"docs/\",\n },\n \"redirect\": {\n \"replace_key_prefix_with\": \"documents/\",\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.S3.BucketWebsiteConfiguration(\"example\", new()\n {\n Bucket = exampleAwsS3Bucket.Id,\n IndexDocument = new Aws.S3.Inputs.BucketWebsiteConfigurationIndexDocumentArgs\n {\n Suffix = \"index.html\",\n },\n ErrorDocument = new Aws.S3.Inputs.BucketWebsiteConfigurationErrorDocumentArgs\n {\n Key = \"error.html\",\n },\n RoutingRules = new[]\n {\n new Aws.S3.Inputs.BucketWebsiteConfigurationRoutingRuleArgs\n {\n Condition = new Aws.S3.Inputs.BucketWebsiteConfigurationRoutingRuleConditionArgs\n {\n KeyPrefixEquals = \"docs/\",\n },\n Redirect = new Aws.S3.Inputs.BucketWebsiteConfigurationRoutingRuleRedirectArgs\n {\n ReplaceKeyPrefixWith = \"documents/\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/s3\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := s3.NewBucketWebsiteConfiguration(ctx, \"example\", \u0026s3.BucketWebsiteConfigurationArgs{\n\t\t\tBucket: pulumi.Any(exampleAwsS3Bucket.Id),\n\t\t\tIndexDocument: \u0026s3.BucketWebsiteConfigurationIndexDocumentArgs{\n\t\t\t\tSuffix: pulumi.String(\"index.html\"),\n\t\t\t},\n\t\t\tErrorDocument: \u0026s3.BucketWebsiteConfigurationErrorDocumentArgs{\n\t\t\t\tKey: pulumi.String(\"error.html\"),\n\t\t\t},\n\t\t\tRoutingRules: s3.BucketWebsiteConfigurationRoutingRuleArray{\n\t\t\t\t\u0026s3.BucketWebsiteConfigurationRoutingRuleArgs{\n\t\t\t\t\tCondition: \u0026s3.BucketWebsiteConfigurationRoutingRuleConditionArgs{\n\t\t\t\t\t\tKeyPrefixEquals: pulumi.String(\"docs/\"),\n\t\t\t\t\t},\n\t\t\t\t\tRedirect: \u0026s3.BucketWebsiteConfigurationRoutingRuleRedirectArgs{\n\t\t\t\t\t\tReplaceKeyPrefixWith: pulumi.String(\"documents/\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.s3.BucketWebsiteConfiguration;\nimport com.pulumi.aws.s3.BucketWebsiteConfigurationArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationIndexDocumentArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationErrorDocumentArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationRoutingRuleArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationRoutingRuleConditionArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationRoutingRuleRedirectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new BucketWebsiteConfiguration(\"example\", BucketWebsiteConfigurationArgs.builder()\n .bucket(exampleAwsS3Bucket.id())\n .indexDocument(BucketWebsiteConfigurationIndexDocumentArgs.builder()\n .suffix(\"index.html\")\n .build())\n .errorDocument(BucketWebsiteConfigurationErrorDocumentArgs.builder()\n .key(\"error.html\")\n .build())\n .routingRules(BucketWebsiteConfigurationRoutingRuleArgs.builder()\n .condition(BucketWebsiteConfigurationRoutingRuleConditionArgs.builder()\n .keyPrefixEquals(\"docs/\")\n .build())\n .redirect(BucketWebsiteConfigurationRoutingRuleRedirectArgs.builder()\n .replaceKeyPrefixWith(\"documents/\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:s3:BucketWebsiteConfiguration\n properties:\n bucket: ${exampleAwsS3Bucket.id}\n indexDocument:\n suffix: index.html\n errorDocument:\n key: error.html\n routingRules:\n - condition:\n keyPrefixEquals: docs/\n redirect:\n replaceKeyPrefixWith: documents/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With \u003cspan pulumi-lang-nodejs=\"`routingRules`\" pulumi-lang-dotnet=\"`RoutingRules`\" pulumi-lang-go=\"`routingRules`\" pulumi-lang-python=\"`routing_rules`\" pulumi-lang-yaml=\"`routingRules`\" pulumi-lang-java=\"`routingRules`\"\u003e`routing_rules`\u003c/span\u003e configured\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.s3.BucketWebsiteConfiguration(\"example\", {\n bucket: exampleAwsS3Bucket.id,\n indexDocument: {\n suffix: \"index.html\",\n },\n errorDocument: {\n key: \"error.html\",\n },\n routingRuleDetails: `[{\n \\\\\"Condition\\\\\": {\n \\\\\"KeyPrefixEquals\\\\\": \\\\\"docs/\\\\\"\n },\n \\\\\"Redirect\\\\\": {\n \\\\\"ReplaceKeyPrefixWith\\\\\": \\\\\"\\\\\"\n }\n}]\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.s3.BucketWebsiteConfiguration(\"example\",\n bucket=example_aws_s3_bucket[\"id\"],\n index_document={\n \"suffix\": \"index.html\",\n },\n error_document={\n \"key\": \"error.html\",\n },\n routing_rule_details=\"\"\"[{\n \\\"Condition\\\": {\n \\\"KeyPrefixEquals\\\": \\\"docs/\\\"\n },\n \\\"Redirect\\\": {\n \\\"ReplaceKeyPrefixWith\\\": \\\"\\\"\n }\n}]\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.S3.BucketWebsiteConfiguration(\"example\", new()\n {\n Bucket = exampleAwsS3Bucket.Id,\n IndexDocument = new Aws.S3.Inputs.BucketWebsiteConfigurationIndexDocumentArgs\n {\n Suffix = \"index.html\",\n },\n ErrorDocument = new Aws.S3.Inputs.BucketWebsiteConfigurationErrorDocumentArgs\n {\n Key = \"error.html\",\n },\n RoutingRuleDetails = @\"[{\n \\\"\"Condition\\\"\": {\n \\\"\"KeyPrefixEquals\\\"\": \\\"\"docs/\\\"\"\n },\n \\\"\"Redirect\\\"\": {\n \\\"\"ReplaceKeyPrefixWith\\\"\": \\\"\"\\\"\"\n }\n}]\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/s3\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := s3.NewBucketWebsiteConfiguration(ctx, \"example\", \u0026s3.BucketWebsiteConfigurationArgs{\n\t\t\tBucket: pulumi.Any(exampleAwsS3Bucket.Id),\n\t\t\tIndexDocument: \u0026s3.BucketWebsiteConfigurationIndexDocumentArgs{\n\t\t\t\tSuffix: pulumi.String(\"index.html\"),\n\t\t\t},\n\t\t\tErrorDocument: \u0026s3.BucketWebsiteConfigurationErrorDocumentArgs{\n\t\t\t\tKey: pulumi.String(\"error.html\"),\n\t\t\t},\n\t\t\tRoutingRuleDetails: pulumi.String(`[{\n \\\"Condition\\\": {\n \\\"KeyPrefixEquals\\\": \\\"docs/\\\"\n },\n \\\"Redirect\\\": {\n \\\"ReplaceKeyPrefixWith\\\": \\\"\\\"\n }\n}]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.s3.BucketWebsiteConfiguration;\nimport com.pulumi.aws.s3.BucketWebsiteConfigurationArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationIndexDocumentArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationErrorDocumentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new BucketWebsiteConfiguration(\"example\", BucketWebsiteConfigurationArgs.builder()\n .bucket(exampleAwsS3Bucket.id())\n .indexDocument(BucketWebsiteConfigurationIndexDocumentArgs.builder()\n .suffix(\"index.html\")\n .build())\n .errorDocument(BucketWebsiteConfigurationErrorDocumentArgs.builder()\n .key(\"error.html\")\n .build())\n .routingRuleDetails(\"\"\"\n[{\n \\\"Condition\\\": {\n \\\"KeyPrefixEquals\\\": \\\"docs/\\\"\n },\n \\\"Redirect\\\": {\n \\\"ReplaceKeyPrefixWith\\\": \\\"\\\"\n }\n}]\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:s3:BucketWebsiteConfiguration\n properties:\n bucket: ${exampleAwsS3Bucket.id}\n indexDocument:\n suffix: index.html\n errorDocument:\n key: error.html\n routingRuleDetails: |\n [{\n \\\"Condition\\\": {\n \\\"KeyPrefixEquals\\\": \\\"docs/\\\"\n },\n \\\"Redirect\\\": {\n \\\"ReplaceKeyPrefixWith\\\": \\\"\\\"\n }\n }]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n* `bucket` (String) S3 bucket name.\n\n#### Optional\n\n* `account_id` (String) AWS Account where this resource is managed.\n\n* `expected_bucket_owner` (String) Account ID of the expected bucket owner.\n\n* `region` (String) Region where this resource is managed.\n\nIf the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`):\n\nterraform\n\nimport {\n\n to = aws_s3_bucket_website_configuration.example\n\n id = \"bucket-name,123456789012\"\n\n}\n\n**Using `pulumi import` to import** S3 bucket website configuration using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example:\n\nIf the owner (account ID) of the source bucket is the same account used to configure the AWS Provider, import using the `bucket`:\n\nconsole\n\n% pulumi import aws_s3_bucket_website_configuration.example bucket-name\n\nIf the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`):\n\nconsole\n\n% pulumi import aws_s3_bucket_website_configuration.example bucket-name,123456789012\n\n", "properties": { "bucket": { "type": "string", @@ -388600,7 +388600,7 @@ ] }, "aws:s3/bucketWebsiteConfigurationV2:BucketWebsiteConfigurationV2": { - "description": "Provides an S3 bucket website configuration resource. For more information, see [Hosting Websites on S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).\n\n\u003e This resource cannot be used with S3 directory buckets.\n\n## Example Usage\n\n### With \u003cspan pulumi-lang-nodejs=\"`routingRule`\" pulumi-lang-dotnet=\"`RoutingRule`\" pulumi-lang-go=\"`routingRule`\" pulumi-lang-python=\"`routing_rule`\" pulumi-lang-yaml=\"`routingRule`\" pulumi-lang-java=\"`routingRule`\"\u003e`routing_rule`\u003c/span\u003e configured\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.s3.BucketWebsiteConfiguration(\"example\", {\n bucket: exampleAwsS3Bucket.id,\n indexDocument: {\n suffix: \"index.html\",\n },\n errorDocument: {\n key: \"error.html\",\n },\n routingRules: [{\n condition: {\n keyPrefixEquals: \"docs/\",\n },\n redirect: {\n replaceKeyPrefixWith: \"documents/\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.s3.BucketWebsiteConfiguration(\"example\",\n bucket=example_aws_s3_bucket[\"id\"],\n index_document={\n \"suffix\": \"index.html\",\n },\n error_document={\n \"key\": \"error.html\",\n },\n routing_rules=[{\n \"condition\": {\n \"key_prefix_equals\": \"docs/\",\n },\n \"redirect\": {\n \"replace_key_prefix_with\": \"documents/\",\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.S3.BucketWebsiteConfiguration(\"example\", new()\n {\n Bucket = exampleAwsS3Bucket.Id,\n IndexDocument = new Aws.S3.Inputs.BucketWebsiteConfigurationIndexDocumentArgs\n {\n Suffix = \"index.html\",\n },\n ErrorDocument = new Aws.S3.Inputs.BucketWebsiteConfigurationErrorDocumentArgs\n {\n Key = \"error.html\",\n },\n RoutingRules = new[]\n {\n new Aws.S3.Inputs.BucketWebsiteConfigurationRoutingRuleArgs\n {\n Condition = new Aws.S3.Inputs.BucketWebsiteConfigurationRoutingRuleConditionArgs\n {\n KeyPrefixEquals = \"docs/\",\n },\n Redirect = new Aws.S3.Inputs.BucketWebsiteConfigurationRoutingRuleRedirectArgs\n {\n ReplaceKeyPrefixWith = \"documents/\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/s3\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := s3.NewBucketWebsiteConfiguration(ctx, \"example\", \u0026s3.BucketWebsiteConfigurationArgs{\n\t\t\tBucket: pulumi.Any(exampleAwsS3Bucket.Id),\n\t\t\tIndexDocument: \u0026s3.BucketWebsiteConfigurationIndexDocumentArgs{\n\t\t\t\tSuffix: pulumi.String(\"index.html\"),\n\t\t\t},\n\t\t\tErrorDocument: \u0026s3.BucketWebsiteConfigurationErrorDocumentArgs{\n\t\t\t\tKey: pulumi.String(\"error.html\"),\n\t\t\t},\n\t\t\tRoutingRules: s3.BucketWebsiteConfigurationRoutingRuleArray{\n\t\t\t\t\u0026s3.BucketWebsiteConfigurationRoutingRuleArgs{\n\t\t\t\t\tCondition: \u0026s3.BucketWebsiteConfigurationRoutingRuleConditionArgs{\n\t\t\t\t\t\tKeyPrefixEquals: pulumi.String(\"docs/\"),\n\t\t\t\t\t},\n\t\t\t\t\tRedirect: \u0026s3.BucketWebsiteConfigurationRoutingRuleRedirectArgs{\n\t\t\t\t\t\tReplaceKeyPrefixWith: pulumi.String(\"documents/\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.s3.BucketWebsiteConfiguration;\nimport com.pulumi.aws.s3.BucketWebsiteConfigurationArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationIndexDocumentArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationErrorDocumentArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationRoutingRuleArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationRoutingRuleConditionArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationRoutingRuleRedirectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new BucketWebsiteConfiguration(\"example\", BucketWebsiteConfigurationArgs.builder()\n .bucket(exampleAwsS3Bucket.id())\n .indexDocument(BucketWebsiteConfigurationIndexDocumentArgs.builder()\n .suffix(\"index.html\")\n .build())\n .errorDocument(BucketWebsiteConfigurationErrorDocumentArgs.builder()\n .key(\"error.html\")\n .build())\n .routingRules(BucketWebsiteConfigurationRoutingRuleArgs.builder()\n .condition(BucketWebsiteConfigurationRoutingRuleConditionArgs.builder()\n .keyPrefixEquals(\"docs/\")\n .build())\n .redirect(BucketWebsiteConfigurationRoutingRuleRedirectArgs.builder()\n .replaceKeyPrefixWith(\"documents/\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:s3:BucketWebsiteConfiguration\n properties:\n bucket: ${exampleAwsS3Bucket.id}\n indexDocument:\n suffix: index.html\n errorDocument:\n key: error.html\n routingRules:\n - condition:\n keyPrefixEquals: docs/\n redirect:\n replaceKeyPrefixWith: documents/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With \u003cspan pulumi-lang-nodejs=\"`routingRules`\" pulumi-lang-dotnet=\"`RoutingRules`\" pulumi-lang-go=\"`routingRules`\" pulumi-lang-python=\"`routing_rules`\" pulumi-lang-yaml=\"`routingRules`\" pulumi-lang-java=\"`routingRules`\"\u003e`routing_rules`\u003c/span\u003e configured\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.s3.BucketWebsiteConfiguration(\"example\", {\n bucket: exampleAwsS3Bucket.id,\n indexDocument: {\n suffix: \"index.html\",\n },\n errorDocument: {\n key: \"error.html\",\n },\n routingRuleDetails: `[{\n \"Condition\": {\n \"KeyPrefixEquals\": \"docs/\"\n },\n \"Redirect\": {\n \"ReplaceKeyPrefixWith\": \"\"\n }\n}]\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.s3.BucketWebsiteConfiguration(\"example\",\n bucket=example_aws_s3_bucket[\"id\"],\n index_document={\n \"suffix\": \"index.html\",\n },\n error_document={\n \"key\": \"error.html\",\n },\n routing_rule_details=\"\"\"[{\n \"Condition\": {\n \"KeyPrefixEquals\": \"docs/\"\n },\n \"Redirect\": {\n \"ReplaceKeyPrefixWith\": \"\"\n }\n}]\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.S3.BucketWebsiteConfiguration(\"example\", new()\n {\n Bucket = exampleAwsS3Bucket.Id,\n IndexDocument = new Aws.S3.Inputs.BucketWebsiteConfigurationIndexDocumentArgs\n {\n Suffix = \"index.html\",\n },\n ErrorDocument = new Aws.S3.Inputs.BucketWebsiteConfigurationErrorDocumentArgs\n {\n Key = \"error.html\",\n },\n RoutingRuleDetails = @\"[{\n \"\"Condition\"\": {\n \"\"KeyPrefixEquals\"\": \"\"docs/\"\"\n },\n \"\"Redirect\"\": {\n \"\"ReplaceKeyPrefixWith\"\": \"\"\"\"\n }\n}]\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/s3\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := s3.NewBucketWebsiteConfiguration(ctx, \"example\", \u0026s3.BucketWebsiteConfigurationArgs{\n\t\t\tBucket: pulumi.Any(exampleAwsS3Bucket.Id),\n\t\t\tIndexDocument: \u0026s3.BucketWebsiteConfigurationIndexDocumentArgs{\n\t\t\t\tSuffix: pulumi.String(\"index.html\"),\n\t\t\t},\n\t\t\tErrorDocument: \u0026s3.BucketWebsiteConfigurationErrorDocumentArgs{\n\t\t\t\tKey: pulumi.String(\"error.html\"),\n\t\t\t},\n\t\t\tRoutingRuleDetails: pulumi.String(`[{\n \"Condition\": {\n \"KeyPrefixEquals\": \"docs/\"\n },\n \"Redirect\": {\n \"ReplaceKeyPrefixWith\": \"\"\n }\n}]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.s3.BucketWebsiteConfiguration;\nimport com.pulumi.aws.s3.BucketWebsiteConfigurationArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationIndexDocumentArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationErrorDocumentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new BucketWebsiteConfiguration(\"example\", BucketWebsiteConfigurationArgs.builder()\n .bucket(exampleAwsS3Bucket.id())\n .indexDocument(BucketWebsiteConfigurationIndexDocumentArgs.builder()\n .suffix(\"index.html\")\n .build())\n .errorDocument(BucketWebsiteConfigurationErrorDocumentArgs.builder()\n .key(\"error.html\")\n .build())\n .routingRuleDetails(\"\"\"\n[{\n \"Condition\": {\n \"KeyPrefixEquals\": \"docs/\"\n },\n \"Redirect\": {\n \"ReplaceKeyPrefixWith\": \"\"\n }\n}]\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:s3:BucketWebsiteConfiguration\n properties:\n bucket: ${exampleAwsS3Bucket.id}\n indexDocument:\n suffix: index.html\n errorDocument:\n key: error.html\n routingRuleDetails: |\n [{\n \"Condition\": {\n \"KeyPrefixEquals\": \"docs/\"\n },\n \"Redirect\": {\n \"ReplaceKeyPrefixWith\": \"\"\n }\n }]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n* `bucket` (String) S3 bucket name.\n\n#### Optional\n\n* `account_id` (String) AWS Account where this resource is managed.\n\n* `expected_bucket_owner` (String) Account ID of the expected bucket owner.\n\n* `region` (String) Region where this resource is managed.\n\nIf the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`):\n\nterraform\n\nimport {\n\n to = aws_s3_bucket_website_configuration.example\n\n id = \"bucket-name,123456789012\"\n\n}\n\n**Using `pulumi import` to import** S3 bucket website configuration using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example:\n\nIf the owner (account ID) of the source bucket is the same account used to configure the AWS Provider, import using the `bucket`:\n\nconsole\n\n% pulumi import aws_s3_bucket_website_configuration.example bucket-name\n\nIf the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`):\n\nconsole\n\n% pulumi import aws_s3_bucket_website_configuration.example bucket-name,123456789012\n\n", + "description": "Provides an S3 bucket website configuration resource. For more information, see [Hosting Websites on S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).\n\n\u003e This resource cannot be used with S3 directory buckets.\n\n## Example Usage\n\n### With \u003cspan pulumi-lang-nodejs=\"`routingRule`\" pulumi-lang-dotnet=\"`RoutingRule`\" pulumi-lang-go=\"`routingRule`\" pulumi-lang-python=\"`routing_rule`\" pulumi-lang-yaml=\"`routingRule`\" pulumi-lang-java=\"`routingRule`\"\u003e`routing_rule`\u003c/span\u003e configured\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.s3.BucketWebsiteConfiguration(\"example\", {\n bucket: exampleAwsS3Bucket.id,\n indexDocument: {\n suffix: \"index.html\",\n },\n errorDocument: {\n key: \"error.html\",\n },\n routingRules: [{\n condition: {\n keyPrefixEquals: \"docs/\",\n },\n redirect: {\n replaceKeyPrefixWith: \"documents/\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.s3.BucketWebsiteConfiguration(\"example\",\n bucket=example_aws_s3_bucket[\"id\"],\n index_document={\n \"suffix\": \"index.html\",\n },\n error_document={\n \"key\": \"error.html\",\n },\n routing_rules=[{\n \"condition\": {\n \"key_prefix_equals\": \"docs/\",\n },\n \"redirect\": {\n \"replace_key_prefix_with\": \"documents/\",\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.S3.BucketWebsiteConfiguration(\"example\", new()\n {\n Bucket = exampleAwsS3Bucket.Id,\n IndexDocument = new Aws.S3.Inputs.BucketWebsiteConfigurationIndexDocumentArgs\n {\n Suffix = \"index.html\",\n },\n ErrorDocument = new Aws.S3.Inputs.BucketWebsiteConfigurationErrorDocumentArgs\n {\n Key = \"error.html\",\n },\n RoutingRules = new[]\n {\n new Aws.S3.Inputs.BucketWebsiteConfigurationRoutingRuleArgs\n {\n Condition = new Aws.S3.Inputs.BucketWebsiteConfigurationRoutingRuleConditionArgs\n {\n KeyPrefixEquals = \"docs/\",\n },\n Redirect = new Aws.S3.Inputs.BucketWebsiteConfigurationRoutingRuleRedirectArgs\n {\n ReplaceKeyPrefixWith = \"documents/\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/s3\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := s3.NewBucketWebsiteConfiguration(ctx, \"example\", \u0026s3.BucketWebsiteConfigurationArgs{\n\t\t\tBucket: pulumi.Any(exampleAwsS3Bucket.Id),\n\t\t\tIndexDocument: \u0026s3.BucketWebsiteConfigurationIndexDocumentArgs{\n\t\t\t\tSuffix: pulumi.String(\"index.html\"),\n\t\t\t},\n\t\t\tErrorDocument: \u0026s3.BucketWebsiteConfigurationErrorDocumentArgs{\n\t\t\t\tKey: pulumi.String(\"error.html\"),\n\t\t\t},\n\t\t\tRoutingRules: s3.BucketWebsiteConfigurationRoutingRuleArray{\n\t\t\t\t\u0026s3.BucketWebsiteConfigurationRoutingRuleArgs{\n\t\t\t\t\tCondition: \u0026s3.BucketWebsiteConfigurationRoutingRuleConditionArgs{\n\t\t\t\t\t\tKeyPrefixEquals: pulumi.String(\"docs/\"),\n\t\t\t\t\t},\n\t\t\t\t\tRedirect: \u0026s3.BucketWebsiteConfigurationRoutingRuleRedirectArgs{\n\t\t\t\t\t\tReplaceKeyPrefixWith: pulumi.String(\"documents/\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.s3.BucketWebsiteConfiguration;\nimport com.pulumi.aws.s3.BucketWebsiteConfigurationArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationIndexDocumentArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationErrorDocumentArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationRoutingRuleArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationRoutingRuleConditionArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationRoutingRuleRedirectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new BucketWebsiteConfiguration(\"example\", BucketWebsiteConfigurationArgs.builder()\n .bucket(exampleAwsS3Bucket.id())\n .indexDocument(BucketWebsiteConfigurationIndexDocumentArgs.builder()\n .suffix(\"index.html\")\n .build())\n .errorDocument(BucketWebsiteConfigurationErrorDocumentArgs.builder()\n .key(\"error.html\")\n .build())\n .routingRules(BucketWebsiteConfigurationRoutingRuleArgs.builder()\n .condition(BucketWebsiteConfigurationRoutingRuleConditionArgs.builder()\n .keyPrefixEquals(\"docs/\")\n .build())\n .redirect(BucketWebsiteConfigurationRoutingRuleRedirectArgs.builder()\n .replaceKeyPrefixWith(\"documents/\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:s3:BucketWebsiteConfiguration\n properties:\n bucket: ${exampleAwsS3Bucket.id}\n indexDocument:\n suffix: index.html\n errorDocument:\n key: error.html\n routingRules:\n - condition:\n keyPrefixEquals: docs/\n redirect:\n replaceKeyPrefixWith: documents/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With \u003cspan pulumi-lang-nodejs=\"`routingRules`\" pulumi-lang-dotnet=\"`RoutingRules`\" pulumi-lang-go=\"`routingRules`\" pulumi-lang-python=\"`routing_rules`\" pulumi-lang-yaml=\"`routingRules`\" pulumi-lang-java=\"`routingRules`\"\u003e`routing_rules`\u003c/span\u003e configured\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.s3.BucketWebsiteConfiguration(\"example\", {\n bucket: exampleAwsS3Bucket.id,\n indexDocument: {\n suffix: \"index.html\",\n },\n errorDocument: {\n key: \"error.html\",\n },\n routingRuleDetails: `[{\n \\\\\"Condition\\\\\": {\n \\\\\"KeyPrefixEquals\\\\\": \\\\\"docs/\\\\\"\n },\n \\\\\"Redirect\\\\\": {\n \\\\\"ReplaceKeyPrefixWith\\\\\": \\\\\"\\\\\"\n }\n}]\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.s3.BucketWebsiteConfiguration(\"example\",\n bucket=example_aws_s3_bucket[\"id\"],\n index_document={\n \"suffix\": \"index.html\",\n },\n error_document={\n \"key\": \"error.html\",\n },\n routing_rule_details=\"\"\"[{\n \\\"Condition\\\": {\n \\\"KeyPrefixEquals\\\": \\\"docs/\\\"\n },\n \\\"Redirect\\\": {\n \\\"ReplaceKeyPrefixWith\\\": \\\"\\\"\n }\n}]\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.S3.BucketWebsiteConfiguration(\"example\", new()\n {\n Bucket = exampleAwsS3Bucket.Id,\n IndexDocument = new Aws.S3.Inputs.BucketWebsiteConfigurationIndexDocumentArgs\n {\n Suffix = \"index.html\",\n },\n ErrorDocument = new Aws.S3.Inputs.BucketWebsiteConfigurationErrorDocumentArgs\n {\n Key = \"error.html\",\n },\n RoutingRuleDetails = @\"[{\n \\\"\"Condition\\\"\": {\n \\\"\"KeyPrefixEquals\\\"\": \\\"\"docs/\\\"\"\n },\n \\\"\"Redirect\\\"\": {\n \\\"\"ReplaceKeyPrefixWith\\\"\": \\\"\"\\\"\"\n }\n}]\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/s3\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := s3.NewBucketWebsiteConfiguration(ctx, \"example\", \u0026s3.BucketWebsiteConfigurationArgs{\n\t\t\tBucket: pulumi.Any(exampleAwsS3Bucket.Id),\n\t\t\tIndexDocument: \u0026s3.BucketWebsiteConfigurationIndexDocumentArgs{\n\t\t\t\tSuffix: pulumi.String(\"index.html\"),\n\t\t\t},\n\t\t\tErrorDocument: \u0026s3.BucketWebsiteConfigurationErrorDocumentArgs{\n\t\t\t\tKey: pulumi.String(\"error.html\"),\n\t\t\t},\n\t\t\tRoutingRuleDetails: pulumi.String(`[{\n \\\"Condition\\\": {\n \\\"KeyPrefixEquals\\\": \\\"docs/\\\"\n },\n \\\"Redirect\\\": {\n \\\"ReplaceKeyPrefixWith\\\": \\\"\\\"\n }\n}]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.s3.BucketWebsiteConfiguration;\nimport com.pulumi.aws.s3.BucketWebsiteConfigurationArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationIndexDocumentArgs;\nimport com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationErrorDocumentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new BucketWebsiteConfiguration(\"example\", BucketWebsiteConfigurationArgs.builder()\n .bucket(exampleAwsS3Bucket.id())\n .indexDocument(BucketWebsiteConfigurationIndexDocumentArgs.builder()\n .suffix(\"index.html\")\n .build())\n .errorDocument(BucketWebsiteConfigurationErrorDocumentArgs.builder()\n .key(\"error.html\")\n .build())\n .routingRuleDetails(\"\"\"\n[{\n \\\"Condition\\\": {\n \\\"KeyPrefixEquals\\\": \\\"docs/\\\"\n },\n \\\"Redirect\\\": {\n \\\"ReplaceKeyPrefixWith\\\": \\\"\\\"\n }\n}]\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:s3:BucketWebsiteConfiguration\n properties:\n bucket: ${exampleAwsS3Bucket.id}\n indexDocument:\n suffix: index.html\n errorDocument:\n key: error.html\n routingRuleDetails: |\n [{\n \\\"Condition\\\": {\n \\\"KeyPrefixEquals\\\": \\\"docs/\\\"\n },\n \\\"Redirect\\\": {\n \\\"ReplaceKeyPrefixWith\\\": \\\"\\\"\n }\n }]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n* `bucket` (String) S3 bucket name.\n\n#### Optional\n\n* `account_id` (String) AWS Account where this resource is managed.\n\n* `expected_bucket_owner` (String) Account ID of the expected bucket owner.\n\n* `region` (String) Region where this resource is managed.\n\nIf the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`):\n\nterraform\n\nimport {\n\n to = aws_s3_bucket_website_configuration.example\n\n id = \"bucket-name,123456789012\"\n\n}\n\n**Using `pulumi import` to import** S3 bucket website configuration using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example:\n\nIf the owner (account ID) of the source bucket is the same account used to configure the AWS Provider, import using the `bucket`:\n\nconsole\n\n% pulumi import aws_s3_bucket_website_configuration.example bucket-name\n\nIf the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`):\n\nconsole\n\n% pulumi import aws_s3_bucket_website_configuration.example bucket-name,123456789012\n\n", "properties": { "bucket": { "type": "string", @@ -390019,7 +390019,7 @@ } }, "aws:s3control/accessGrantsInstanceResourcePolicy:AccessGrantsInstanceResourcePolicy": { - "description": "Provides a resource to manage an S3 Access Grants instance resource policy.\nUse a resource policy to manage cross-account access to your S3 Access Grants instance.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.s3control.AccessGrantsInstance(\"example\", {});\nconst exampleAccessGrantsInstanceResourcePolicy = new aws.s3control.AccessGrantsInstanceResourcePolicy(\"example\", {policy: pulumi.interpolate`{\n \"Version\": \"2012-10-17\",\n \"Id\": \"S3AccessGrantsPolicy\",\n \"Statement\": [{\n \"Sid\": \"AllowAccessToS3AccessGrants\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"123456789456\"\n },\n \"Action\": [\n \"s3:ListAccessGrants\",\n \"s3:ListAccessGrantsLocations\",\n \"s3:GetDataAccess\"\n ],\n \"Resource\": \"${example.accessGrantsInstanceArn}\"\n }]\n}\n`});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.s3control.AccessGrantsInstance(\"example\")\nexample_access_grants_instance_resource_policy = aws.s3control.AccessGrantsInstanceResourcePolicy(\"example\", policy=example.access_grants_instance_arn.apply(lambda access_grants_instance_arn: f\"\"\"{{\n \"Version\": \"2012-10-17\",\n \"Id\": \"S3AccessGrantsPolicy\",\n \"Statement\": [{{\n \"Sid\": \"AllowAccessToS3AccessGrants\",\n \"Effect\": \"Allow\",\n \"Principal\": {{\n \"AWS\": \"123456789456\"\n }},\n \"Action\": [\n \"s3:ListAccessGrants\",\n \"s3:ListAccessGrantsLocations\",\n \"s3:GetDataAccess\"\n ],\n \"Resource\": \"{access_grants_instance_arn}\"\n }}]\n}}\n\"\"\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.S3Control.AccessGrantsInstance(\"example\");\n\n var exampleAccessGrantsInstanceResourcePolicy = new Aws.S3Control.AccessGrantsInstanceResourcePolicy(\"example\", new()\n {\n Policy = example.AccessGrantsInstanceArn.Apply(accessGrantsInstanceArn =\u003e @$\"{{\n \"\"Version\"\": \"\"2012-10-17\"\",\n \"\"Id\"\": \"\"S3AccessGrantsPolicy\"\",\n \"\"Statement\"\": [{{\n \"\"Sid\"\": \"\"AllowAccessToS3AccessGrants\"\",\n \"\"Effect\"\": \"\"Allow\"\",\n \"\"Principal\"\": {{\n \"\"AWS\"\": \"\"123456789456\"\"\n }},\n \"\"Action\"\": [\n \"\"s3:ListAccessGrants\"\",\n \"\"s3:ListAccessGrantsLocations\"\",\n \"\"s3:GetDataAccess\"\"\n ],\n \"\"Resource\"\": \"\"{accessGrantsInstanceArn}\"\"\n }}]\n}}\n\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/s3control\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := s3control.NewAccessGrantsInstance(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = s3control.NewAccessGrantsInstanceResourcePolicy(ctx, \"example\", \u0026s3control.AccessGrantsInstanceResourcePolicyArgs{\n\t\t\tPolicy: example.AccessGrantsInstanceArn.ApplyT(func(accessGrantsInstanceArn string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(`{\n \"Version\": \"2012-10-17\",\n \"Id\": \"S3AccessGrantsPolicy\",\n \"Statement\": [{\n \"Sid\": \"AllowAccessToS3AccessGrants\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"123456789456\"\n },\n \"Action\": [\n \"s3:ListAccessGrants\",\n \"s3:ListAccessGrantsLocations\",\n \"s3:GetDataAccess\"\n ],\n \"Resource\": \"%v\"\n }]\n}\n`, accessGrantsInstanceArn), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.s3control.AccessGrantsInstance;\nimport com.pulumi.aws.s3control.AccessGrantsInstanceResourcePolicy;\nimport com.pulumi.aws.s3control.AccessGrantsInstanceResourcePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new AccessGrantsInstance(\"example\");\n\n var exampleAccessGrantsInstanceResourcePolicy = new AccessGrantsInstanceResourcePolicy(\"exampleAccessGrantsInstanceResourcePolicy\", AccessGrantsInstanceResourcePolicyArgs.builder()\n .policy(example.accessGrantsInstanceArn().applyValue(_accessGrantsInstanceArn -\u003e \"\"\"\n{\n \"Version\": \"2012-10-17\",\n \"Id\": \"S3AccessGrantsPolicy\",\n \"Statement\": [{\n \"Sid\": \"AllowAccessToS3AccessGrants\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"123456789456\"\n },\n \"Action\": [\n \"s3:ListAccessGrants\",\n \"s3:ListAccessGrantsLocations\",\n \"s3:GetDataAccess\"\n ],\n \"Resource\": \"%s\"\n }]\n}\n\", _accessGrantsInstanceArn)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:s3control:AccessGrantsInstance\n exampleAccessGrantsInstanceResourcePolicy:\n type: aws:s3control:AccessGrantsInstanceResourcePolicy\n name: example\n properties:\n policy: |\n {\n \"Version\": \"2012-10-17\",\n \"Id\": \"S3AccessGrantsPolicy\",\n \"Statement\": [{\n \"Sid\": \"AllowAccessToS3AccessGrants\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"123456789456\"\n },\n \"Action\": [\n \"s3:ListAccessGrants\",\n \"s3:ListAccessGrantsLocations\",\n \"s3:GetDataAccess\"\n ],\n \"Resource\": \"${example.accessGrantsInstanceArn}\"\n }]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import S3 Access Grants instance resource policies using the `account_id`. For example:\n\n```sh\n$ pulumi import aws:s3control/accessGrantsInstanceResourcePolicy:AccessGrantsInstanceResourcePolicy example 123456789012\n```\n", + "description": "Provides a resource to manage an S3 Access Grants instance resource policy.\nUse a resource policy to manage cross-account access to your S3 Access Grants instance.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.s3control.AccessGrantsInstance(\"example\", {});\nconst exampleAccessGrantsInstanceResourcePolicy = new aws.s3control.AccessGrantsInstanceResourcePolicy(\"example\", {policy: pulumi.interpolate`{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Id\\\": \\\"S3AccessGrantsPolicy\\\",\n \\\"Statement\\\": [{\n \\\"Sid\\\": \\\"AllowAccessToS3AccessGrants\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Principal\\\": {\n \\\"AWS\\\": \\\"123456789456\\\"\n },\n \\\"Action\\\": [\n \\\"s3:ListAccessGrants\\\",\n \\\"s3:ListAccessGrantsLocations\\\",\n \\\"s3:GetDataAccess\\\"\n ],\n \\\"Resource\\\": \\\"${example.accessGrantsInstanceArn}\\\"\n }]\n}\n`});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.s3control.AccessGrantsInstance(\"example\")\nexample_access_grants_instance_resource_policy = aws.s3control.AccessGrantsInstanceResourcePolicy(\"example\", policy=example.access_grants_instance_arn.apply(lambda access_grants_instance_arn: f\"\"\"{{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Id\\\": \\\"S3AccessGrantsPolicy\\\",\n \\\"Statement\\\": [{{\n \\\"Sid\\\": \\\"AllowAccessToS3AccessGrants\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Principal\\\": {{\n \\\"AWS\\\": \\\"123456789456\\\"\n }},\n \\\"Action\\\": [\n \\\"s3:ListAccessGrants\\\",\n \\\"s3:ListAccessGrantsLocations\\\",\n \\\"s3:GetDataAccess\\\"\n ],\n \\\"Resource\\\": \\\"{access_grants_instance_arn}\\\"\n }}]\n}}\n\"\"\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.S3Control.AccessGrantsInstance(\"example\");\n\n var exampleAccessGrantsInstanceResourcePolicy = new Aws.S3Control.AccessGrantsInstanceResourcePolicy(\"example\", new()\n {\n Policy = example.AccessGrantsInstanceArn.Apply(accessGrantsInstanceArn =\u003e @$\"{{\n \\\"\"Version\\\"\": \\\"\"2012-10-17\\\"\",\n \\\"\"Id\\\"\": \\\"\"S3AccessGrantsPolicy\\\"\",\n \\\"\"Statement\\\"\": [{{\n \\\"\"Sid\\\"\": \\\"\"AllowAccessToS3AccessGrants\\\"\",\n \\\"\"Effect\\\"\": \\\"\"Allow\\\"\",\n \\\"\"Principal\\\"\": {{\n \\\"\"AWS\\\"\": \\\"\"123456789456\\\"\"\n }},\n \\\"\"Action\\\"\": [\n \\\"\"s3:ListAccessGrants\\\"\",\n \\\"\"s3:ListAccessGrantsLocations\\\"\",\n \\\"\"s3:GetDataAccess\\\"\"\n ],\n \\\"\"Resource\\\"\": \\\"\"{accessGrantsInstanceArn}\\\"\"\n }}]\n}}\n\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/s3control\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := s3control.NewAccessGrantsInstance(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = s3control.NewAccessGrantsInstanceResourcePolicy(ctx, \"example\", \u0026s3control.AccessGrantsInstanceResourcePolicyArgs{\n\t\t\tPolicy: example.AccessGrantsInstanceArn.ApplyT(func(accessGrantsInstanceArn string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(`{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Id\\\": \\\"S3AccessGrantsPolicy\\\",\n \\\"Statement\\\": [{\n \\\"Sid\\\": \\\"AllowAccessToS3AccessGrants\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Principal\\\": {\n \\\"AWS\\\": \\\"123456789456\\\"\n },\n \\\"Action\\\": [\n \\\"s3:ListAccessGrants\\\",\n \\\"s3:ListAccessGrantsLocations\\\",\n \\\"s3:GetDataAccess\\\"\n ],\n \\\"Resource\\\": \\\"%v\\\"\n }]\n}\n`, accessGrantsInstanceArn), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.s3control.AccessGrantsInstance;\nimport com.pulumi.aws.s3control.AccessGrantsInstanceResourcePolicy;\nimport com.pulumi.aws.s3control.AccessGrantsInstanceResourcePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new AccessGrantsInstance(\"example\");\n\n var exampleAccessGrantsInstanceResourcePolicy = new AccessGrantsInstanceResourcePolicy(\"exampleAccessGrantsInstanceResourcePolicy\", AccessGrantsInstanceResourcePolicyArgs.builder()\n .policy(example.accessGrantsInstanceArn().applyValue(_accessGrantsInstanceArn -\u003e \"\"\"\n{\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Id\\\": \\\"S3AccessGrantsPolicy\\\",\n \\\"Statement\\\": [{\n \\\"Sid\\\": \\\"AllowAccessToS3AccessGrants\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Principal\\\": {\n \\\"AWS\\\": \\\"123456789456\\\"\n },\n \\\"Action\\\": [\n \\\"s3:ListAccessGrants\\\",\n \\\"s3:ListAccessGrantsLocations\\\",\n \\\"s3:GetDataAccess\\\"\n ],\n \\\"Resource\\\": \\\"%s\\\"\n }]\n}\n\", _accessGrantsInstanceArn)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:s3control:AccessGrantsInstance\n exampleAccessGrantsInstanceResourcePolicy:\n type: aws:s3control:AccessGrantsInstanceResourcePolicy\n name: example\n properties:\n policy: |\n {\n \\\"Version\\\": \\\"2012-10-17\\\",\n \\\"Id\\\": \\\"S3AccessGrantsPolicy\\\",\n \\\"Statement\\\": [{\n \\\"Sid\\\": \\\"AllowAccessToS3AccessGrants\\\",\n \\\"Effect\\\": \\\"Allow\\\",\n \\\"Principal\\\": {\n \\\"AWS\\\": \\\"123456789456\\\"\n },\n \\\"Action\\\": [\n \\\"s3:ListAccessGrants\\\",\n \\\"s3:ListAccessGrantsLocations\\\",\n \\\"s3:GetDataAccess\\\"\n ],\n \\\"Resource\\\": \\\"${example.accessGrantsInstanceArn}\\\"\n }]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import S3 Access Grants instance resource policies using the `account_id`. For example:\n\n```sh\n$ pulumi import aws:s3control/accessGrantsInstanceResourcePolicy:AccessGrantsInstanceResourcePolicy example 123456789012\n```\n", "properties": { "accountId": { "type": "string" @@ -393465,7 +393465,7 @@ } }, "aws:sagemaker/flowDefinition:FlowDefinition": { - "description": "Provides a SageMaker AI Flow Definition resource.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.sagemaker.FlowDefinition(\"example\", {\n flowDefinitionName: \"example\",\n roleArn: exampleAwsIamRole.arn,\n humanLoopConfig: {\n humanTaskUiArn: exampleAwsSagemakerHumanTaskUi.arn,\n taskAvailabilityLifetimeInSeconds: 1,\n taskCount: 1,\n taskDescription: \"example\",\n taskTitle: \"example\",\n workteamArn: exampleAwsSagemakerWorkteam.arn,\n },\n outputConfig: {\n s3OutputPath: `s3://${exampleAwsS3Bucket.bucket}/`,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.sagemaker.FlowDefinition(\"example\",\n flow_definition_name=\"example\",\n role_arn=example_aws_iam_role[\"arn\"],\n human_loop_config={\n \"human_task_ui_arn\": example_aws_sagemaker_human_task_ui[\"arn\"],\n \"task_availability_lifetime_in_seconds\": 1,\n \"task_count\": 1,\n \"task_description\": \"example\",\n \"task_title\": \"example\",\n \"workteam_arn\": example_aws_sagemaker_workteam[\"arn\"],\n },\n output_config={\n \"s3_output_path\": f\"s3://{example_aws_s3_bucket['bucket']}/\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Sagemaker.FlowDefinition(\"example\", new()\n {\n FlowDefinitionName = \"example\",\n RoleArn = exampleAwsIamRole.Arn,\n HumanLoopConfig = new Aws.Sagemaker.Inputs.FlowDefinitionHumanLoopConfigArgs\n {\n HumanTaskUiArn = exampleAwsSagemakerHumanTaskUi.Arn,\n TaskAvailabilityLifetimeInSeconds = 1,\n TaskCount = 1,\n TaskDescription = \"example\",\n TaskTitle = \"example\",\n WorkteamArn = exampleAwsSagemakerWorkteam.Arn,\n },\n OutputConfig = new Aws.Sagemaker.Inputs.FlowDefinitionOutputConfigArgs\n {\n S3OutputPath = $\"s3://{exampleAwsS3Bucket.Bucket}/\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sagemaker\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sagemaker.NewFlowDefinition(ctx, \"example\", \u0026sagemaker.FlowDefinitionArgs{\n\t\t\tFlowDefinitionName: pulumi.String(\"example\"),\n\t\t\tRoleArn: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tHumanLoopConfig: \u0026sagemaker.FlowDefinitionHumanLoopConfigArgs{\n\t\t\t\tHumanTaskUiArn: pulumi.Any(exampleAwsSagemakerHumanTaskUi.Arn),\n\t\t\t\tTaskAvailabilityLifetimeInSeconds: pulumi.Int(1),\n\t\t\t\tTaskCount: pulumi.Int(1),\n\t\t\t\tTaskDescription: pulumi.String(\"example\"),\n\t\t\t\tTaskTitle: pulumi.String(\"example\"),\n\t\t\t\tWorkteamArn: pulumi.Any(exampleAwsSagemakerWorkteam.Arn),\n\t\t\t},\n\t\t\tOutputConfig: \u0026sagemaker.FlowDefinitionOutputConfigArgs{\n\t\t\t\tS3OutputPath: pulumi.Sprintf(\"s3://%v/\", exampleAwsS3Bucket.Bucket),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sagemaker.FlowDefinition;\nimport com.pulumi.aws.sagemaker.FlowDefinitionArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionHumanLoopConfigArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionOutputConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new FlowDefinition(\"example\", FlowDefinitionArgs.builder()\n .flowDefinitionName(\"example\")\n .roleArn(exampleAwsIamRole.arn())\n .humanLoopConfig(FlowDefinitionHumanLoopConfigArgs.builder()\n .humanTaskUiArn(exampleAwsSagemakerHumanTaskUi.arn())\n .taskAvailabilityLifetimeInSeconds(1)\n .taskCount(1)\n .taskDescription(\"example\")\n .taskTitle(\"example\")\n .workteamArn(exampleAwsSagemakerWorkteam.arn())\n .build())\n .outputConfig(FlowDefinitionOutputConfigArgs.builder()\n .s3OutputPath(String.format(\"s3://%s/\", exampleAwsS3Bucket.bucket()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:sagemaker:FlowDefinition\n properties:\n flowDefinitionName: example\n roleArn: ${exampleAwsIamRole.arn}\n humanLoopConfig:\n humanTaskUiArn: ${exampleAwsSagemakerHumanTaskUi.arn}\n taskAvailabilityLifetimeInSeconds: 1\n taskCount: 1\n taskDescription: example\n taskTitle: example\n workteamArn: ${exampleAwsSagemakerWorkteam.arn}\n outputConfig:\n s3OutputPath: s3://${exampleAwsS3Bucket.bucket}/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Public Workteam Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.sagemaker.FlowDefinition(\"example\", {\n flowDefinitionName: \"example\",\n roleArn: exampleAwsIamRole.arn,\n humanLoopConfig: {\n humanTaskUiArn: exampleAwsSagemakerHumanTaskUi.arn,\n taskAvailabilityLifetimeInSeconds: 1,\n taskCount: 1,\n taskDescription: \"example\",\n taskTitle: \"example\",\n workteamArn: `arn:aws:sagemaker:${current.region}:394669845002:workteam/public-crowd/default`,\n publicWorkforceTaskPrice: {\n amountInUsd: {\n cents: 1,\n tenthFractionsOfACent: 2,\n },\n },\n },\n outputConfig: {\n s3OutputPath: `s3://${exampleAwsS3Bucket.bucket}/`,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.sagemaker.FlowDefinition(\"example\",\n flow_definition_name=\"example\",\n role_arn=example_aws_iam_role[\"arn\"],\n human_loop_config={\n \"human_task_ui_arn\": example_aws_sagemaker_human_task_ui[\"arn\"],\n \"task_availability_lifetime_in_seconds\": 1,\n \"task_count\": 1,\n \"task_description\": \"example\",\n \"task_title\": \"example\",\n \"workteam_arn\": f\"arn:aws:sagemaker:{current['region']}:394669845002:workteam/public-crowd/default\",\n \"public_workforce_task_price\": {\n \"amount_in_usd\": {\n \"cents\": 1,\n \"tenth_fractions_of_a_cent\": 2,\n },\n },\n },\n output_config={\n \"s3_output_path\": f\"s3://{example_aws_s3_bucket['bucket']}/\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Sagemaker.FlowDefinition(\"example\", new()\n {\n FlowDefinitionName = \"example\",\n RoleArn = exampleAwsIamRole.Arn,\n HumanLoopConfig = new Aws.Sagemaker.Inputs.FlowDefinitionHumanLoopConfigArgs\n {\n HumanTaskUiArn = exampleAwsSagemakerHumanTaskUi.Arn,\n TaskAvailabilityLifetimeInSeconds = 1,\n TaskCount = 1,\n TaskDescription = \"example\",\n TaskTitle = \"example\",\n WorkteamArn = $\"arn:aws:sagemaker:{current.Region}:394669845002:workteam/public-crowd/default\",\n PublicWorkforceTaskPrice = new Aws.Sagemaker.Inputs.FlowDefinitionHumanLoopConfigPublicWorkforceTaskPriceArgs\n {\n AmountInUsd = new Aws.Sagemaker.Inputs.FlowDefinitionHumanLoopConfigPublicWorkforceTaskPriceAmountInUsdArgs\n {\n Cents = 1,\n TenthFractionsOfACent = 2,\n },\n },\n },\n OutputConfig = new Aws.Sagemaker.Inputs.FlowDefinitionOutputConfigArgs\n {\n S3OutputPath = $\"s3://{exampleAwsS3Bucket.Bucket}/\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sagemaker\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sagemaker.NewFlowDefinition(ctx, \"example\", \u0026sagemaker.FlowDefinitionArgs{\n\t\t\tFlowDefinitionName: pulumi.String(\"example\"),\n\t\t\tRoleArn: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tHumanLoopConfig: \u0026sagemaker.FlowDefinitionHumanLoopConfigArgs{\n\t\t\t\tHumanTaskUiArn: pulumi.Any(exampleAwsSagemakerHumanTaskUi.Arn),\n\t\t\t\tTaskAvailabilityLifetimeInSeconds: pulumi.Int(1),\n\t\t\t\tTaskCount: pulumi.Int(1),\n\t\t\t\tTaskDescription: pulumi.String(\"example\"),\n\t\t\t\tTaskTitle: pulumi.String(\"example\"),\n\t\t\t\tWorkteamArn: pulumi.Sprintf(\"arn:aws:sagemaker:%v:394669845002:workteam/public-crowd/default\", current.Region),\n\t\t\t\tPublicWorkforceTaskPrice: \u0026sagemaker.FlowDefinitionHumanLoopConfigPublicWorkforceTaskPriceArgs{\n\t\t\t\t\tAmountInUsd: \u0026sagemaker.FlowDefinitionHumanLoopConfigPublicWorkforceTaskPriceAmountInUsdArgs{\n\t\t\t\t\t\tCents: pulumi.Int(1),\n\t\t\t\t\t\tTenthFractionsOfACent: pulumi.Int(2),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tOutputConfig: \u0026sagemaker.FlowDefinitionOutputConfigArgs{\n\t\t\t\tS3OutputPath: pulumi.Sprintf(\"s3://%v/\", exampleAwsS3Bucket.Bucket),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sagemaker.FlowDefinition;\nimport com.pulumi.aws.sagemaker.FlowDefinitionArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionHumanLoopConfigArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionHumanLoopConfigPublicWorkforceTaskPriceArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionHumanLoopConfigPublicWorkforceTaskPriceAmountInUsdArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionOutputConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new FlowDefinition(\"example\", FlowDefinitionArgs.builder()\n .flowDefinitionName(\"example\")\n .roleArn(exampleAwsIamRole.arn())\n .humanLoopConfig(FlowDefinitionHumanLoopConfigArgs.builder()\n .humanTaskUiArn(exampleAwsSagemakerHumanTaskUi.arn())\n .taskAvailabilityLifetimeInSeconds(1)\n .taskCount(1)\n .taskDescription(\"example\")\n .taskTitle(\"example\")\n .workteamArn(String.format(\"arn:aws:sagemaker:%s:394669845002:workteam/public-crowd/default\", current.region()))\n .publicWorkforceTaskPrice(FlowDefinitionHumanLoopConfigPublicWorkforceTaskPriceArgs.builder()\n .amountInUsd(FlowDefinitionHumanLoopConfigPublicWorkforceTaskPriceAmountInUsdArgs.builder()\n .cents(1)\n .tenthFractionsOfACent(2)\n .build())\n .build())\n .build())\n .outputConfig(FlowDefinitionOutputConfigArgs.builder()\n .s3OutputPath(String.format(\"s3://%s/\", exampleAwsS3Bucket.bucket()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:sagemaker:FlowDefinition\n properties:\n flowDefinitionName: example\n roleArn: ${exampleAwsIamRole.arn}\n humanLoopConfig:\n humanTaskUiArn: ${exampleAwsSagemakerHumanTaskUi.arn}\n taskAvailabilityLifetimeInSeconds: 1\n taskCount: 1\n taskDescription: example\n taskTitle: example\n workteamArn: arn:aws:sagemaker:${current.region}:394669845002:workteam/public-crowd/default\n publicWorkforceTaskPrice:\n amountInUsd:\n cents: 1\n tenthFractionsOfACent: 2\n outputConfig:\n s3OutputPath: s3://${exampleAwsS3Bucket.bucket}/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Human Loop Activation Config Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.sagemaker.FlowDefinition(\"example\", {\n flowDefinitionName: \"example\",\n roleArn: exampleAwsIamRole.arn,\n humanLoopConfig: {\n humanTaskUiArn: exampleAwsSagemakerHumanTaskUi.arn,\n taskAvailabilityLifetimeInSeconds: 1,\n taskCount: 1,\n taskDescription: \"example\",\n taskTitle: \"example\",\n workteamArn: exampleAwsSagemakerWorkteam.arn,\n },\n humanLoopRequestSource: {\n awsManagedHumanLoopRequestSource: \"AWS/Textract/AnalyzeDocument/Forms/V1\",\n },\n humanLoopActivationConfig: {\n humanLoopActivationConditionsConfig: {\n humanLoopActivationConditions: ` {\n\\x09\\x09\\x09\"Conditions\": [\n\\x09\\x09\\x09 {\n\\x09\\x09\\x09\\x09\"ConditionType\": \"Sampling\",\n\\x09\\x09\\x09\\x09\"ConditionParameters\": {\n\\x09\\x09\\x09\\x09 \"RandomSamplingPercentage\": 5\n\\x09\\x09\\x09\\x09}\n\\x09\\x09\\x09 }\n\\x09\\x09\\x09]\n\\x09\\x09}\n`,\n },\n },\n outputConfig: {\n s3OutputPath: `s3://${exampleAwsS3Bucket.bucket}/`,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.sagemaker.FlowDefinition(\"example\",\n flow_definition_name=\"example\",\n role_arn=example_aws_iam_role[\"arn\"],\n human_loop_config={\n \"human_task_ui_arn\": example_aws_sagemaker_human_task_ui[\"arn\"],\n \"task_availability_lifetime_in_seconds\": 1,\n \"task_count\": 1,\n \"task_description\": \"example\",\n \"task_title\": \"example\",\n \"workteam_arn\": example_aws_sagemaker_workteam[\"arn\"],\n },\n human_loop_request_source={\n \"aws_managed_human_loop_request_source\": \"AWS/Textract/AnalyzeDocument/Forms/V1\",\n },\n human_loop_activation_config={\n \"human_loop_activation_conditions_config\": {\n \"human_loop_activation_conditions\": \"\"\" {\n\\x09\\x09\\x09\"Conditions\": [\n\\x09\\x09\\x09 {\n\\x09\\x09\\x09\\x09\"ConditionType\": \"Sampling\",\n\\x09\\x09\\x09\\x09\"ConditionParameters\": {\n\\x09\\x09\\x09\\x09 \"RandomSamplingPercentage\": 5\n\\x09\\x09\\x09\\x09}\n\\x09\\x09\\x09 }\n\\x09\\x09\\x09]\n\\x09\\x09}\n\"\"\",\n },\n },\n output_config={\n \"s3_output_path\": f\"s3://{example_aws_s3_bucket['bucket']}/\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Sagemaker.FlowDefinition(\"example\", new()\n {\n FlowDefinitionName = \"example\",\n RoleArn = exampleAwsIamRole.Arn,\n HumanLoopConfig = new Aws.Sagemaker.Inputs.FlowDefinitionHumanLoopConfigArgs\n {\n HumanTaskUiArn = exampleAwsSagemakerHumanTaskUi.Arn,\n TaskAvailabilityLifetimeInSeconds = 1,\n TaskCount = 1,\n TaskDescription = \"example\",\n TaskTitle = \"example\",\n WorkteamArn = exampleAwsSagemakerWorkteam.Arn,\n },\n HumanLoopRequestSource = new Aws.Sagemaker.Inputs.FlowDefinitionHumanLoopRequestSourceArgs\n {\n AwsManagedHumanLoopRequestSource = \"AWS/Textract/AnalyzeDocument/Forms/V1\",\n },\n HumanLoopActivationConfig = new Aws.Sagemaker.Inputs.FlowDefinitionHumanLoopActivationConfigArgs\n {\n HumanLoopActivationConditionsConfig = new Aws.Sagemaker.Inputs.FlowDefinitionHumanLoopActivationConfigHumanLoopActivationConditionsConfigArgs\n {\n HumanLoopActivationConditions = @\" {\n\t\t\t\"\"Conditions\"\": [\n\t\t\t {\n\t\t\t\t\"\"ConditionType\"\": \"\"Sampling\"\",\n\t\t\t\t\"\"ConditionParameters\"\": {\n\t\t\t\t \"\"RandomSamplingPercentage\"\": 5\n\t\t\t\t}\n\t\t\t }\n\t\t\t]\n\t\t}\n\",\n },\n },\n OutputConfig = new Aws.Sagemaker.Inputs.FlowDefinitionOutputConfigArgs\n {\n S3OutputPath = $\"s3://{exampleAwsS3Bucket.Bucket}/\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sagemaker\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sagemaker.NewFlowDefinition(ctx, \"example\", \u0026sagemaker.FlowDefinitionArgs{\n\t\t\tFlowDefinitionName: pulumi.String(\"example\"),\n\t\t\tRoleArn: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tHumanLoopConfig: \u0026sagemaker.FlowDefinitionHumanLoopConfigArgs{\n\t\t\t\tHumanTaskUiArn: pulumi.Any(exampleAwsSagemakerHumanTaskUi.Arn),\n\t\t\t\tTaskAvailabilityLifetimeInSeconds: pulumi.Int(1),\n\t\t\t\tTaskCount: pulumi.Int(1),\n\t\t\t\tTaskDescription: pulumi.String(\"example\"),\n\t\t\t\tTaskTitle: pulumi.String(\"example\"),\n\t\t\t\tWorkteamArn: pulumi.Any(exampleAwsSagemakerWorkteam.Arn),\n\t\t\t},\n\t\t\tHumanLoopRequestSource: \u0026sagemaker.FlowDefinitionHumanLoopRequestSourceArgs{\n\t\t\t\tAwsManagedHumanLoopRequestSource: pulumi.String(\"AWS/Textract/AnalyzeDocument/Forms/V1\"),\n\t\t\t},\n\t\t\tHumanLoopActivationConfig: \u0026sagemaker.FlowDefinitionHumanLoopActivationConfigArgs{\n\t\t\t\tHumanLoopActivationConditionsConfig: \u0026sagemaker.FlowDefinitionHumanLoopActivationConfigHumanLoopActivationConditionsConfigArgs{\n\t\t\t\t\tHumanLoopActivationConditions: pulumi.String(` {\n\t\t\t\"Conditions\": [\n\t\t\t {\n\t\t\t\t\"ConditionType\": \"Sampling\",\n\t\t\t\t\"ConditionParameters\": {\n\t\t\t\t \"RandomSamplingPercentage\": 5\n\t\t\t\t}\n\t\t\t }\n\t\t\t]\n\t\t}\n`),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOutputConfig: \u0026sagemaker.FlowDefinitionOutputConfigArgs{\n\t\t\t\tS3OutputPath: pulumi.Sprintf(\"s3://%v/\", exampleAwsS3Bucket.Bucket),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sagemaker.FlowDefinition;\nimport com.pulumi.aws.sagemaker.FlowDefinitionArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionHumanLoopConfigArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionHumanLoopRequestSourceArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionHumanLoopActivationConfigArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionHumanLoopActivationConfigHumanLoopActivationConditionsConfigArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionOutputConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new FlowDefinition(\"example\", FlowDefinitionArgs.builder()\n .flowDefinitionName(\"example\")\n .roleArn(exampleAwsIamRole.arn())\n .humanLoopConfig(FlowDefinitionHumanLoopConfigArgs.builder()\n .humanTaskUiArn(exampleAwsSagemakerHumanTaskUi.arn())\n .taskAvailabilityLifetimeInSeconds(1)\n .taskCount(1)\n .taskDescription(\"example\")\n .taskTitle(\"example\")\n .workteamArn(exampleAwsSagemakerWorkteam.arn())\n .build())\n .humanLoopRequestSource(FlowDefinitionHumanLoopRequestSourceArgs.builder()\n .awsManagedHumanLoopRequestSource(\"AWS/Textract/AnalyzeDocument/Forms/V1\")\n .build())\n .humanLoopActivationConfig(FlowDefinitionHumanLoopActivationConfigArgs.builder()\n .humanLoopActivationConditionsConfig(FlowDefinitionHumanLoopActivationConfigHumanLoopActivationConditionsConfigArgs.builder()\n .humanLoopActivationConditions(\"\"\"\n {\n\t\t\t\"Conditions\": [\n\t\t\t {\n\t\t\t\t\"ConditionType\": \"Sampling\",\n\t\t\t\t\"ConditionParameters\": {\n\t\t\t\t \"RandomSamplingPercentage\": 5\n\t\t\t\t}\n\t\t\t }\n\t\t\t]\n\t\t}\n \"\"\")\n .build())\n .build())\n .outputConfig(FlowDefinitionOutputConfigArgs.builder()\n .s3OutputPath(String.format(\"s3://%s/\", exampleAwsS3Bucket.bucket()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:sagemaker:FlowDefinition\n properties:\n flowDefinitionName: example\n roleArn: ${exampleAwsIamRole.arn}\n humanLoopConfig:\n humanTaskUiArn: ${exampleAwsSagemakerHumanTaskUi.arn}\n taskAvailabilityLifetimeInSeconds: 1\n taskCount: 1\n taskDescription: example\n taskTitle: example\n workteamArn: ${exampleAwsSagemakerWorkteam.arn}\n humanLoopRequestSource:\n awsManagedHumanLoopRequestSource: AWS/Textract/AnalyzeDocument/Forms/V1\n humanLoopActivationConfig:\n humanLoopActivationConditionsConfig:\n humanLoopActivationConditions: |2\n {\n \t\t\t\"Conditions\": [\n \t\t\t {\n \t\t\t\t\"ConditionType\": \"Sampling\",\n \t\t\t\t\"ConditionParameters\": {\n \t\t\t\t \"RandomSamplingPercentage\": 5\n \t\t\t\t}\n \t\t\t }\n \t\t\t]\n \t\t}\n outputConfig:\n s3OutputPath: s3://${exampleAwsS3Bucket.bucket}/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import SageMaker AI Flow Definitions using the `flow_definition_name`. For example:\n\n```sh\n$ pulumi import aws:sagemaker/flowDefinition:FlowDefinition example example\n```\n", + "description": "Provides a SageMaker AI Flow Definition resource.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.sagemaker.FlowDefinition(\"example\", {\n flowDefinitionName: \"example\",\n roleArn: exampleAwsIamRole.arn,\n humanLoopConfig: {\n humanTaskUiArn: exampleAwsSagemakerHumanTaskUi.arn,\n taskAvailabilityLifetimeInSeconds: 1,\n taskCount: 1,\n taskDescription: \"example\",\n taskTitle: \"example\",\n workteamArn: exampleAwsSagemakerWorkteam.arn,\n },\n outputConfig: {\n s3OutputPath: `s3://${exampleAwsS3Bucket.bucket}/`,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.sagemaker.FlowDefinition(\"example\",\n flow_definition_name=\"example\",\n role_arn=example_aws_iam_role[\"arn\"],\n human_loop_config={\n \"human_task_ui_arn\": example_aws_sagemaker_human_task_ui[\"arn\"],\n \"task_availability_lifetime_in_seconds\": 1,\n \"task_count\": 1,\n \"task_description\": \"example\",\n \"task_title\": \"example\",\n \"workteam_arn\": example_aws_sagemaker_workteam[\"arn\"],\n },\n output_config={\n \"s3_output_path\": f\"s3://{example_aws_s3_bucket['bucket']}/\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Sagemaker.FlowDefinition(\"example\", new()\n {\n FlowDefinitionName = \"example\",\n RoleArn = exampleAwsIamRole.Arn,\n HumanLoopConfig = new Aws.Sagemaker.Inputs.FlowDefinitionHumanLoopConfigArgs\n {\n HumanTaskUiArn = exampleAwsSagemakerHumanTaskUi.Arn,\n TaskAvailabilityLifetimeInSeconds = 1,\n TaskCount = 1,\n TaskDescription = \"example\",\n TaskTitle = \"example\",\n WorkteamArn = exampleAwsSagemakerWorkteam.Arn,\n },\n OutputConfig = new Aws.Sagemaker.Inputs.FlowDefinitionOutputConfigArgs\n {\n S3OutputPath = $\"s3://{exampleAwsS3Bucket.Bucket}/\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sagemaker\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sagemaker.NewFlowDefinition(ctx, \"example\", \u0026sagemaker.FlowDefinitionArgs{\n\t\t\tFlowDefinitionName: pulumi.String(\"example\"),\n\t\t\tRoleArn: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tHumanLoopConfig: \u0026sagemaker.FlowDefinitionHumanLoopConfigArgs{\n\t\t\t\tHumanTaskUiArn: pulumi.Any(exampleAwsSagemakerHumanTaskUi.Arn),\n\t\t\t\tTaskAvailabilityLifetimeInSeconds: pulumi.Int(1),\n\t\t\t\tTaskCount: pulumi.Int(1),\n\t\t\t\tTaskDescription: pulumi.String(\"example\"),\n\t\t\t\tTaskTitle: pulumi.String(\"example\"),\n\t\t\t\tWorkteamArn: pulumi.Any(exampleAwsSagemakerWorkteam.Arn),\n\t\t\t},\n\t\t\tOutputConfig: \u0026sagemaker.FlowDefinitionOutputConfigArgs{\n\t\t\t\tS3OutputPath: pulumi.Sprintf(\"s3://%v/\", exampleAwsS3Bucket.Bucket),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sagemaker.FlowDefinition;\nimport com.pulumi.aws.sagemaker.FlowDefinitionArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionHumanLoopConfigArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionOutputConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new FlowDefinition(\"example\", FlowDefinitionArgs.builder()\n .flowDefinitionName(\"example\")\n .roleArn(exampleAwsIamRole.arn())\n .humanLoopConfig(FlowDefinitionHumanLoopConfigArgs.builder()\n .humanTaskUiArn(exampleAwsSagemakerHumanTaskUi.arn())\n .taskAvailabilityLifetimeInSeconds(1)\n .taskCount(1)\n .taskDescription(\"example\")\n .taskTitle(\"example\")\n .workteamArn(exampleAwsSagemakerWorkteam.arn())\n .build())\n .outputConfig(FlowDefinitionOutputConfigArgs.builder()\n .s3OutputPath(String.format(\"s3://%s/\", exampleAwsS3Bucket.bucket()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:sagemaker:FlowDefinition\n properties:\n flowDefinitionName: example\n roleArn: ${exampleAwsIamRole.arn}\n humanLoopConfig:\n humanTaskUiArn: ${exampleAwsSagemakerHumanTaskUi.arn}\n taskAvailabilityLifetimeInSeconds: 1\n taskCount: 1\n taskDescription: example\n taskTitle: example\n workteamArn: ${exampleAwsSagemakerWorkteam.arn}\n outputConfig:\n s3OutputPath: s3://${exampleAwsS3Bucket.bucket}/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Public Workteam Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.sagemaker.FlowDefinition(\"example\", {\n flowDefinitionName: \"example\",\n roleArn: exampleAwsIamRole.arn,\n humanLoopConfig: {\n humanTaskUiArn: exampleAwsSagemakerHumanTaskUi.arn,\n taskAvailabilityLifetimeInSeconds: 1,\n taskCount: 1,\n taskDescription: \"example\",\n taskTitle: \"example\",\n workteamArn: `arn:aws:sagemaker:${current.region}:394669845002:workteam/public-crowd/default`,\n publicWorkforceTaskPrice: {\n amountInUsd: {\n cents: 1,\n tenthFractionsOfACent: 2,\n },\n },\n },\n outputConfig: {\n s3OutputPath: `s3://${exampleAwsS3Bucket.bucket}/`,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.sagemaker.FlowDefinition(\"example\",\n flow_definition_name=\"example\",\n role_arn=example_aws_iam_role[\"arn\"],\n human_loop_config={\n \"human_task_ui_arn\": example_aws_sagemaker_human_task_ui[\"arn\"],\n \"task_availability_lifetime_in_seconds\": 1,\n \"task_count\": 1,\n \"task_description\": \"example\",\n \"task_title\": \"example\",\n \"workteam_arn\": f\"arn:aws:sagemaker:{current['region']}:394669845002:workteam/public-crowd/default\",\n \"public_workforce_task_price\": {\n \"amount_in_usd\": {\n \"cents\": 1,\n \"tenth_fractions_of_a_cent\": 2,\n },\n },\n },\n output_config={\n \"s3_output_path\": f\"s3://{example_aws_s3_bucket['bucket']}/\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Sagemaker.FlowDefinition(\"example\", new()\n {\n FlowDefinitionName = \"example\",\n RoleArn = exampleAwsIamRole.Arn,\n HumanLoopConfig = new Aws.Sagemaker.Inputs.FlowDefinitionHumanLoopConfigArgs\n {\n HumanTaskUiArn = exampleAwsSagemakerHumanTaskUi.Arn,\n TaskAvailabilityLifetimeInSeconds = 1,\n TaskCount = 1,\n TaskDescription = \"example\",\n TaskTitle = \"example\",\n WorkteamArn = $\"arn:aws:sagemaker:{current.Region}:394669845002:workteam/public-crowd/default\",\n PublicWorkforceTaskPrice = new Aws.Sagemaker.Inputs.FlowDefinitionHumanLoopConfigPublicWorkforceTaskPriceArgs\n {\n AmountInUsd = new Aws.Sagemaker.Inputs.FlowDefinitionHumanLoopConfigPublicWorkforceTaskPriceAmountInUsdArgs\n {\n Cents = 1,\n TenthFractionsOfACent = 2,\n },\n },\n },\n OutputConfig = new Aws.Sagemaker.Inputs.FlowDefinitionOutputConfigArgs\n {\n S3OutputPath = $\"s3://{exampleAwsS3Bucket.Bucket}/\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sagemaker\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sagemaker.NewFlowDefinition(ctx, \"example\", \u0026sagemaker.FlowDefinitionArgs{\n\t\t\tFlowDefinitionName: pulumi.String(\"example\"),\n\t\t\tRoleArn: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tHumanLoopConfig: \u0026sagemaker.FlowDefinitionHumanLoopConfigArgs{\n\t\t\t\tHumanTaskUiArn: pulumi.Any(exampleAwsSagemakerHumanTaskUi.Arn),\n\t\t\t\tTaskAvailabilityLifetimeInSeconds: pulumi.Int(1),\n\t\t\t\tTaskCount: pulumi.Int(1),\n\t\t\t\tTaskDescription: pulumi.String(\"example\"),\n\t\t\t\tTaskTitle: pulumi.String(\"example\"),\n\t\t\t\tWorkteamArn: pulumi.Sprintf(\"arn:aws:sagemaker:%v:394669845002:workteam/public-crowd/default\", current.Region),\n\t\t\t\tPublicWorkforceTaskPrice: \u0026sagemaker.FlowDefinitionHumanLoopConfigPublicWorkforceTaskPriceArgs{\n\t\t\t\t\tAmountInUsd: \u0026sagemaker.FlowDefinitionHumanLoopConfigPublicWorkforceTaskPriceAmountInUsdArgs{\n\t\t\t\t\t\tCents: pulumi.Int(1),\n\t\t\t\t\t\tTenthFractionsOfACent: pulumi.Int(2),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tOutputConfig: \u0026sagemaker.FlowDefinitionOutputConfigArgs{\n\t\t\t\tS3OutputPath: pulumi.Sprintf(\"s3://%v/\", exampleAwsS3Bucket.Bucket),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sagemaker.FlowDefinition;\nimport com.pulumi.aws.sagemaker.FlowDefinitionArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionHumanLoopConfigArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionHumanLoopConfigPublicWorkforceTaskPriceArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionHumanLoopConfigPublicWorkforceTaskPriceAmountInUsdArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionOutputConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new FlowDefinition(\"example\", FlowDefinitionArgs.builder()\n .flowDefinitionName(\"example\")\n .roleArn(exampleAwsIamRole.arn())\n .humanLoopConfig(FlowDefinitionHumanLoopConfigArgs.builder()\n .humanTaskUiArn(exampleAwsSagemakerHumanTaskUi.arn())\n .taskAvailabilityLifetimeInSeconds(1)\n .taskCount(1)\n .taskDescription(\"example\")\n .taskTitle(\"example\")\n .workteamArn(String.format(\"arn:aws:sagemaker:%s:394669845002:workteam/public-crowd/default\", current.region()))\n .publicWorkforceTaskPrice(FlowDefinitionHumanLoopConfigPublicWorkforceTaskPriceArgs.builder()\n .amountInUsd(FlowDefinitionHumanLoopConfigPublicWorkforceTaskPriceAmountInUsdArgs.builder()\n .cents(1)\n .tenthFractionsOfACent(2)\n .build())\n .build())\n .build())\n .outputConfig(FlowDefinitionOutputConfigArgs.builder()\n .s3OutputPath(String.format(\"s3://%s/\", exampleAwsS3Bucket.bucket()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:sagemaker:FlowDefinition\n properties:\n flowDefinitionName: example\n roleArn: ${exampleAwsIamRole.arn}\n humanLoopConfig:\n humanTaskUiArn: ${exampleAwsSagemakerHumanTaskUi.arn}\n taskAvailabilityLifetimeInSeconds: 1\n taskCount: 1\n taskDescription: example\n taskTitle: example\n workteamArn: arn:aws:sagemaker:${current.region}:394669845002:workteam/public-crowd/default\n publicWorkforceTaskPrice:\n amountInUsd:\n cents: 1\n tenthFractionsOfACent: 2\n outputConfig:\n s3OutputPath: s3://${exampleAwsS3Bucket.bucket}/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Human Loop Activation Config Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.sagemaker.FlowDefinition(\"example\", {\n flowDefinitionName: \"example\",\n roleArn: exampleAwsIamRole.arn,\n humanLoopConfig: {\n humanTaskUiArn: exampleAwsSagemakerHumanTaskUi.arn,\n taskAvailabilityLifetimeInSeconds: 1,\n taskCount: 1,\n taskDescription: \"example\",\n taskTitle: \"example\",\n workteamArn: exampleAwsSagemakerWorkteam.arn,\n },\n humanLoopRequestSource: {\n awsManagedHumanLoopRequestSource: \"AWS/Textract/AnalyzeDocument/Forms/V1\",\n },\n humanLoopActivationConfig: {\n humanLoopActivationConditionsConfig: {\n humanLoopActivationConditions: ` {\n\\\\t\\\\t\\\\t\\\\\"Conditions\\\\\": [\n\\\\t\\\\t\\\\t {\n\\\\t\\\\t\\\\t\\\\t\\\\\"ConditionType\\\\\": \\\\\"Sampling\\\\\",\n\\\\t\\\\t\\\\t\\\\t\\\\\"ConditionParameters\\\\\": {\n\\\\t\\\\t\\\\t\\\\t \\\\\"RandomSamplingPercentage\\\\\": 5\n\\\\t\\\\t\\\\t\\\\t}\n\\\\t\\\\t\\\\t }\n\\\\t\\\\t\\\\t]\n\\\\t\\\\t}\n`,\n },\n },\n outputConfig: {\n s3OutputPath: `s3://${exampleAwsS3Bucket.bucket}/`,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.sagemaker.FlowDefinition(\"example\",\n flow_definition_name=\"example\",\n role_arn=example_aws_iam_role[\"arn\"],\n human_loop_config={\n \"human_task_ui_arn\": example_aws_sagemaker_human_task_ui[\"arn\"],\n \"task_availability_lifetime_in_seconds\": 1,\n \"task_count\": 1,\n \"task_description\": \"example\",\n \"task_title\": \"example\",\n \"workteam_arn\": example_aws_sagemaker_workteam[\"arn\"],\n },\n human_loop_request_source={\n \"aws_managed_human_loop_request_source\": \"AWS/Textract/AnalyzeDocument/Forms/V1\",\n },\n human_loop_activation_config={\n \"human_loop_activation_conditions_config\": {\n \"human_loop_activation_conditions\": \"\"\" {\n\\t\\t\\t\\\"Conditions\\\": [\n\\t\\t\\t {\n\\t\\t\\t\\t\\\"ConditionType\\\": \\\"Sampling\\\",\n\\t\\t\\t\\t\\\"ConditionParameters\\\": {\n\\t\\t\\t\\t \\\"RandomSamplingPercentage\\\": 5\n\\t\\t\\t\\t}\n\\t\\t\\t }\n\\t\\t\\t]\n\\t\\t}\n\"\"\",\n },\n },\n output_config={\n \"s3_output_path\": f\"s3://{example_aws_s3_bucket['bucket']}/\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Sagemaker.FlowDefinition(\"example\", new()\n {\n FlowDefinitionName = \"example\",\n RoleArn = exampleAwsIamRole.Arn,\n HumanLoopConfig = new Aws.Sagemaker.Inputs.FlowDefinitionHumanLoopConfigArgs\n {\n HumanTaskUiArn = exampleAwsSagemakerHumanTaskUi.Arn,\n TaskAvailabilityLifetimeInSeconds = 1,\n TaskCount = 1,\n TaskDescription = \"example\",\n TaskTitle = \"example\",\n WorkteamArn = exampleAwsSagemakerWorkteam.Arn,\n },\n HumanLoopRequestSource = new Aws.Sagemaker.Inputs.FlowDefinitionHumanLoopRequestSourceArgs\n {\n AwsManagedHumanLoopRequestSource = \"AWS/Textract/AnalyzeDocument/Forms/V1\",\n },\n HumanLoopActivationConfig = new Aws.Sagemaker.Inputs.FlowDefinitionHumanLoopActivationConfigArgs\n {\n HumanLoopActivationConditionsConfig = new Aws.Sagemaker.Inputs.FlowDefinitionHumanLoopActivationConfigHumanLoopActivationConditionsConfigArgs\n {\n HumanLoopActivationConditions = @\" {\n\\t\\t\\t\\\"\"Conditions\\\"\": [\n\\t\\t\\t {\n\\t\\t\\t\\t\\\"\"ConditionType\\\"\": \\\"\"Sampling\\\"\",\n\\t\\t\\t\\t\\\"\"ConditionParameters\\\"\": {\n\\t\\t\\t\\t \\\"\"RandomSamplingPercentage\\\"\": 5\n\\t\\t\\t\\t}\n\\t\\t\\t }\n\\t\\t\\t]\n\\t\\t}\n\",\n },\n },\n OutputConfig = new Aws.Sagemaker.Inputs.FlowDefinitionOutputConfigArgs\n {\n S3OutputPath = $\"s3://{exampleAwsS3Bucket.Bucket}/\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sagemaker\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sagemaker.NewFlowDefinition(ctx, \"example\", \u0026sagemaker.FlowDefinitionArgs{\n\t\t\tFlowDefinitionName: pulumi.String(\"example\"),\n\t\t\tRoleArn: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tHumanLoopConfig: \u0026sagemaker.FlowDefinitionHumanLoopConfigArgs{\n\t\t\t\tHumanTaskUiArn: pulumi.Any(exampleAwsSagemakerHumanTaskUi.Arn),\n\t\t\t\tTaskAvailabilityLifetimeInSeconds: pulumi.Int(1),\n\t\t\t\tTaskCount: pulumi.Int(1),\n\t\t\t\tTaskDescription: pulumi.String(\"example\"),\n\t\t\t\tTaskTitle: pulumi.String(\"example\"),\n\t\t\t\tWorkteamArn: pulumi.Any(exampleAwsSagemakerWorkteam.Arn),\n\t\t\t},\n\t\t\tHumanLoopRequestSource: \u0026sagemaker.FlowDefinitionHumanLoopRequestSourceArgs{\n\t\t\t\tAwsManagedHumanLoopRequestSource: pulumi.String(\"AWS/Textract/AnalyzeDocument/Forms/V1\"),\n\t\t\t},\n\t\t\tHumanLoopActivationConfig: \u0026sagemaker.FlowDefinitionHumanLoopActivationConfigArgs{\n\t\t\t\tHumanLoopActivationConditionsConfig: \u0026sagemaker.FlowDefinitionHumanLoopActivationConfigHumanLoopActivationConditionsConfigArgs{\n\t\t\t\t\tHumanLoopActivationConditions: pulumi.String(` {\n\\t\\t\\t\\\"Conditions\\\": [\n\\t\\t\\t {\n\\t\\t\\t\\t\\\"ConditionType\\\": \\\"Sampling\\\",\n\\t\\t\\t\\t\\\"ConditionParameters\\\": {\n\\t\\t\\t\\t \\\"RandomSamplingPercentage\\\": 5\n\\t\\t\\t\\t}\n\\t\\t\\t }\n\\t\\t\\t]\n\\t\\t}\n`),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOutputConfig: \u0026sagemaker.FlowDefinitionOutputConfigArgs{\n\t\t\t\tS3OutputPath: pulumi.Sprintf(\"s3://%v/\", exampleAwsS3Bucket.Bucket),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sagemaker.FlowDefinition;\nimport com.pulumi.aws.sagemaker.FlowDefinitionArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionHumanLoopConfigArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionHumanLoopRequestSourceArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionHumanLoopActivationConfigArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionHumanLoopActivationConfigHumanLoopActivationConditionsConfigArgs;\nimport com.pulumi.aws.sagemaker.inputs.FlowDefinitionOutputConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new FlowDefinition(\"example\", FlowDefinitionArgs.builder()\n .flowDefinitionName(\"example\")\n .roleArn(exampleAwsIamRole.arn())\n .humanLoopConfig(FlowDefinitionHumanLoopConfigArgs.builder()\n .humanTaskUiArn(exampleAwsSagemakerHumanTaskUi.arn())\n .taskAvailabilityLifetimeInSeconds(1)\n .taskCount(1)\n .taskDescription(\"example\")\n .taskTitle(\"example\")\n .workteamArn(exampleAwsSagemakerWorkteam.arn())\n .build())\n .humanLoopRequestSource(FlowDefinitionHumanLoopRequestSourceArgs.builder()\n .awsManagedHumanLoopRequestSource(\"AWS/Textract/AnalyzeDocument/Forms/V1\")\n .build())\n .humanLoopActivationConfig(FlowDefinitionHumanLoopActivationConfigArgs.builder()\n .humanLoopActivationConditionsConfig(FlowDefinitionHumanLoopActivationConfigHumanLoopActivationConditionsConfigArgs.builder()\n .humanLoopActivationConditions(\"\"\"\n {\n\\t\\t\\t\\\"Conditions\\\": [\n\\t\\t\\t {\n\\t\\t\\t\\t\\\"ConditionType\\\": \\\"Sampling\\\",\n\\t\\t\\t\\t\\\"ConditionParameters\\\": {\n\\t\\t\\t\\t \\\"RandomSamplingPercentage\\\": 5\n\\t\\t\\t\\t}\n\\t\\t\\t }\n\\t\\t\\t]\n\\t\\t}\n \"\"\")\n .build())\n .build())\n .outputConfig(FlowDefinitionOutputConfigArgs.builder()\n .s3OutputPath(String.format(\"s3://%s/\", exampleAwsS3Bucket.bucket()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:sagemaker:FlowDefinition\n properties:\n flowDefinitionName: example\n roleArn: ${exampleAwsIamRole.arn}\n humanLoopConfig:\n humanTaskUiArn: ${exampleAwsSagemakerHumanTaskUi.arn}\n taskAvailabilityLifetimeInSeconds: 1\n taskCount: 1\n taskDescription: example\n taskTitle: example\n workteamArn: ${exampleAwsSagemakerWorkteam.arn}\n humanLoopRequestSource:\n awsManagedHumanLoopRequestSource: AWS/Textract/AnalyzeDocument/Forms/V1\n humanLoopActivationConfig:\n humanLoopActivationConditionsConfig:\n humanLoopActivationConditions: |2\n {\n \\t\\t\\t\\\"Conditions\\\": [\n \\t\\t\\t {\n \\t\\t\\t\\t\\\"ConditionType\\\": \\\"Sampling\\\",\n \\t\\t\\t\\t\\\"ConditionParameters\\\": {\n \\t\\t\\t\\t \\\"RandomSamplingPercentage\\\": 5\n \\t\\t\\t\\t}\n \\t\\t\\t }\n \\t\\t\\t]\n \\t\\t}\n outputConfig:\n s3OutputPath: s3://${exampleAwsS3Bucket.bucket}/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import SageMaker AI Flow Definitions using the `flow_definition_name`. For example:\n\n```sh\n$ pulumi import aws:sagemaker/flowDefinition:FlowDefinition example example\n```\n", "properties": { "arn": { "type": "string", @@ -394692,7 +394692,7 @@ } }, "aws:sagemaker/modelPackageGroupPolicy:ModelPackageGroupPolicy": { - "description": "Provides a SageMaker AI Model Package Group Policy resource.\n\n## Example Usage\n\n## Import\n\nUsing `pulumi import`, import SageMaker AI Model Package Groups using the `name`. For example:\n\n```sh\n$ pulumi import aws:sagemaker/modelPackageGroupPolicy:ModelPackageGroupPolicy example example\n```\n", + "description": "Provides a SageMaker AI Model Package Group Policy resource.\n\n## Example Usage\n\n### Basic usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst current = aws.getCallerIdentity({});\nconst exampleModelPackageGroup = new aws.sagemaker.ModelPackageGroup(\"example\", {modelPackageGroupName: \"example\"});\nconst example = pulumi.all([exampleModelPackageGroup.arn, current]).apply(([arn, current]) =\u003e aws.iam.getPolicyDocumentOutput({\n statements: [{\n sid: \"AddPermModelPackageGroup\",\n actions: [\n \"sagemaker:DescribeModelPackage\",\n \"sagemaker:ListModelPackages\",\n ],\n resources: [arn],\n principals: [{\n identifiers: [current.accountId],\n type: \"AWS\",\n }],\n }],\n}));\nconst exampleModelPackageGroupPolicy = new aws.sagemaker.ModelPackageGroupPolicy(\"example\", {\n modelPackageGroupName: exampleModelPackageGroup.modelPackageGroupName,\n resourcePolicy: pulumi.jsonStringify(example.apply(example =\u003e std.jsondecodeOutput({\n input: example.json,\n })).apply(invoke =\u003e invoke.result)),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\nimport pulumi_std as std\n\ncurrent = aws.get_caller_identity()\nexample_model_package_group = aws.sagemaker.ModelPackageGroup(\"example\", model_package_group_name=\"example\")\nexample = example_model_package_group.arn.apply(lambda arn: aws.iam.get_policy_document(statements=[{\n \"sid\": \"AddPermModelPackageGroup\",\n \"actions\": [\n \"sagemaker:DescribeModelPackage\",\n \"sagemaker:ListModelPackages\",\n ],\n \"resources\": [arn],\n \"principals\": [{\n \"identifiers\": [current.account_id],\n \"type\": \"AWS\",\n }],\n}]))\nexample_model_package_group_policy = aws.sagemaker.ModelPackageGroupPolicy(\"example\",\n model_package_group_name=example_model_package_group.model_package_group_name,\n resource_policy=pulumi.Output.json_dumps(std.jsondecode_output(input=example.json).apply(lambda invoke: invoke.result)))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Aws.GetCallerIdentity.Invoke();\n\n var exampleModelPackageGroup = new Aws.Sagemaker.ModelPackageGroup(\"example\", new()\n {\n ModelPackageGroupName = \"example\",\n });\n\n var example = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Sid = \"AddPermModelPackageGroup\",\n Actions = new[]\n {\n \"sagemaker:DescribeModelPackage\",\n \"sagemaker:ListModelPackages\",\n },\n Resources = new[]\n {\n exampleModelPackageGroup.Arn,\n },\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Identifiers = new[]\n {\n current.Apply(getCallerIdentityResult =\u003e getCallerIdentityResult.AccountId),\n },\n Type = \"AWS\",\n },\n },\n },\n },\n });\n\n var exampleModelPackageGroupPolicy = new Aws.Sagemaker.ModelPackageGroupPolicy(\"example\", new()\n {\n ModelPackageGroupName = exampleModelPackageGroup.ModelPackageGroupName,\n ResourcePolicy = Output.JsonSerialize(Output.Create(Std.Jsondecode.Invoke(new()\n {\n Input = example.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n }).Apply(invoke =\u003e invoke.Result))),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sagemaker\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\ncurrent, err := aws.GetCallerIdentity(ctx, \u0026aws.GetCallerIdentityArgs{\n}, nil);\nif err != nil {\nreturn err\n}\nexampleModelPackageGroup, err := sagemaker.NewModelPackageGroup(ctx, \"example\", \u0026sagemaker.ModelPackageGroupArgs{\nModelPackageGroupName: pulumi.String(\"example\"),\n})\nif err != nil {\nreturn err\n}\nexample := exampleModelPackageGroup.Arn.ApplyT(func(arn string) (iam.GetPolicyDocumentResult, error) {\nreturn iam.GetPolicyDocumentResult(iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\nStatements: []iam.GetPolicyDocumentStatement{\n{\nSid: pulumi.StringRef(pulumi.String(pulumi.StringRef(\"AddPermModelPackageGroup\"))),\nActions: []string{\n\"sagemaker:DescribeModelPackage\",\n\"sagemaker:ListModelPackages\",\n},\nResources: []string{\narn,\n},\nPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n{\nIdentifiers: interface{}{\ncurrent.AccountId,\n},\nType: \"AWS\",\n},\n},\n},\n},\n}, nil)), nil\n}).(iam.GetPolicyDocumentResultOutput)\n_, err = sagemaker.NewModelPackageGroupPolicy(ctx, \"example\", \u0026sagemaker.ModelPackageGroupPolicyArgs{\nModelPackageGroupName: exampleModelPackageGroup.ModelPackageGroupName,\nResourcePolicy: std.JsondecodeOutput(ctx, std.JsondecodeOutputArgs{\nInput: example.Json,\n}, nil).ApplyT(func(invoke std.JsondecodeResult) (pulumi.String, error) {\nvar _zero pulumi.String\ntmpJSON0, err := json.Marshal(invoke.Result)\nif err != nil {\nreturn _zero, err\n}\njson0 := string(tmpJSON0)\nreturn pulumi.String(json0), nil\n}).(pulumi.StringOutput),\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.AwsFunctions;\nimport com.pulumi.aws.inputs.GetCallerIdentityArgs;\nimport com.pulumi.aws.sagemaker.ModelPackageGroup;\nimport com.pulumi.aws.sagemaker.ModelPackageGroupArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.sagemaker.ModelPackageGroupPolicy;\nimport com.pulumi.aws.sagemaker.ModelPackageGroupPolicyArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.JsondecodeArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()\n .build());\n\n var exampleModelPackageGroup = new ModelPackageGroup(\"exampleModelPackageGroup\", ModelPackageGroupArgs.builder()\n .modelPackageGroupName(\"example\")\n .build());\n\n final var example = exampleModelPackageGroup.arn().applyValue(_arn -\u003e IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .sid(\"AddPermModelPackageGroup\")\n .actions( \n \"sagemaker:DescribeModelPackage\",\n \"sagemaker:ListModelPackages\")\n .resources(_arn)\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .identifiers(current.accountId())\n .type(\"AWS\")\n .build())\n .build())\n .build()));\n\n var exampleModelPackageGroupPolicy = new ModelPackageGroupPolicy(\"exampleModelPackageGroupPolicy\", ModelPackageGroupPolicyArgs.builder()\n .modelPackageGroupName(exampleModelPackageGroup.modelPackageGroupName())\n .resourcePolicy(StdFunctions.jsondecode(JsondecodeArgs.builder()\n .input(example.json())\n .build()).applyValue(_invoke -\u003e serializeJson(\n _invoke.result())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleModelPackageGroup:\n type: aws:sagemaker:ModelPackageGroup\n name: example\n properties:\n modelPackageGroupName: example\n exampleModelPackageGroupPolicy:\n type: aws:sagemaker:ModelPackageGroupPolicy\n name: example\n properties:\n modelPackageGroupName: ${exampleModelPackageGroup.modelPackageGroupName}\n resourcePolicy:\n fn::toJSON:\n fn::invoke:\n function: std:jsondecode\n arguments:\n input: ${example.json}\n return: result\nvariables:\n current:\n fn::invoke:\n function: aws:getCallerIdentity\n arguments: {}\n example:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - sid: AddPermModelPackageGroup\n actions:\n - sagemaker:DescribeModelPackage\n - sagemaker:ListModelPackages\n resources:\n - ${exampleModelPackageGroup.arn}\n principals:\n - identifiers:\n - ${current.accountId}\n type: AWS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import SageMaker AI Model Package Groups using the `name`. For example:\n\n```sh\n$ pulumi import aws:sagemaker/modelPackageGroupPolicy:ModelPackageGroupPolicy example example\n```\n", "properties": { "modelPackageGroupName": { "type": "string", @@ -397469,7 +397469,7 @@ } }, "aws:secretsmanager/secretVersion:SecretVersion": { - "description": "Provides a resource to manage AWS Secrets Manager secret version including its secret value. To manage secret metadata, see the \u003cspan pulumi-lang-nodejs=\"`aws.secretsmanager.Secret`\" pulumi-lang-dotnet=\"`aws.secretsmanager.Secret`\" pulumi-lang-go=\"`secretsmanager.Secret`\" pulumi-lang-python=\"`secretsmanager.Secret`\" pulumi-lang-yaml=\"`aws.secretsmanager.Secret`\" pulumi-lang-java=\"`aws.secretsmanager.Secret`\"\u003e`aws.secretsmanager.Secret`\u003c/span\u003e resource.\n\n\u003e **NOTE:** If the `AWSCURRENT` staging label is present on this version during resource deletion, that label cannot be removed and will be skipped to prevent errors when fully deleting the secret. That label will leave this secret version active even after the resource is deleted from this provider unless the secret itself is deleted. Move the `AWSCURRENT` staging label before or after deleting this resource from this provider to fully trigger version deprecation if necessary.\n\n\n## Example Usage\n\n### Simple String Value\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.secretsmanager.SecretVersion(\"example\", {\n secretId: exampleAwsSecretsmanagerSecret.id,\n secretString: \"example-string-to-protect\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.secretsmanager.SecretVersion(\"example\",\n secret_id=example_aws_secretsmanager_secret[\"id\"],\n secret_string=\"example-string-to-protect\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.SecretsManager.SecretVersion(\"example\", new()\n {\n SecretId = exampleAwsSecretsmanagerSecret.Id,\n SecretString = \"example-string-to-protect\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretsmanager.NewSecretVersion(ctx, \"example\", \u0026secretsmanager.SecretVersionArgs{\n\t\t\tSecretId: pulumi.Any(exampleAwsSecretsmanagerSecret.Id),\n\t\t\tSecretString: pulumi.String(\"example-string-to-protect\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.SecretVersion;\nimport com.pulumi.aws.secretsmanager.SecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new SecretVersion(\"example\", SecretVersionArgs.builder()\n .secretId(exampleAwsSecretsmanagerSecret.id())\n .secretString(\"example-string-to-protect\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:secretsmanager:SecretVersion\n properties:\n secretId: ${exampleAwsSecretsmanagerSecret.id}\n secretString: example-string-to-protect\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Key-Value Pairs\n\nSecrets Manager also accepts key-value pairs in JSON.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst config = new pulumi.Config();\nconst example = config.getObject\u003cRecord\u003cstring, string\u003e\u003e(\"example\") || {\n key1: \"value1\",\n key2: \"value2\",\n};\nconst exampleSecretVersion = new aws.secretsmanager.SecretVersion(\"example\", {\n secretId: exampleAwsSecretsmanagerSecret.id,\n secretString: JSON.stringify(example),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nconfig = pulumi.Config()\nexample = config.get_object(\"example\")\nif example is None:\n example = {\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n }\nexample_secret_version = aws.secretsmanager.SecretVersion(\"example\",\n secret_id=example_aws_secretsmanager_secret[\"id\"],\n secret_string=json.dumps(example))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var example = config.GetObject\u003cDictionary\u003cstring, string\u003e\u003e(\"example\") ?? \n {\n { \"key1\", \"value1\" },\n { \"key2\", \"value2\" },\n };\n var exampleSecretVersion = new Aws.SecretsManager.SecretVersion(\"example\", new()\n {\n SecretId = exampleAwsSecretsmanagerSecret.Id,\n SecretString = JsonSerializer.Serialize(example),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\texample := map[string]interface{}{\n\t\t\t\"key1\": \"value1\",\n\t\t\t\"key2\": \"value2\",\n\t\t}\n\t\tif param := cfg.GetObject(\"example\"); param != nil {\n\t\t\texample = param\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(example)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = secretsmanager.NewSecretVersion(ctx, \"example\", \u0026secretsmanager.SecretVersionArgs{\n\t\t\tSecretId: pulumi.Any(exampleAwsSecretsmanagerSecret.Id),\n\t\t\tSecretString: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.SecretVersion;\nimport com.pulumi.aws.secretsmanager.SecretVersionArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var example = config.get(\"example\").orElse(Map.ofEntries(\n Map.entry(\"key1\", \"value1\"),\n Map.entry(\"key2\", \"value2\")\n ));\n var exampleSecretVersion = new SecretVersion(\"exampleSecretVersion\", SecretVersionArgs.builder()\n .secretId(exampleAwsSecretsmanagerSecret.id())\n .secretString(serializeJson(\n example))\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n # The map here can come from other supported configurations\n # like locals, resource attribute, map() built-in, etc.\n example:\n type: map(string)\n default:\n key1: value1\n key2: value2\nresources:\n exampleSecretVersion:\n type: aws:secretsmanager:SecretVersion\n name: example\n properties:\n secretId: ${exampleAwsSecretsmanagerSecret.id}\n secretString:\n fn::toJSON: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\nReading key-value pairs from JSON back into a native map\n\n", + "description": "Provides a resource to manage AWS Secrets Manager secret version including its secret value. To manage secret metadata, see the \u003cspan pulumi-lang-nodejs=\"`aws.secretsmanager.Secret`\" pulumi-lang-dotnet=\"`aws.secretsmanager.Secret`\" pulumi-lang-go=\"`secretsmanager.Secret`\" pulumi-lang-python=\"`secretsmanager.Secret`\" pulumi-lang-yaml=\"`aws.secretsmanager.Secret`\" pulumi-lang-java=\"`aws.secretsmanager.Secret`\"\u003e`aws.secretsmanager.Secret`\u003c/span\u003e resource.\n\n\u003e **NOTE:** If the `AWSCURRENT` staging label is present on this version during resource deletion, that label cannot be removed and will be skipped to prevent errors when fully deleting the secret. That label will leave this secret version active even after the resource is deleted from this provider unless the secret itself is deleted. Move the `AWSCURRENT` staging label before or after deleting this resource from this provider to fully trigger version deprecation if necessary.\n\n\n## Example Usage\n\n### Simple String Value\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.secretsmanager.SecretVersion(\"example\", {\n secretId: exampleAwsSecretsmanagerSecret.id,\n secretString: \"example-string-to-protect\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.secretsmanager.SecretVersion(\"example\",\n secret_id=example_aws_secretsmanager_secret[\"id\"],\n secret_string=\"example-string-to-protect\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.SecretsManager.SecretVersion(\"example\", new()\n {\n SecretId = exampleAwsSecretsmanagerSecret.Id,\n SecretString = \"example-string-to-protect\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretsmanager.NewSecretVersion(ctx, \"example\", \u0026secretsmanager.SecretVersionArgs{\n\t\t\tSecretId: pulumi.Any(exampleAwsSecretsmanagerSecret.Id),\n\t\t\tSecretString: pulumi.String(\"example-string-to-protect\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.SecretVersion;\nimport com.pulumi.aws.secretsmanager.SecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new SecretVersion(\"example\", SecretVersionArgs.builder()\n .secretId(exampleAwsSecretsmanagerSecret.id())\n .secretString(\"example-string-to-protect\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:secretsmanager:SecretVersion\n properties:\n secretId: ${exampleAwsSecretsmanagerSecret.id}\n secretString: example-string-to-protect\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Key-Value Pairs\n\nSecrets Manager also accepts key-value pairs in JSON.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst config = new pulumi.Config();\nconst example = config.getObject\u003cRecord\u003cstring, string\u003e\u003e(\"example\") || {\n key1: \"value1\",\n key2: \"value2\",\n};\nconst exampleSecretVersion = new aws.secretsmanager.SecretVersion(\"example\", {\n secretId: exampleAwsSecretsmanagerSecret.id,\n secretString: JSON.stringify(example),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nconfig = pulumi.Config()\nexample = config.get_object(\"example\")\nif example is None:\n example = {\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n }\nexample_secret_version = aws.secretsmanager.SecretVersion(\"example\",\n secret_id=example_aws_secretsmanager_secret[\"id\"],\n secret_string=json.dumps(example))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var example = config.GetObject\u003cDictionary\u003cstring, string\u003e\u003e(\"example\") ?? \n {\n { \"key1\", \"value1\" },\n { \"key2\", \"value2\" },\n };\n var exampleSecretVersion = new Aws.SecretsManager.SecretVersion(\"example\", new()\n {\n SecretId = exampleAwsSecretsmanagerSecret.Id,\n SecretString = JsonSerializer.Serialize(example),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\texample := map[string]interface{}{\n\t\t\t\"key1\": \"value1\",\n\t\t\t\"key2\": \"value2\",\n\t\t}\n\t\tif param := cfg.GetObject(\"example\"); param != nil {\n\t\t\texample = param\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(example)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = secretsmanager.NewSecretVersion(ctx, \"example\", \u0026secretsmanager.SecretVersionArgs{\n\t\t\tSecretId: pulumi.Any(exampleAwsSecretsmanagerSecret.Id),\n\t\t\tSecretString: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.SecretVersion;\nimport com.pulumi.aws.secretsmanager.SecretVersionArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var example = config.get(\"example\").orElse(Map.ofEntries(\n Map.entry(\"key1\", \"value1\"),\n Map.entry(\"key2\", \"value2\")\n ));\n var exampleSecretVersion = new SecretVersion(\"exampleSecretVersion\", SecretVersionArgs.builder()\n .secretId(exampleAwsSecretsmanagerSecret.id())\n .secretString(serializeJson(\n example))\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n # The map here can come from other supported configurations\n # like locals, resource attribute, map() built-in, etc.\n example:\n type: map(string)\n default:\n key1: value1\n key2: value2\nresources:\n exampleSecretVersion:\n type: aws:secretsmanager:SecretVersion\n name: example\n properties:\n secretId: ${exampleAwsSecretsmanagerSecret.id}\n secretString:\n fn::toJSON: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\nReading key-value pairs from JSON back into a native map\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as std from \"@pulumi/std\";\n\nexport const example = std.jsondecode({\n input: exampleAwsSecretsmanagerSecretVersion.secretString,\n}).then(invoke =\u003e invoke.result?.key1);\n```\n```python\nimport pulumi\nimport pulumi_std as std\n\npulumi.export(\"example\", std.jsondecode(input=example_aws_secretsmanager_secret_version[\"secretString\"]).result[\"key1\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"example\"] = Std.Jsondecode.Invoke(new()\n {\n Input = exampleAwsSecretsmanagerSecretVersion.SecretString,\n }).Apply(invoke =\u003e invoke.Result?.Key1),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tctx.Export(\"example\", pulumi.Any(std.Jsondecode(ctx, \u0026std.JsondecodeArgs{\n\t\t\tInput: exampleAwsSecretsmanagerSecretVersion.SecretString,\n\t\t}, nil).Result.Key1))\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.JsondecodeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n ctx.export(\"example\", StdFunctions.jsondecode(JsondecodeArgs.builder()\n .input(exampleAwsSecretsmanagerSecretVersion.secretString())\n .build()).result().key1());\n }\n}\n```\n```yaml\noutputs:\n example:\n fn::invoke:\n function: std:jsondecode\n arguments:\n input: ${exampleAwsSecretsmanagerSecretVersion.secretString}\n return: result.key1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n* `secret_id` - (String) ID of the secret.\n\n* `version_id` - (String) ID of the secret version.\n\n#### Optional\n\n* `account_id` (String) AWS Account where this resource is managed.\n\n* `region` (String) Region where this resource is managed.\n\nUsing `pulumi import`, import `aws_secretsmanager_secret_version` using the secret ID and version ID. For example:\n\nconsole\n\n% pulumi import aws_secretsmanager_secret_version.example 'arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456|xxxxx-xxxxxxx-xxxxxxx-xxxxx'\n\n", "properties": { "arn": { "type": "string", @@ -398725,7 +398725,7 @@ } }, "aws:securityhub/standardsControlAssociation:StandardsControlAssociation": { - "description": "## Example Usage\n\n### Basic usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.securityhub.Account(\"example\", {});\nconst cisAwsFoundationsBenchmark = new aws.securityhub.StandardsSubscription(\"cis_aws_foundations_benchmark\", {standardsArn: \"arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0\"}, {\n dependsOn: [example],\n});\nconst cisAwsFoundationsBenchmarkDisableIam1 = new aws.securityhub.StandardsControlAssociation(\"cis_aws_foundations_benchmark_disable_iam_1\", {\n standardsArn: cisAwsFoundationsBenchmark.standardsArn,\n securityControlId: \"IAM.1\",\n associationStatus: \"DISABLED\",\n updatedReason: \"Not needed\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.securityhub.Account(\"example\")\ncis_aws_foundations_benchmark = aws.securityhub.StandardsSubscription(\"cis_aws_foundations_benchmark\", standards_arn=\"arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0\",\nopts = pulumi.ResourceOptions(depends_on=[example]))\ncis_aws_foundations_benchmark_disable_iam1 = aws.securityhub.StandardsControlAssociation(\"cis_aws_foundations_benchmark_disable_iam_1\",\n standards_arn=cis_aws_foundations_benchmark.standards_arn,\n security_control_id=\"IAM.1\",\n association_status=\"DISABLED\",\n updated_reason=\"Not needed\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.SecurityHub.Account(\"example\");\n\n var cisAwsFoundationsBenchmark = new Aws.SecurityHub.StandardsSubscription(\"cis_aws_foundations_benchmark\", new()\n {\n StandardsArn = \"arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example,\n },\n });\n\n var cisAwsFoundationsBenchmarkDisableIam1 = new Aws.SecurityHub.StandardsControlAssociation(\"cis_aws_foundations_benchmark_disable_iam_1\", new()\n {\n StandardsArn = cisAwsFoundationsBenchmark.StandardsArn,\n SecurityControlId = \"IAM.1\",\n AssociationStatus = \"DISABLED\",\n UpdatedReason = \"Not needed\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/securityhub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := securityhub.NewAccount(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcisAwsFoundationsBenchmark, err := securityhub.NewStandardsSubscription(ctx, \"cis_aws_foundations_benchmark\", \u0026securityhub.StandardsSubscriptionArgs{\n\t\t\tStandardsArn: pulumi.String(\"arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securityhub.NewStandardsControlAssociation(ctx, \"cis_aws_foundations_benchmark_disable_iam_1\", \u0026securityhub.StandardsControlAssociationArgs{\n\t\t\tStandardsArn: cisAwsFoundationsBenchmark.StandardsArn,\n\t\t\tSecurityControlId: pulumi.String(\"IAM.1\"),\n\t\t\tAssociationStatus: pulumi.String(\"DISABLED\"),\n\t\t\tUpdatedReason: pulumi.String(\"Not needed\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.securityhub.Account;\nimport com.pulumi.aws.securityhub.StandardsSubscription;\nimport com.pulumi.aws.securityhub.StandardsSubscriptionArgs;\nimport com.pulumi.aws.securityhub.StandardsControlAssociation;\nimport com.pulumi.aws.securityhub.StandardsControlAssociationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Account(\"example\");\n\n var cisAwsFoundationsBenchmark = new StandardsSubscription(\"cisAwsFoundationsBenchmark\", StandardsSubscriptionArgs.builder()\n .standardsArn(\"arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(example)\n .build());\n\n var cisAwsFoundationsBenchmarkDisableIam1 = new StandardsControlAssociation(\"cisAwsFoundationsBenchmarkDisableIam1\", StandardsControlAssociationArgs.builder()\n .standardsArn(cisAwsFoundationsBenchmark.standardsArn())\n .securityControlId(\"IAM.1\")\n .associationStatus(\"DISABLED\")\n .updatedReason(\"Not needed\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:securityhub:Account\n cisAwsFoundationsBenchmark:\n type: aws:securityhub:StandardsSubscription\n name: cis_aws_foundations_benchmark\n properties:\n standardsArn: arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0\n options:\n dependsOn:\n - ${example}\n cisAwsFoundationsBenchmarkDisableIam1:\n type: aws:securityhub:StandardsControlAssociation\n name: cis_aws_foundations_benchmark_disable_iam_1\n properties:\n standardsArn: ${cisAwsFoundationsBenchmark.standardsArn}\n securityControlId: IAM.1\n associationStatus: DISABLED\n updatedReason: Not needed\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n", + "description": "## Example Usage\n\n### Basic usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.securityhub.Account(\"example\", {});\nconst cisAwsFoundationsBenchmark = new aws.securityhub.StandardsSubscription(\"cis_aws_foundations_benchmark\", {standardsArn: \"arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0\"}, {\n dependsOn: [example],\n});\nconst cisAwsFoundationsBenchmarkDisableIam1 = new aws.securityhub.StandardsControlAssociation(\"cis_aws_foundations_benchmark_disable_iam_1\", {\n standardsArn: cisAwsFoundationsBenchmark.standardsArn,\n securityControlId: \"IAM.1\",\n associationStatus: \"DISABLED\",\n updatedReason: \"Not needed\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.securityhub.Account(\"example\")\ncis_aws_foundations_benchmark = aws.securityhub.StandardsSubscription(\"cis_aws_foundations_benchmark\", standards_arn=\"arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0\",\nopts = pulumi.ResourceOptions(depends_on=[example]))\ncis_aws_foundations_benchmark_disable_iam1 = aws.securityhub.StandardsControlAssociation(\"cis_aws_foundations_benchmark_disable_iam_1\",\n standards_arn=cis_aws_foundations_benchmark.standards_arn,\n security_control_id=\"IAM.1\",\n association_status=\"DISABLED\",\n updated_reason=\"Not needed\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.SecurityHub.Account(\"example\");\n\n var cisAwsFoundationsBenchmark = new Aws.SecurityHub.StandardsSubscription(\"cis_aws_foundations_benchmark\", new()\n {\n StandardsArn = \"arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example,\n },\n });\n\n var cisAwsFoundationsBenchmarkDisableIam1 = new Aws.SecurityHub.StandardsControlAssociation(\"cis_aws_foundations_benchmark_disable_iam_1\", new()\n {\n StandardsArn = cisAwsFoundationsBenchmark.StandardsArn,\n SecurityControlId = \"IAM.1\",\n AssociationStatus = \"DISABLED\",\n UpdatedReason = \"Not needed\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/securityhub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := securityhub.NewAccount(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcisAwsFoundationsBenchmark, err := securityhub.NewStandardsSubscription(ctx, \"cis_aws_foundations_benchmark\", \u0026securityhub.StandardsSubscriptionArgs{\n\t\t\tStandardsArn: pulumi.String(\"arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securityhub.NewStandardsControlAssociation(ctx, \"cis_aws_foundations_benchmark_disable_iam_1\", \u0026securityhub.StandardsControlAssociationArgs{\n\t\t\tStandardsArn: cisAwsFoundationsBenchmark.StandardsArn,\n\t\t\tSecurityControlId: pulumi.String(\"IAM.1\"),\n\t\t\tAssociationStatus: pulumi.String(\"DISABLED\"),\n\t\t\tUpdatedReason: pulumi.String(\"Not needed\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.securityhub.Account;\nimport com.pulumi.aws.securityhub.StandardsSubscription;\nimport com.pulumi.aws.securityhub.StandardsSubscriptionArgs;\nimport com.pulumi.aws.securityhub.StandardsControlAssociation;\nimport com.pulumi.aws.securityhub.StandardsControlAssociationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Account(\"example\");\n\n var cisAwsFoundationsBenchmark = new StandardsSubscription(\"cisAwsFoundationsBenchmark\", StandardsSubscriptionArgs.builder()\n .standardsArn(\"arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(example)\n .build());\n\n var cisAwsFoundationsBenchmarkDisableIam1 = new StandardsControlAssociation(\"cisAwsFoundationsBenchmarkDisableIam1\", StandardsControlAssociationArgs.builder()\n .standardsArn(cisAwsFoundationsBenchmark.standardsArn())\n .securityControlId(\"IAM.1\")\n .associationStatus(\"DISABLED\")\n .updatedReason(\"Not needed\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:securityhub:Account\n cisAwsFoundationsBenchmark:\n type: aws:securityhub:StandardsSubscription\n name: cis_aws_foundations_benchmark\n properties:\n standardsArn: arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0\n options:\n dependsOn:\n - ${example}\n cisAwsFoundationsBenchmarkDisableIam1:\n type: aws:securityhub:StandardsControlAssociation\n name: cis_aws_foundations_benchmark_disable_iam_1\n properties:\n standardsArn: ${cisAwsFoundationsBenchmark.standardsArn}\n securityControlId: IAM.1\n associationStatus: DISABLED\n updatedReason: Not needed\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Disabling security control in all standards\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nexport = async () =\u003e {\n const example = new aws.securityhub.Account(\"example\", {});\n const iam1 = await aws.securityhub.getStandardsControlAssociations({\n securityControlId: \"IAM.1\",\n });\n const iam1StandardsControlAssociation: aws.securityhub.StandardsControlAssociation[] = [];\n for (const range of std.toset({\n input: iam1.standardsControlAssociations.map(__item =\u003e __item.standardsArn),\n }).result.map((v, k) =\u003e ({key: k, value: v}))) {\n iam1StandardsControlAssociation.push(new aws.securityhub.StandardsControlAssociation(`iam_1-${range.key}`, {\n standardsArn: range.key,\n securityControlId: iam1.securityControlId,\n associationStatus: \"DISABLED\",\n updatedReason: \"Not needed\",\n }));\n }\n}\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.securityhub.Account(\"example\")\niam1 = aws.securityhub.get_standards_control_associations(security_control_id=\"IAM.1\")\niam1_standards_control_association = []\nfor range in [{\"key\": k, \"value\": v} for [k, v] in enumerate(std.toset(input=[__item.standards_arn for __item in iam1.standards_control_associations]).result)]:\n iam1_standards_control_association.append(aws.securityhub.StandardsControlAssociation(f\"iam_1-{range['key']}\",\n standards_arn=range[\"key\"],\n security_control_id=iam1.security_control_id,\n association_status=\"DISABLED\",\n updated_reason=\"Not needed\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(async() =\u003e \n{\n var example = new Aws.SecurityHub.Account(\"example\");\n\n var iam1 = await Aws.SecurityHub.GetStandardsControlAssociations.InvokeAsync(new()\n {\n SecurityControlId = \"IAM.1\",\n });\n\n var iam1StandardsControlAssociation = new List\u003cAws.SecurityHub.StandardsControlAssociation\u003e();\n foreach (var range in )\n {\n iam1StandardsControlAssociation.Add(new Aws.SecurityHub.StandardsControlAssociation($\"iam_1-{range.Key}\", new()\n {\n StandardsArn = range.Key,\n SecurityControlId = iam1.SecurityControlId,\n AssociationStatus = \"DISABLED\",\n UpdatedReason = \"Not needed\",\n }));\n }\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/securityhub\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\n_, err := securityhub.NewAccount(ctx, \"example\", nil)\nif err != nil {\nreturn err\n}\niam1, err := securityhub.GetStandardsControlAssociations(ctx, \u0026securityhub.GetStandardsControlAssociationsArgs{\nSecurityControlId: \"IAM.1\",\n}, nil);\nif err != nil {\nreturn err\n}\nvar iam1StandardsControlAssociation []*securityhub.StandardsControlAssociation\nfor key0, _ := range interface{}(std.Toset(ctx, \u0026std.TosetArgs{\nInput: %!v(PANIC=Format method: fatal: A failure has occurred: unlowered splat expression @ example.pp:11,15-64),\n}, nil).Result) {\n__res, err := securityhub.NewStandardsControlAssociation(ctx, fmt.Sprintf(\"iam_1-%v\", key0), \u0026securityhub.StandardsControlAssociationArgs{\nStandardsArn: pulumi.Float64(key0),\nSecurityControlId: pulumi.String(iam1.SecurityControlId),\nAssociationStatus: pulumi.String(\"DISABLED\"),\nUpdatedReason: pulumi.String(\"Not needed\"),\n})\nif err != nil {\nreturn err\n}\niam1StandardsControlAssociation = append(iam1StandardsControlAssociation, __res)\n}\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.securityhub.Account;\nimport com.pulumi.aws.securityhub.SecurityhubFunctions;\nimport com.pulumi.aws.securityhub.inputs.GetStandardsControlAssociationsArgs;\nimport com.pulumi.aws.securityhub.StandardsControlAssociation;\nimport com.pulumi.aws.securityhub.StandardsControlAssociationArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Account(\"example\");\n\n final var iam1 = SecurityhubFunctions.getStandardsControlAssociations(GetStandardsControlAssociationsArgs.builder()\n .securityControlId(\"IAM.1\")\n .build());\n\n for (var range : KeyedValue.of(com.pulumi.std.StdFunctions(TosetArgs.builder()\n .input(iam1.standardsControlAssociations().stream().map(element -\u003e element.standardsArn()).collect(toList()))\n .build()).result())) {\n new StandardsControlAssociation(\"iam1StandardsControlAssociation-\" + range.key(), StandardsControlAssociationArgs.builder()\n .standardsArn(range.key())\n .securityControlId(iam1.securityControlId())\n .associationStatus(\"DISABLED\")\n .updatedReason(\"Not needed\")\n .build());\n }\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:securityhub:Account\n iam1StandardsControlAssociation:\n type: aws:securityhub:StandardsControlAssociation\n name: iam_1\n properties:\n standardsArn: ${range.key}\n securityControlId: ${iam1.securityControlId}\n associationStatus: DISABLED\n updatedReason: Not needed\n options: {}\nvariables:\n iam1:\n fn::invoke:\n function: aws:securityhub:getStandardsControlAssociations\n arguments:\n securityControlId: IAM.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "properties": { "associationStatus": { "type": "string", @@ -404759,7 +404759,7 @@ } }, "aws:sesv2/emailIdentityPolicy:EmailIdentityPolicy": { - "description": "Resource for managing an AWS SESv2 (Simple Email V2) Email Identity Policy.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.sesv2.EmailIdentity(\"example\", {emailIdentity: \"testing@example.com\"});\nconst exampleEmailIdentityPolicy = new aws.sesv2.EmailIdentityPolicy(\"example\", {\n emailIdentity: example.emailIdentity,\n policyName: \"example\",\n policy: pulumi.interpolate`{\n \"Id\":\"ExampleAuthorizationPolicy\",\n \"Version\":\"2012-10-17\",\n \"Statement\":[\n {\n \"Sid\":\"AuthorizeIAMUser\",\n \"Effect\":\"Allow\",\n \"Resource\":\"${example.arn}\",\n \"Principal\":{\n \"AWS\":[\n \"arn:aws:iam::123456789012:user/John\",\n \"arn:aws:iam::123456789012:user/Jane\"\n ]\n },\n \"Action\":[\n \"ses:DeleteEmailIdentity\",\n \"ses:PutEmailIdentityDkimSigningAttributes\"\n ]\n }\n ]\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.sesv2.EmailIdentity(\"example\", email_identity=\"testing@example.com\")\nexample_email_identity_policy = aws.sesv2.EmailIdentityPolicy(\"example\",\n email_identity=example.email_identity,\n policy_name=\"example\",\n policy=example.arn.apply(lambda arn: f\"\"\"{{\n \"Id\":\"ExampleAuthorizationPolicy\",\n \"Version\":\"2012-10-17\",\n \"Statement\":[\n {{\n \"Sid\":\"AuthorizeIAMUser\",\n \"Effect\":\"Allow\",\n \"Resource\":\"{arn}\",\n \"Principal\":{{\n \"AWS\":[\n \"arn:aws:iam::123456789012:user/John\",\n \"arn:aws:iam::123456789012:user/Jane\"\n ]\n }},\n \"Action\":[\n \"ses:DeleteEmailIdentity\",\n \"ses:PutEmailIdentityDkimSigningAttributes\"\n ]\n }}\n ]\n}}\n\"\"\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.SesV2.EmailIdentity(\"example\", new()\n {\n EmailIdentityDetails = \"testing@example.com\",\n });\n\n var exampleEmailIdentityPolicy = new Aws.SesV2.EmailIdentityPolicy(\"example\", new()\n {\n EmailIdentity = example.EmailIdentityDetails,\n PolicyName = \"example\",\n Policy = example.Arn.Apply(arn =\u003e @$\"{{\n \"\"Id\"\":\"\"ExampleAuthorizationPolicy\"\",\n \"\"Version\"\":\"\"2012-10-17\"\",\n \"\"Statement\"\":[\n {{\n \"\"Sid\"\":\"\"AuthorizeIAMUser\"\",\n \"\"Effect\"\":\"\"Allow\"\",\n \"\"Resource\"\":\"\"{arn}\"\",\n \"\"Principal\"\":{{\n \"\"AWS\"\":[\n \"\"arn:aws:iam::123456789012:user/John\"\",\n \"\"arn:aws:iam::123456789012:user/Jane\"\"\n ]\n }},\n \"\"Action\"\":[\n \"\"ses:DeleteEmailIdentity\"\",\n \"\"ses:PutEmailIdentityDkimSigningAttributes\"\"\n ]\n }}\n ]\n}}\n\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sesv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := sesv2.NewEmailIdentity(ctx, \"example\", \u0026sesv2.EmailIdentityArgs{\n\t\t\tEmailIdentity: pulumi.String(\"testing@example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sesv2.NewEmailIdentityPolicy(ctx, \"example\", \u0026sesv2.EmailIdentityPolicyArgs{\n\t\t\tEmailIdentity: example.EmailIdentity,\n\t\t\tPolicyName: pulumi.String(\"example\"),\n\t\t\tPolicy: example.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(`{\n \"Id\":\"ExampleAuthorizationPolicy\",\n \"Version\":\"2012-10-17\",\n \"Statement\":[\n {\n \"Sid\":\"AuthorizeIAMUser\",\n \"Effect\":\"Allow\",\n \"Resource\":\"%v\",\n \"Principal\":{\n \"AWS\":[\n \"arn:aws:iam::123456789012:user/John\",\n \"arn:aws:iam::123456789012:user/Jane\"\n ]\n },\n \"Action\":[\n \"ses:DeleteEmailIdentity\",\n \"ses:PutEmailIdentityDkimSigningAttributes\"\n ]\n }\n ]\n}\n`, arn), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sesv2.EmailIdentity;\nimport com.pulumi.aws.sesv2.EmailIdentityArgs;\nimport com.pulumi.aws.sesv2.EmailIdentityPolicy;\nimport com.pulumi.aws.sesv2.EmailIdentityPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new EmailIdentity(\"example\", EmailIdentityArgs.builder()\n .emailIdentity(\"testing@example.com\")\n .build());\n\n var exampleEmailIdentityPolicy = new EmailIdentityPolicy(\"exampleEmailIdentityPolicy\", EmailIdentityPolicyArgs.builder()\n .emailIdentity(example.emailIdentity())\n .policyName(\"example\")\n .policy(example.arn().applyValue(_arn -\u003e \"\"\"\n{\n \"Id\":\"ExampleAuthorizationPolicy\",\n \"Version\":\"2012-10-17\",\n \"Statement\":[\n {\n \"Sid\":\"AuthorizeIAMUser\",\n \"Effect\":\"Allow\",\n \"Resource\":\"%s\",\n \"Principal\":{\n \"AWS\":[\n \"arn:aws:iam::123456789012:user/John\",\n \"arn:aws:iam::123456789012:user/Jane\"\n ]\n },\n \"Action\":[\n \"ses:DeleteEmailIdentity\",\n \"ses:PutEmailIdentityDkimSigningAttributes\"\n ]\n }\n ]\n}\n\", _arn)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:sesv2:EmailIdentity\n properties:\n emailIdentity: testing@example.com\n exampleEmailIdentityPolicy:\n type: aws:sesv2:EmailIdentityPolicy\n name: example\n properties:\n emailIdentity: ${example.emailIdentity}\n policyName: example\n policy: |\n {\n \"Id\":\"ExampleAuthorizationPolicy\",\n \"Version\":\"2012-10-17\",\n \"Statement\":[\n {\n \"Sid\":\"AuthorizeIAMUser\",\n \"Effect\":\"Allow\",\n \"Resource\":\"${example.arn}\",\n \"Principal\":{\n \"AWS\":[\n \"arn:aws:iam::123456789012:user/John\",\n \"arn:aws:iam::123456789012:user/Jane\"\n ]\n },\n \"Action\":[\n \"ses:DeleteEmailIdentity\",\n \"ses:PutEmailIdentityDkimSigningAttributes\"\n ]\n }\n ]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import SESv2 (Simple Email V2) Email Identity Policy using the `email_identity` and `policy_name` separated by `|`. For example:\n\n```sh\n$ pulumi import aws:sesv2/emailIdentityPolicy:EmailIdentityPolicy example example_email_identity|example_policy_name\n```\n", + "description": "Resource for managing an AWS SESv2 (Simple Email V2) Email Identity Policy.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.sesv2.EmailIdentity(\"example\", {emailIdentity: \"testing@example.com\"});\nconst exampleEmailIdentityPolicy = new aws.sesv2.EmailIdentityPolicy(\"example\", {\n emailIdentity: example.emailIdentity,\n policyName: \"example\",\n policy: pulumi.interpolate`{\n \\\"Id\\\":\\\"ExampleAuthorizationPolicy\\\",\n \\\"Version\\\":\\\"2012-10-17\\\",\n \\\"Statement\\\":[\n {\n \\\"Sid\\\":\\\"AuthorizeIAMUser\\\",\n \\\"Effect\\\":\\\"Allow\\\",\n \\\"Resource\\\":\\\"${example.arn}\\\",\n \\\"Principal\\\":{\n \\\"AWS\\\":[\n \\\"arn:aws:iam::123456789012:user/John\\\",\n \\\"arn:aws:iam::123456789012:user/Jane\\\"\n ]\n },\n \\\"Action\\\":[\n \\\"ses:DeleteEmailIdentity\\\",\n \\\"ses:PutEmailIdentityDkimSigningAttributes\\\"\n ]\n }\n ]\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.sesv2.EmailIdentity(\"example\", email_identity=\"testing@example.com\")\nexample_email_identity_policy = aws.sesv2.EmailIdentityPolicy(\"example\",\n email_identity=example.email_identity,\n policy_name=\"example\",\n policy=example.arn.apply(lambda arn: f\"\"\"{{\n \\\"Id\\\":\\\"ExampleAuthorizationPolicy\\\",\n \\\"Version\\\":\\\"2012-10-17\\\",\n \\\"Statement\\\":[\n {{\n \\\"Sid\\\":\\\"AuthorizeIAMUser\\\",\n \\\"Effect\\\":\\\"Allow\\\",\n \\\"Resource\\\":\\\"{arn}\\\",\n \\\"Principal\\\":{{\n \\\"AWS\\\":[\n \\\"arn:aws:iam::123456789012:user/John\\\",\n \\\"arn:aws:iam::123456789012:user/Jane\\\"\n ]\n }},\n \\\"Action\\\":[\n \\\"ses:DeleteEmailIdentity\\\",\n \\\"ses:PutEmailIdentityDkimSigningAttributes\\\"\n ]\n }}\n ]\n}}\n\"\"\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.SesV2.EmailIdentity(\"example\", new()\n {\n EmailIdentityDetails = \"testing@example.com\",\n });\n\n var exampleEmailIdentityPolicy = new Aws.SesV2.EmailIdentityPolicy(\"example\", new()\n {\n EmailIdentity = example.EmailIdentityDetails,\n PolicyName = \"example\",\n Policy = example.Arn.Apply(arn =\u003e @$\"{{\n \\\"\"Id\\\"\":\\\"\"ExampleAuthorizationPolicy\\\"\",\n \\\"\"Version\\\"\":\\\"\"2012-10-17\\\"\",\n \\\"\"Statement\\\"\":[\n {{\n \\\"\"Sid\\\"\":\\\"\"AuthorizeIAMUser\\\"\",\n \\\"\"Effect\\\"\":\\\"\"Allow\\\"\",\n \\\"\"Resource\\\"\":\\\"\"{arn}\\\"\",\n \\\"\"Principal\\\"\":{{\n \\\"\"AWS\\\"\":[\n \\\"\"arn:aws:iam::123456789012:user/John\\\"\",\n \\\"\"arn:aws:iam::123456789012:user/Jane\\\"\"\n ]\n }},\n \\\"\"Action\\\"\":[\n \\\"\"ses:DeleteEmailIdentity\\\"\",\n \\\"\"ses:PutEmailIdentityDkimSigningAttributes\\\"\"\n ]\n }}\n ]\n}}\n\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sesv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := sesv2.NewEmailIdentity(ctx, \"example\", \u0026sesv2.EmailIdentityArgs{\n\t\t\tEmailIdentity: pulumi.String(\"testing@example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sesv2.NewEmailIdentityPolicy(ctx, \"example\", \u0026sesv2.EmailIdentityPolicyArgs{\n\t\t\tEmailIdentity: example.EmailIdentity,\n\t\t\tPolicyName: pulumi.String(\"example\"),\n\t\t\tPolicy: example.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(`{\n \\\"Id\\\":\\\"ExampleAuthorizationPolicy\\\",\n \\\"Version\\\":\\\"2012-10-17\\\",\n \\\"Statement\\\":[\n {\n \\\"Sid\\\":\\\"AuthorizeIAMUser\\\",\n \\\"Effect\\\":\\\"Allow\\\",\n \\\"Resource\\\":\\\"%v\\\",\n \\\"Principal\\\":{\n \\\"AWS\\\":[\n \\\"arn:aws:iam::123456789012:user/John\\\",\n \\\"arn:aws:iam::123456789012:user/Jane\\\"\n ]\n },\n \\\"Action\\\":[\n \\\"ses:DeleteEmailIdentity\\\",\n \\\"ses:PutEmailIdentityDkimSigningAttributes\\\"\n ]\n }\n ]\n}\n`, arn), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sesv2.EmailIdentity;\nimport com.pulumi.aws.sesv2.EmailIdentityArgs;\nimport com.pulumi.aws.sesv2.EmailIdentityPolicy;\nimport com.pulumi.aws.sesv2.EmailIdentityPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new EmailIdentity(\"example\", EmailIdentityArgs.builder()\n .emailIdentity(\"testing@example.com\")\n .build());\n\n var exampleEmailIdentityPolicy = new EmailIdentityPolicy(\"exampleEmailIdentityPolicy\", EmailIdentityPolicyArgs.builder()\n .emailIdentity(example.emailIdentity())\n .policyName(\"example\")\n .policy(example.arn().applyValue(_arn -\u003e \"\"\"\n{\n \\\"Id\\\":\\\"ExampleAuthorizationPolicy\\\",\n \\\"Version\\\":\\\"2012-10-17\\\",\n \\\"Statement\\\":[\n {\n \\\"Sid\\\":\\\"AuthorizeIAMUser\\\",\n \\\"Effect\\\":\\\"Allow\\\",\n \\\"Resource\\\":\\\"%s\\\",\n \\\"Principal\\\":{\n \\\"AWS\\\":[\n \\\"arn:aws:iam::123456789012:user/John\\\",\n \\\"arn:aws:iam::123456789012:user/Jane\\\"\n ]\n },\n \\\"Action\\\":[\n \\\"ses:DeleteEmailIdentity\\\",\n \\\"ses:PutEmailIdentityDkimSigningAttributes\\\"\n ]\n }\n ]\n}\n\", _arn)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:sesv2:EmailIdentity\n properties:\n emailIdentity: testing@example.com\n exampleEmailIdentityPolicy:\n type: aws:sesv2:EmailIdentityPolicy\n name: example\n properties:\n emailIdentity: ${example.emailIdentity}\n policyName: example\n policy: |\n {\n \\\"Id\\\":\\\"ExampleAuthorizationPolicy\\\",\n \\\"Version\\\":\\\"2012-10-17\\\",\n \\\"Statement\\\":[\n {\n \\\"Sid\\\":\\\"AuthorizeIAMUser\\\",\n \\\"Effect\\\":\\\"Allow\\\",\n \\\"Resource\\\":\\\"${example.arn}\\\",\n \\\"Principal\\\":{\n \\\"AWS\\\":[\n \\\"arn:aws:iam::123456789012:user/John\\\",\n \\\"arn:aws:iam::123456789012:user/Jane\\\"\n ]\n },\n \\\"Action\\\":[\n \\\"ses:DeleteEmailIdentity\\\",\n \\\"ses:PutEmailIdentityDkimSigningAttributes\\\"\n ]\n }\n ]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import SESv2 (Simple Email V2) Email Identity Policy using the `email_identity` and `policy_name` separated by `|`. For example:\n\n```sh\n$ pulumi import aws:sesv2/emailIdentityPolicy:EmailIdentityPolicy example example_email_identity|example_policy_name\n```\n", "properties": { "emailIdentity": { "type": "string", @@ -405043,7 +405043,7 @@ } }, "aws:sfn/stateMachine:StateMachine": { - "description": "Provides a Step Function State Machine resource\n\n## Example Usage\n\n### Basic (Standard Workflow)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// ...\nconst sfnStateMachine = new aws.sfn.StateMachine(\"sfn_state_machine\", {\n name: \"my-state-machine\",\n roleArn: iamForSfn.arn,\n definition: `{\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Task\",\n \"Resource\": \"${lambda.arn}\",\n \"End\": true\n }\n }\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\n# ...\nsfn_state_machine = aws.sfn.StateMachine(\"sfn_state_machine\",\n name=\"my-state-machine\",\n role_arn=iam_for_sfn[\"arn\"],\n definition=f\"\"\"{{\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {{\n \"HelloWorld\": {{\n \"Type\": \"Task\",\n \"Resource\": \"{lambda_[\"arn\"]}\",\n \"End\": true\n }}\n }}\n}}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // ...\n var sfnStateMachine = new Aws.Sfn.StateMachine(\"sfn_state_machine\", new()\n {\n Name = \"my-state-machine\",\n RoleArn = iamForSfn.Arn,\n Definition = @$\"{{\n \"\"Comment\"\": \"\"A Hello World example of the Amazon States Language using an AWS Lambda Function\"\",\n \"\"StartAt\"\": \"\"HelloWorld\"\",\n \"\"States\"\": {{\n \"\"HelloWorld\"\": {{\n \"\"Type\"\": \"\"Task\"\",\n \"\"Resource\"\": \"\"{lambda.Arn}\"\",\n \"\"End\"\": true\n }}\n }}\n}}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sfn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ...\n\t\t_, err := sfn.NewStateMachine(ctx, \"sfn_state_machine\", \u0026sfn.StateMachineArgs{\n\t\t\tName: pulumi.String(\"my-state-machine\"),\n\t\t\tRoleArn: pulumi.Any(iamForSfn.Arn),\n\t\t\tDefinition: pulumi.Sprintf(`{\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Task\",\n \"Resource\": \"%v\",\n \"End\": true\n }\n }\n}\n`, lambda.Arn),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sfn.StateMachine;\nimport com.pulumi.aws.sfn.StateMachineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // ...\n var sfnStateMachine = new StateMachine(\"sfnStateMachine\", StateMachineArgs.builder()\n .name(\"my-state-machine\")\n .roleArn(iamForSfn.arn())\n .definition(\"\"\"\n{\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Task\",\n \"Resource\": \"%s\",\n \"End\": true\n }\n }\n}\n\", lambda.arn()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # ...\n sfnStateMachine:\n type: aws:sfn:StateMachine\n name: sfn_state_machine\n properties:\n name: my-state-machine\n roleArn: ${iamForSfn.arn}\n definition: |\n {\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Task\",\n \"Resource\": \"${lambda.arn}\",\n \"End\": true\n }\n }\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Basic (Express Workflow)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// ...\nconst sfnStateMachine = new aws.sfn.StateMachine(\"sfn_state_machine\", {\n name: \"my-state-machine\",\n roleArn: iamForSfn.arn,\n type: \"EXPRESS\",\n definition: `{\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Task\",\n \"Resource\": \"${lambda.arn}\",\n \"End\": true\n }\n }\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\n# ...\nsfn_state_machine = aws.sfn.StateMachine(\"sfn_state_machine\",\n name=\"my-state-machine\",\n role_arn=iam_for_sfn[\"arn\"],\n type=\"EXPRESS\",\n definition=f\"\"\"{{\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {{\n \"HelloWorld\": {{\n \"Type\": \"Task\",\n \"Resource\": \"{lambda_[\"arn\"]}\",\n \"End\": true\n }}\n }}\n}}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // ...\n var sfnStateMachine = new Aws.Sfn.StateMachine(\"sfn_state_machine\", new()\n {\n Name = \"my-state-machine\",\n RoleArn = iamForSfn.Arn,\n Type = \"EXPRESS\",\n Definition = @$\"{{\n \"\"Comment\"\": \"\"A Hello World example of the Amazon States Language using an AWS Lambda Function\"\",\n \"\"StartAt\"\": \"\"HelloWorld\"\",\n \"\"States\"\": {{\n \"\"HelloWorld\"\": {{\n \"\"Type\"\": \"\"Task\"\",\n \"\"Resource\"\": \"\"{lambda.Arn}\"\",\n \"\"End\"\": true\n }}\n }}\n}}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sfn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ...\n\t\t_, err := sfn.NewStateMachine(ctx, \"sfn_state_machine\", \u0026sfn.StateMachineArgs{\n\t\t\tName: pulumi.String(\"my-state-machine\"),\n\t\t\tRoleArn: pulumi.Any(iamForSfn.Arn),\n\t\t\tType: pulumi.String(\"EXPRESS\"),\n\t\t\tDefinition: pulumi.Sprintf(`{\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Task\",\n \"Resource\": \"%v\",\n \"End\": true\n }\n }\n}\n`, lambda.Arn),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sfn.StateMachine;\nimport com.pulumi.aws.sfn.StateMachineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // ...\n var sfnStateMachine = new StateMachine(\"sfnStateMachine\", StateMachineArgs.builder()\n .name(\"my-state-machine\")\n .roleArn(iamForSfn.arn())\n .type(\"EXPRESS\")\n .definition(\"\"\"\n{\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Task\",\n \"Resource\": \"%s\",\n \"End\": true\n }\n }\n}\n\", lambda.arn()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # ...\n sfnStateMachine:\n type: aws:sfn:StateMachine\n name: sfn_state_machine\n properties:\n name: my-state-machine\n roleArn: ${iamForSfn.arn}\n type: EXPRESS\n definition: |\n {\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Task\",\n \"Resource\": \"${lambda.arn}\",\n \"End\": true\n }\n }\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Publish (Publish SFN version)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// ...\nconst sfnStateMachine = new aws.sfn.StateMachine(\"sfn_state_machine\", {\n name: \"my-state-machine\",\n roleArn: iamForSfn.arn,\n publish: true,\n type: \"EXPRESS\",\n definition: `{\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Task\",\n \"Resource\": \"${lambda.arn}\",\n \"End\": true\n }\n }\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\n# ...\nsfn_state_machine = aws.sfn.StateMachine(\"sfn_state_machine\",\n name=\"my-state-machine\",\n role_arn=iam_for_sfn[\"arn\"],\n publish=True,\n type=\"EXPRESS\",\n definition=f\"\"\"{{\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {{\n \"HelloWorld\": {{\n \"Type\": \"Task\",\n \"Resource\": \"{lambda_[\"arn\"]}\",\n \"End\": true\n }}\n }}\n}}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // ...\n var sfnStateMachine = new Aws.Sfn.StateMachine(\"sfn_state_machine\", new()\n {\n Name = \"my-state-machine\",\n RoleArn = iamForSfn.Arn,\n Publish = true,\n Type = \"EXPRESS\",\n Definition = @$\"{{\n \"\"Comment\"\": \"\"A Hello World example of the Amazon States Language using an AWS Lambda Function\"\",\n \"\"StartAt\"\": \"\"HelloWorld\"\",\n \"\"States\"\": {{\n \"\"HelloWorld\"\": {{\n \"\"Type\"\": \"\"Task\"\",\n \"\"Resource\"\": \"\"{lambda.Arn}\"\",\n \"\"End\"\": true\n }}\n }}\n}}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sfn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ...\n\t\t_, err := sfn.NewStateMachine(ctx, \"sfn_state_machine\", \u0026sfn.StateMachineArgs{\n\t\t\tName: pulumi.String(\"my-state-machine\"),\n\t\t\tRoleArn: pulumi.Any(iamForSfn.Arn),\n\t\t\tPublish: pulumi.Bool(true),\n\t\t\tType: pulumi.String(\"EXPRESS\"),\n\t\t\tDefinition: pulumi.Sprintf(`{\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Task\",\n \"Resource\": \"%v\",\n \"End\": true\n }\n }\n}\n`, lambda.Arn),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sfn.StateMachine;\nimport com.pulumi.aws.sfn.StateMachineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // ...\n var sfnStateMachine = new StateMachine(\"sfnStateMachine\", StateMachineArgs.builder()\n .name(\"my-state-machine\")\n .roleArn(iamForSfn.arn())\n .publish(true)\n .type(\"EXPRESS\")\n .definition(\"\"\"\n{\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Task\",\n \"Resource\": \"%s\",\n \"End\": true\n }\n }\n}\n\", lambda.arn()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # ...\n sfnStateMachine:\n type: aws:sfn:StateMachine\n name: sfn_state_machine\n properties:\n name: my-state-machine\n roleArn: ${iamForSfn.arn}\n publish: true\n type: EXPRESS\n definition: |\n {\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Task\",\n \"Resource\": \"${lambda.arn}\",\n \"End\": true\n }\n }\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Logging\n\n\u003e *NOTE:* See the [AWS Step Functions Developer Guide](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) for more information about enabling Step Function logging.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// ...\nconst sfnStateMachine = new aws.sfn.StateMachine(\"sfn_state_machine\", {\n name: \"my-state-machine\",\n roleArn: iamForSfn.arn,\n definition: `{\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Task\",\n \"Resource\": \"${lambda.arn}\",\n \"End\": true\n }\n }\n}\n`,\n loggingConfiguration: {\n logDestination: `${logGroupForSfn.arn}:*`,\n includeExecutionData: true,\n level: \"ERROR\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\n# ...\nsfn_state_machine = aws.sfn.StateMachine(\"sfn_state_machine\",\n name=\"my-state-machine\",\n role_arn=iam_for_sfn[\"arn\"],\n definition=f\"\"\"{{\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {{\n \"HelloWorld\": {{\n \"Type\": \"Task\",\n \"Resource\": \"{lambda_[\"arn\"]}\",\n \"End\": true\n }}\n }}\n}}\n\"\"\",\n logging_configuration={\n \"log_destination\": f\"{log_group_for_sfn['arn']}:*\",\n \"include_execution_data\": True,\n \"level\": \"ERROR\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // ...\n var sfnStateMachine = new Aws.Sfn.StateMachine(\"sfn_state_machine\", new()\n {\n Name = \"my-state-machine\",\n RoleArn = iamForSfn.Arn,\n Definition = @$\"{{\n \"\"Comment\"\": \"\"A Hello World example of the Amazon States Language using an AWS Lambda Function\"\",\n \"\"StartAt\"\": \"\"HelloWorld\"\",\n \"\"States\"\": {{\n \"\"HelloWorld\"\": {{\n \"\"Type\"\": \"\"Task\"\",\n \"\"Resource\"\": \"\"{lambda.Arn}\"\",\n \"\"End\"\": true\n }}\n }}\n}}\n\",\n LoggingConfiguration = new Aws.Sfn.Inputs.StateMachineLoggingConfigurationArgs\n {\n LogDestination = $\"{logGroupForSfn.Arn}:*\",\n IncludeExecutionData = true,\n Level = \"ERROR\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sfn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ...\n\t\t_, err := sfn.NewStateMachine(ctx, \"sfn_state_machine\", \u0026sfn.StateMachineArgs{\n\t\t\tName: pulumi.String(\"my-state-machine\"),\n\t\t\tRoleArn: pulumi.Any(iamForSfn.Arn),\n\t\t\tDefinition: pulumi.Sprintf(`{\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Task\",\n \"Resource\": \"%v\",\n \"End\": true\n }\n }\n}\n`, lambda.Arn),\n\t\t\tLoggingConfiguration: \u0026sfn.StateMachineLoggingConfigurationArgs{\n\t\t\t\tLogDestination: pulumi.Sprintf(\"%v:*\", logGroupForSfn.Arn),\n\t\t\t\tIncludeExecutionData: pulumi.Bool(true),\n\t\t\t\tLevel: pulumi.String(\"ERROR\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sfn.StateMachine;\nimport com.pulumi.aws.sfn.StateMachineArgs;\nimport com.pulumi.aws.sfn.inputs.StateMachineLoggingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // ...\n var sfnStateMachine = new StateMachine(\"sfnStateMachine\", StateMachineArgs.builder()\n .name(\"my-state-machine\")\n .roleArn(iamForSfn.arn())\n .definition(\"\"\"\n{\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Task\",\n \"Resource\": \"%s\",\n \"End\": true\n }\n }\n}\n\", lambda.arn()))\n .loggingConfiguration(StateMachineLoggingConfigurationArgs.builder()\n .logDestination(String.format(\"%s:*\", logGroupForSfn.arn()))\n .includeExecutionData(true)\n .level(\"ERROR\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # ...\n sfnStateMachine:\n type: aws:sfn:StateMachine\n name: sfn_state_machine\n properties:\n name: my-state-machine\n roleArn: ${iamForSfn.arn}\n definition: |\n {\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Task\",\n \"Resource\": \"${lambda.arn}\",\n \"End\": true\n }\n }\n }\n loggingConfiguration:\n logDestination: ${logGroupForSfn.arn}:*\n includeExecutionData: true\n level: ERROR\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Encryption\n\n\u003e *NOTE:* See the section [Data at rest encyption](https://docs.aws.amazon.com/step-functions/latest/dg/encryption-at-rest.html) in the [AWS Step Functions Developer Guide](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) for more information about enabling encryption of data using a customer-managed key for Step Functions State Machines data.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// ...\nconst sfnStateMachine = new aws.sfn.StateMachine(\"sfn_state_machine\", {\n name: \"my-state-machine\",\n roleArn: iamForSfn.arn,\n definition: `{\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Task\",\n \"Resource\": \"${lambda.arn}\",\n \"End\": true\n }\n }\n}\n`,\n encryptionConfiguration: {\n kmsKeyId: kmsKeyForSfn.arn,\n type: \"CUSTOMER_MANAGED_KMS_KEY\",\n kmsDataKeyReusePeriodSeconds: 900,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\n# ...\nsfn_state_machine = aws.sfn.StateMachine(\"sfn_state_machine\",\n name=\"my-state-machine\",\n role_arn=iam_for_sfn[\"arn\"],\n definition=f\"\"\"{{\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {{\n \"HelloWorld\": {{\n \"Type\": \"Task\",\n \"Resource\": \"{lambda_[\"arn\"]}\",\n \"End\": true\n }}\n }}\n}}\n\"\"\",\n encryption_configuration={\n \"kms_key_id\": kms_key_for_sfn[\"arn\"],\n \"type\": \"CUSTOMER_MANAGED_KMS_KEY\",\n \"kms_data_key_reuse_period_seconds\": 900,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // ...\n var sfnStateMachine = new Aws.Sfn.StateMachine(\"sfn_state_machine\", new()\n {\n Name = \"my-state-machine\",\n RoleArn = iamForSfn.Arn,\n Definition = @$\"{{\n \"\"Comment\"\": \"\"A Hello World example of the Amazon States Language using an AWS Lambda Function\"\",\n \"\"StartAt\"\": \"\"HelloWorld\"\",\n \"\"States\"\": {{\n \"\"HelloWorld\"\": {{\n \"\"Type\"\": \"\"Task\"\",\n \"\"Resource\"\": \"\"{lambda.Arn}\"\",\n \"\"End\"\": true\n }}\n }}\n}}\n\",\n EncryptionConfiguration = new Aws.Sfn.Inputs.StateMachineEncryptionConfigurationArgs\n {\n KmsKeyId = kmsKeyForSfn.Arn,\n Type = \"CUSTOMER_MANAGED_KMS_KEY\",\n KmsDataKeyReusePeriodSeconds = 900,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sfn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ...\n\t\t_, err := sfn.NewStateMachine(ctx, \"sfn_state_machine\", \u0026sfn.StateMachineArgs{\n\t\t\tName: pulumi.String(\"my-state-machine\"),\n\t\t\tRoleArn: pulumi.Any(iamForSfn.Arn),\n\t\t\tDefinition: pulumi.Sprintf(`{\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Task\",\n \"Resource\": \"%v\",\n \"End\": true\n }\n }\n}\n`, lambda.Arn),\n\t\t\tEncryptionConfiguration: \u0026sfn.StateMachineEncryptionConfigurationArgs{\n\t\t\t\tKmsKeyId: pulumi.Any(kmsKeyForSfn.Arn),\n\t\t\t\tType: pulumi.String(\"CUSTOMER_MANAGED_KMS_KEY\"),\n\t\t\t\tKmsDataKeyReusePeriodSeconds: pulumi.Int(900),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sfn.StateMachine;\nimport com.pulumi.aws.sfn.StateMachineArgs;\nimport com.pulumi.aws.sfn.inputs.StateMachineEncryptionConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // ...\n var sfnStateMachine = new StateMachine(\"sfnStateMachine\", StateMachineArgs.builder()\n .name(\"my-state-machine\")\n .roleArn(iamForSfn.arn())\n .definition(\"\"\"\n{\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Task\",\n \"Resource\": \"%s\",\n \"End\": true\n }\n }\n}\n\", lambda.arn()))\n .encryptionConfiguration(StateMachineEncryptionConfigurationArgs.builder()\n .kmsKeyId(kmsKeyForSfn.arn())\n .type(\"CUSTOMER_MANAGED_KMS_KEY\")\n .kmsDataKeyReusePeriodSeconds(900)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # ...\n sfnStateMachine:\n type: aws:sfn:StateMachine\n name: sfn_state_machine\n properties:\n name: my-state-machine\n roleArn: ${iamForSfn.arn}\n definition: |\n {\n \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\",\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Task\",\n \"Resource\": \"${lambda.arn}\",\n \"End\": true\n }\n }\n }\n encryptionConfiguration:\n kmsKeyId: ${kmsKeyForSfn.arn}\n type: CUSTOMER_MANAGED_KMS_KEY\n kmsDataKeyReusePeriodSeconds: 900\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n- `arn` (String) ARN of the state machine.\n\nUsing `pulumi import`, import State Machines using the `arn`. For example:\n\nconsole\n\n% pulumi import aws_sfn_state_machine.foo arn:aws:states:eu-west-1:123456789098:stateMachine:bar\n\n", + "description": "Provides a Step Function State Machine resource\n\n## Example Usage\n\n### Basic (Standard Workflow)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// ...\nconst sfnStateMachine = new aws.sfn.StateMachine(\"sfn_state_machine\", {\n name: \"my-state-machine\",\n roleArn: iamForSfn.arn,\n definition: `{\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {\n \\\"HelloWorld\\\": {\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"${lambda.arn}\\\",\n \\\"End\\\": true\n }\n }\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\n# ...\nsfn_state_machine = aws.sfn.StateMachine(\"sfn_state_machine\",\n name=\"my-state-machine\",\n role_arn=iam_for_sfn[\"arn\"],\n definition=f\"\"\"{{\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {{\n \\\"HelloWorld\\\": {{\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"{lambda_[\"arn\"]}\\\",\n \\\"End\\\": true\n }}\n }}\n}}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // ...\n var sfnStateMachine = new Aws.Sfn.StateMachine(\"sfn_state_machine\", new()\n {\n Name = \"my-state-machine\",\n RoleArn = iamForSfn.Arn,\n Definition = @$\"{{\n \\\"\"Comment\\\"\": \\\"\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\"\",\n \\\"\"StartAt\\\"\": \\\"\"HelloWorld\\\"\",\n \\\"\"States\\\"\": {{\n \\\"\"HelloWorld\\\"\": {{\n \\\"\"Type\\\"\": \\\"\"Task\\\"\",\n \\\"\"Resource\\\"\": \\\"\"{lambda.Arn}\\\"\",\n \\\"\"End\\\"\": true\n }}\n }}\n}}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sfn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ...\n\t\t_, err := sfn.NewStateMachine(ctx, \"sfn_state_machine\", \u0026sfn.StateMachineArgs{\n\t\t\tName: pulumi.String(\"my-state-machine\"),\n\t\t\tRoleArn: pulumi.Any(iamForSfn.Arn),\n\t\t\tDefinition: pulumi.Sprintf(`{\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {\n \\\"HelloWorld\\\": {\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"%v\\\",\n \\\"End\\\": true\n }\n }\n}\n`, lambda.Arn),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sfn.StateMachine;\nimport com.pulumi.aws.sfn.StateMachineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // ...\n var sfnStateMachine = new StateMachine(\"sfnStateMachine\", StateMachineArgs.builder()\n .name(\"my-state-machine\")\n .roleArn(iamForSfn.arn())\n .definition(\"\"\"\n{\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {\n \\\"HelloWorld\\\": {\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"%s\\\",\n \\\"End\\\": true\n }\n }\n}\n\", lambda.arn()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # ...\n sfnStateMachine:\n type: aws:sfn:StateMachine\n name: sfn_state_machine\n properties:\n name: my-state-machine\n roleArn: ${iamForSfn.arn}\n definition: |\n {\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {\n \\\"HelloWorld\\\": {\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"${lambda.arn}\\\",\n \\\"End\\\": true\n }\n }\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Basic (Express Workflow)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// ...\nconst sfnStateMachine = new aws.sfn.StateMachine(\"sfn_state_machine\", {\n name: \"my-state-machine\",\n roleArn: iamForSfn.arn,\n type: \"EXPRESS\",\n definition: `{\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {\n \\\"HelloWorld\\\": {\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"${lambda.arn}\\\",\n \\\"End\\\": true\n }\n }\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\n# ...\nsfn_state_machine = aws.sfn.StateMachine(\"sfn_state_machine\",\n name=\"my-state-machine\",\n role_arn=iam_for_sfn[\"arn\"],\n type=\"EXPRESS\",\n definition=f\"\"\"{{\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {{\n \\\"HelloWorld\\\": {{\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"{lambda_[\"arn\"]}\\\",\n \\\"End\\\": true\n }}\n }}\n}}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // ...\n var sfnStateMachine = new Aws.Sfn.StateMachine(\"sfn_state_machine\", new()\n {\n Name = \"my-state-machine\",\n RoleArn = iamForSfn.Arn,\n Type = \"EXPRESS\",\n Definition = @$\"{{\n \\\"\"Comment\\\"\": \\\"\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\"\",\n \\\"\"StartAt\\\"\": \\\"\"HelloWorld\\\"\",\n \\\"\"States\\\"\": {{\n \\\"\"HelloWorld\\\"\": {{\n \\\"\"Type\\\"\": \\\"\"Task\\\"\",\n \\\"\"Resource\\\"\": \\\"\"{lambda.Arn}\\\"\",\n \\\"\"End\\\"\": true\n }}\n }}\n}}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sfn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ...\n\t\t_, err := sfn.NewStateMachine(ctx, \"sfn_state_machine\", \u0026sfn.StateMachineArgs{\n\t\t\tName: pulumi.String(\"my-state-machine\"),\n\t\t\tRoleArn: pulumi.Any(iamForSfn.Arn),\n\t\t\tType: pulumi.String(\"EXPRESS\"),\n\t\t\tDefinition: pulumi.Sprintf(`{\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {\n \\\"HelloWorld\\\": {\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"%v\\\",\n \\\"End\\\": true\n }\n }\n}\n`, lambda.Arn),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sfn.StateMachine;\nimport com.pulumi.aws.sfn.StateMachineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // ...\n var sfnStateMachine = new StateMachine(\"sfnStateMachine\", StateMachineArgs.builder()\n .name(\"my-state-machine\")\n .roleArn(iamForSfn.arn())\n .type(\"EXPRESS\")\n .definition(\"\"\"\n{\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {\n \\\"HelloWorld\\\": {\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"%s\\\",\n \\\"End\\\": true\n }\n }\n}\n\", lambda.arn()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # ...\n sfnStateMachine:\n type: aws:sfn:StateMachine\n name: sfn_state_machine\n properties:\n name: my-state-machine\n roleArn: ${iamForSfn.arn}\n type: EXPRESS\n definition: |\n {\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {\n \\\"HelloWorld\\\": {\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"${lambda.arn}\\\",\n \\\"End\\\": true\n }\n }\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Publish (Publish SFN version)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// ...\nconst sfnStateMachine = new aws.sfn.StateMachine(\"sfn_state_machine\", {\n name: \"my-state-machine\",\n roleArn: iamForSfn.arn,\n publish: true,\n type: \"EXPRESS\",\n definition: `{\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {\n \\\"HelloWorld\\\": {\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"${lambda.arn}\\\",\n \\\"End\\\": true\n }\n }\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\n# ...\nsfn_state_machine = aws.sfn.StateMachine(\"sfn_state_machine\",\n name=\"my-state-machine\",\n role_arn=iam_for_sfn[\"arn\"],\n publish=True,\n type=\"EXPRESS\",\n definition=f\"\"\"{{\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {{\n \\\"HelloWorld\\\": {{\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"{lambda_[\"arn\"]}\\\",\n \\\"End\\\": true\n }}\n }}\n}}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // ...\n var sfnStateMachine = new Aws.Sfn.StateMachine(\"sfn_state_machine\", new()\n {\n Name = \"my-state-machine\",\n RoleArn = iamForSfn.Arn,\n Publish = true,\n Type = \"EXPRESS\",\n Definition = @$\"{{\n \\\"\"Comment\\\"\": \\\"\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\"\",\n \\\"\"StartAt\\\"\": \\\"\"HelloWorld\\\"\",\n \\\"\"States\\\"\": {{\n \\\"\"HelloWorld\\\"\": {{\n \\\"\"Type\\\"\": \\\"\"Task\\\"\",\n \\\"\"Resource\\\"\": \\\"\"{lambda.Arn}\\\"\",\n \\\"\"End\\\"\": true\n }}\n }}\n}}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sfn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ...\n\t\t_, err := sfn.NewStateMachine(ctx, \"sfn_state_machine\", \u0026sfn.StateMachineArgs{\n\t\t\tName: pulumi.String(\"my-state-machine\"),\n\t\t\tRoleArn: pulumi.Any(iamForSfn.Arn),\n\t\t\tPublish: pulumi.Bool(true),\n\t\t\tType: pulumi.String(\"EXPRESS\"),\n\t\t\tDefinition: pulumi.Sprintf(`{\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {\n \\\"HelloWorld\\\": {\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"%v\\\",\n \\\"End\\\": true\n }\n }\n}\n`, lambda.Arn),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sfn.StateMachine;\nimport com.pulumi.aws.sfn.StateMachineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // ...\n var sfnStateMachine = new StateMachine(\"sfnStateMachine\", StateMachineArgs.builder()\n .name(\"my-state-machine\")\n .roleArn(iamForSfn.arn())\n .publish(true)\n .type(\"EXPRESS\")\n .definition(\"\"\"\n{\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {\n \\\"HelloWorld\\\": {\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"%s\\\",\n \\\"End\\\": true\n }\n }\n}\n\", lambda.arn()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # ...\n sfnStateMachine:\n type: aws:sfn:StateMachine\n name: sfn_state_machine\n properties:\n name: my-state-machine\n roleArn: ${iamForSfn.arn}\n publish: true\n type: EXPRESS\n definition: |\n {\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {\n \\\"HelloWorld\\\": {\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"${lambda.arn}\\\",\n \\\"End\\\": true\n }\n }\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Logging\n\n\u003e *NOTE:* See the [AWS Step Functions Developer Guide](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) for more information about enabling Step Function logging.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// ...\nconst sfnStateMachine = new aws.sfn.StateMachine(\"sfn_state_machine\", {\n name: \"my-state-machine\",\n roleArn: iamForSfn.arn,\n definition: `{\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {\n \\\"HelloWorld\\\": {\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"${lambda.arn}\\\",\n \\\"End\\\": true\n }\n }\n}\n`,\n loggingConfiguration: {\n logDestination: `${logGroupForSfn.arn}:*`,\n includeExecutionData: true,\n level: \"ERROR\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\n# ...\nsfn_state_machine = aws.sfn.StateMachine(\"sfn_state_machine\",\n name=\"my-state-machine\",\n role_arn=iam_for_sfn[\"arn\"],\n definition=f\"\"\"{{\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {{\n \\\"HelloWorld\\\": {{\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"{lambda_[\"arn\"]}\\\",\n \\\"End\\\": true\n }}\n }}\n}}\n\"\"\",\n logging_configuration={\n \"log_destination\": f\"{log_group_for_sfn['arn']}:*\",\n \"include_execution_data\": True,\n \"level\": \"ERROR\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // ...\n var sfnStateMachine = new Aws.Sfn.StateMachine(\"sfn_state_machine\", new()\n {\n Name = \"my-state-machine\",\n RoleArn = iamForSfn.Arn,\n Definition = @$\"{{\n \\\"\"Comment\\\"\": \\\"\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\"\",\n \\\"\"StartAt\\\"\": \\\"\"HelloWorld\\\"\",\n \\\"\"States\\\"\": {{\n \\\"\"HelloWorld\\\"\": {{\n \\\"\"Type\\\"\": \\\"\"Task\\\"\",\n \\\"\"Resource\\\"\": \\\"\"{lambda.Arn}\\\"\",\n \\\"\"End\\\"\": true\n }}\n }}\n}}\n\",\n LoggingConfiguration = new Aws.Sfn.Inputs.StateMachineLoggingConfigurationArgs\n {\n LogDestination = $\"{logGroupForSfn.Arn}:*\",\n IncludeExecutionData = true,\n Level = \"ERROR\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sfn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ...\n\t\t_, err := sfn.NewStateMachine(ctx, \"sfn_state_machine\", \u0026sfn.StateMachineArgs{\n\t\t\tName: pulumi.String(\"my-state-machine\"),\n\t\t\tRoleArn: pulumi.Any(iamForSfn.Arn),\n\t\t\tDefinition: pulumi.Sprintf(`{\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {\n \\\"HelloWorld\\\": {\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"%v\\\",\n \\\"End\\\": true\n }\n }\n}\n`, lambda.Arn),\n\t\t\tLoggingConfiguration: \u0026sfn.StateMachineLoggingConfigurationArgs{\n\t\t\t\tLogDestination: pulumi.Sprintf(\"%v:*\", logGroupForSfn.Arn),\n\t\t\t\tIncludeExecutionData: pulumi.Bool(true),\n\t\t\t\tLevel: pulumi.String(\"ERROR\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sfn.StateMachine;\nimport com.pulumi.aws.sfn.StateMachineArgs;\nimport com.pulumi.aws.sfn.inputs.StateMachineLoggingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // ...\n var sfnStateMachine = new StateMachine(\"sfnStateMachine\", StateMachineArgs.builder()\n .name(\"my-state-machine\")\n .roleArn(iamForSfn.arn())\n .definition(\"\"\"\n{\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {\n \\\"HelloWorld\\\": {\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"%s\\\",\n \\\"End\\\": true\n }\n }\n}\n\", lambda.arn()))\n .loggingConfiguration(StateMachineLoggingConfigurationArgs.builder()\n .logDestination(String.format(\"%s:*\", logGroupForSfn.arn()))\n .includeExecutionData(true)\n .level(\"ERROR\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # ...\n sfnStateMachine:\n type: aws:sfn:StateMachine\n name: sfn_state_machine\n properties:\n name: my-state-machine\n roleArn: ${iamForSfn.arn}\n definition: |\n {\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {\n \\\"HelloWorld\\\": {\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"${lambda.arn}\\\",\n \\\"End\\\": true\n }\n }\n }\n loggingConfiguration:\n logDestination: ${logGroupForSfn.arn}:*\n includeExecutionData: true\n level: ERROR\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Encryption\n\n\u003e *NOTE:* See the section [Data at rest encyption](https://docs.aws.amazon.com/step-functions/latest/dg/encryption-at-rest.html) in the [AWS Step Functions Developer Guide](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) for more information about enabling encryption of data using a customer-managed key for Step Functions State Machines data.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// ...\nconst sfnStateMachine = new aws.sfn.StateMachine(\"sfn_state_machine\", {\n name: \"my-state-machine\",\n roleArn: iamForSfn.arn,\n definition: `{\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {\n \\\"HelloWorld\\\": {\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"${lambda.arn}\\\",\n \\\"End\\\": true\n }\n }\n}\n`,\n encryptionConfiguration: {\n kmsKeyId: kmsKeyForSfn.arn,\n type: \"CUSTOMER_MANAGED_KMS_KEY\",\n kmsDataKeyReusePeriodSeconds: 900,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\n# ...\nsfn_state_machine = aws.sfn.StateMachine(\"sfn_state_machine\",\n name=\"my-state-machine\",\n role_arn=iam_for_sfn[\"arn\"],\n definition=f\"\"\"{{\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {{\n \\\"HelloWorld\\\": {{\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"{lambda_[\"arn\"]}\\\",\n \\\"End\\\": true\n }}\n }}\n}}\n\"\"\",\n encryption_configuration={\n \"kms_key_id\": kms_key_for_sfn[\"arn\"],\n \"type\": \"CUSTOMER_MANAGED_KMS_KEY\",\n \"kms_data_key_reuse_period_seconds\": 900,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // ...\n var sfnStateMachine = new Aws.Sfn.StateMachine(\"sfn_state_machine\", new()\n {\n Name = \"my-state-machine\",\n RoleArn = iamForSfn.Arn,\n Definition = @$\"{{\n \\\"\"Comment\\\"\": \\\"\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\"\",\n \\\"\"StartAt\\\"\": \\\"\"HelloWorld\\\"\",\n \\\"\"States\\\"\": {{\n \\\"\"HelloWorld\\\"\": {{\n \\\"\"Type\\\"\": \\\"\"Task\\\"\",\n \\\"\"Resource\\\"\": \\\"\"{lambda.Arn}\\\"\",\n \\\"\"End\\\"\": true\n }}\n }}\n}}\n\",\n EncryptionConfiguration = new Aws.Sfn.Inputs.StateMachineEncryptionConfigurationArgs\n {\n KmsKeyId = kmsKeyForSfn.Arn,\n Type = \"CUSTOMER_MANAGED_KMS_KEY\",\n KmsDataKeyReusePeriodSeconds = 900,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sfn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ...\n\t\t_, err := sfn.NewStateMachine(ctx, \"sfn_state_machine\", \u0026sfn.StateMachineArgs{\n\t\t\tName: pulumi.String(\"my-state-machine\"),\n\t\t\tRoleArn: pulumi.Any(iamForSfn.Arn),\n\t\t\tDefinition: pulumi.Sprintf(`{\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {\n \\\"HelloWorld\\\": {\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"%v\\\",\n \\\"End\\\": true\n }\n }\n}\n`, lambda.Arn),\n\t\t\tEncryptionConfiguration: \u0026sfn.StateMachineEncryptionConfigurationArgs{\n\t\t\t\tKmsKeyId: pulumi.Any(kmsKeyForSfn.Arn),\n\t\t\t\tType: pulumi.String(\"CUSTOMER_MANAGED_KMS_KEY\"),\n\t\t\t\tKmsDataKeyReusePeriodSeconds: pulumi.Int(900),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sfn.StateMachine;\nimport com.pulumi.aws.sfn.StateMachineArgs;\nimport com.pulumi.aws.sfn.inputs.StateMachineEncryptionConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // ...\n var sfnStateMachine = new StateMachine(\"sfnStateMachine\", StateMachineArgs.builder()\n .name(\"my-state-machine\")\n .roleArn(iamForSfn.arn())\n .definition(\"\"\"\n{\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {\n \\\"HelloWorld\\\": {\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"%s\\\",\n \\\"End\\\": true\n }\n }\n}\n\", lambda.arn()))\n .encryptionConfiguration(StateMachineEncryptionConfigurationArgs.builder()\n .kmsKeyId(kmsKeyForSfn.arn())\n .type(\"CUSTOMER_MANAGED_KMS_KEY\")\n .kmsDataKeyReusePeriodSeconds(900)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # ...\n sfnStateMachine:\n type: aws:sfn:StateMachine\n name: sfn_state_machine\n properties:\n name: my-state-machine\n roleArn: ${iamForSfn.arn}\n definition: |\n {\n \\\"Comment\\\": \\\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\\",\n \\\"StartAt\\\": \\\"HelloWorld\\\",\n \\\"States\\\": {\n \\\"HelloWorld\\\": {\n \\\"Type\\\": \\\"Task\\\",\n \\\"Resource\\\": \\\"${lambda.arn}\\\",\n \\\"End\\\": true\n }\n }\n }\n encryptionConfiguration:\n kmsKeyId: ${kmsKeyForSfn.arn}\n type: CUSTOMER_MANAGED_KMS_KEY\n kmsDataKeyReusePeriodSeconds: 900\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n- `arn` (String) ARN of the state machine.\n\nUsing `pulumi import`, import State Machines using the `arn`. For example:\n\nconsole\n\n% pulumi import aws_sfn_state_machine.foo arn:aws:states:eu-west-1:123456789098:stateMachine:bar\n\n", "properties": { "arn": { "type": "string", @@ -406753,7 +406753,7 @@ } }, "aws:sns/topic:Topic": { - "description": "Provides an SNS topic resource\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst userUpdates = new aws.sns.Topic(\"user_updates\", {name: \"user-updates-topic\"});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nuser_updates = aws.sns.Topic(\"user_updates\", name=\"user-updates-topic\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var userUpdates = new Aws.Sns.Topic(\"user_updates\", new()\n {\n Name = \"user-updates-topic\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sns.NewTopic(ctx, \"user_updates\", \u0026sns.TopicArgs{\n\t\t\tName: pulumi.String(\"user-updates-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sns.Topic;\nimport com.pulumi.aws.sns.TopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var userUpdates = new Topic(\"userUpdates\", TopicArgs.builder()\n .name(\"user-updates-topic\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n userUpdates:\n type: aws:sns:Topic\n name: user_updates\n properties:\n name: user-updates-topic\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Example with Delivery Policy\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst userUpdates = new aws.sns.Topic(\"user_updates\", {\n name: \"user-updates-topic\",\n deliveryPolicy: `{\n \"http\": {\n \"defaultHealthyRetryPolicy\": {\n \"minDelayTarget\": 20,\n \"maxDelayTarget\": 20,\n \"numRetries\": 3,\n \"numMaxDelayRetries\": 0,\n \"numNoDelayRetries\": 0,\n \"numMinDelayRetries\": 0,\n \"backoffFunction\": \"linear\"\n },\n \"disableSubscriptionOverrides\": false,\n \"defaultThrottlePolicy\": {\n \"maxReceivesPerSecond\": 1\n }\n }\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nuser_updates = aws.sns.Topic(\"user_updates\",\n name=\"user-updates-topic\",\n delivery_policy=\"\"\"{\n \"http\": {\n \"defaultHealthyRetryPolicy\": {\n \"minDelayTarget\": 20,\n \"maxDelayTarget\": 20,\n \"numRetries\": 3,\n \"numMaxDelayRetries\": 0,\n \"numNoDelayRetries\": 0,\n \"numMinDelayRetries\": 0,\n \"backoffFunction\": \"linear\"\n },\n \"disableSubscriptionOverrides\": false,\n \"defaultThrottlePolicy\": {\n \"maxReceivesPerSecond\": 1\n }\n }\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var userUpdates = new Aws.Sns.Topic(\"user_updates\", new()\n {\n Name = \"user-updates-topic\",\n DeliveryPolicy = @\"{\n \"\"http\"\": {\n \"\"defaultHealthyRetryPolicy\"\": {\n \"\"minDelayTarget\"\": 20,\n \"\"maxDelayTarget\"\": 20,\n \"\"numRetries\"\": 3,\n \"\"numMaxDelayRetries\"\": 0,\n \"\"numNoDelayRetries\"\": 0,\n \"\"numMinDelayRetries\"\": 0,\n \"\"backoffFunction\"\": \"\"linear\"\"\n },\n \"\"disableSubscriptionOverrides\"\": false,\n \"\"defaultThrottlePolicy\"\": {\n \"\"maxReceivesPerSecond\"\": 1\n }\n }\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sns.NewTopic(ctx, \"user_updates\", \u0026sns.TopicArgs{\n\t\t\tName: pulumi.String(\"user-updates-topic\"),\n\t\t\tDeliveryPolicy: pulumi.String(`{\n \"http\": {\n \"defaultHealthyRetryPolicy\": {\n \"minDelayTarget\": 20,\n \"maxDelayTarget\": 20,\n \"numRetries\": 3,\n \"numMaxDelayRetries\": 0,\n \"numNoDelayRetries\": 0,\n \"numMinDelayRetries\": 0,\n \"backoffFunction\": \"linear\"\n },\n \"disableSubscriptionOverrides\": false,\n \"defaultThrottlePolicy\": {\n \"maxReceivesPerSecond\": 1\n }\n }\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sns.Topic;\nimport com.pulumi.aws.sns.TopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var userUpdates = new Topic(\"userUpdates\", TopicArgs.builder()\n .name(\"user-updates-topic\")\n .deliveryPolicy(\"\"\"\n{\n \"http\": {\n \"defaultHealthyRetryPolicy\": {\n \"minDelayTarget\": 20,\n \"maxDelayTarget\": 20,\n \"numRetries\": 3,\n \"numMaxDelayRetries\": 0,\n \"numNoDelayRetries\": 0,\n \"numMinDelayRetries\": 0,\n \"backoffFunction\": \"linear\"\n },\n \"disableSubscriptionOverrides\": false,\n \"defaultThrottlePolicy\": {\n \"maxReceivesPerSecond\": 1\n }\n }\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n userUpdates:\n type: aws:sns:Topic\n name: user_updates\n properties:\n name: user-updates-topic\n deliveryPolicy: |\n {\n \"http\": {\n \"defaultHealthyRetryPolicy\": {\n \"minDelayTarget\": 20,\n \"maxDelayTarget\": 20,\n \"numRetries\": 3,\n \"numMaxDelayRetries\": 0,\n \"numNoDelayRetries\": 0,\n \"numMinDelayRetries\": 0,\n \"backoffFunction\": \"linear\"\n },\n \"disableSubscriptionOverrides\": false,\n \"defaultThrottlePolicy\": {\n \"maxReceivesPerSecond\": 1\n }\n }\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Example with Server-side encryption (SSE)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst userUpdates = new aws.sns.Topic(\"user_updates\", {\n name: \"user-updates-topic\",\n kmsMasterKeyId: \"alias/aws/sns\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nuser_updates = aws.sns.Topic(\"user_updates\",\n name=\"user-updates-topic\",\n kms_master_key_id=\"alias/aws/sns\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var userUpdates = new Aws.Sns.Topic(\"user_updates\", new()\n {\n Name = \"user-updates-topic\",\n KmsMasterKeyId = \"alias/aws/sns\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sns.NewTopic(ctx, \"user_updates\", \u0026sns.TopicArgs{\n\t\t\tName: pulumi.String(\"user-updates-topic\"),\n\t\t\tKmsMasterKeyId: pulumi.String(\"alias/aws/sns\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sns.Topic;\nimport com.pulumi.aws.sns.TopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var userUpdates = new Topic(\"userUpdates\", TopicArgs.builder()\n .name(\"user-updates-topic\")\n .kmsMasterKeyId(\"alias/aws/sns\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n userUpdates:\n type: aws:sns:Topic\n name: user_updates\n properties:\n name: user-updates-topic\n kmsMasterKeyId: alias/aws/sns\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Example with First-In-First-Out (FIFO)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst userUpdates = new aws.sns.Topic(\"user_updates\", {\n name: \"user-updates-topic.fifo\",\n fifoTopic: true,\n contentBasedDeduplication: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nuser_updates = aws.sns.Topic(\"user_updates\",\n name=\"user-updates-topic.fifo\",\n fifo_topic=True,\n content_based_deduplication=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var userUpdates = new Aws.Sns.Topic(\"user_updates\", new()\n {\n Name = \"user-updates-topic.fifo\",\n FifoTopic = true,\n ContentBasedDeduplication = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sns.NewTopic(ctx, \"user_updates\", \u0026sns.TopicArgs{\n\t\t\tName: pulumi.String(\"user-updates-topic.fifo\"),\n\t\t\tFifoTopic: pulumi.Bool(true),\n\t\t\tContentBasedDeduplication: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sns.Topic;\nimport com.pulumi.aws.sns.TopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var userUpdates = new Topic(\"userUpdates\", TopicArgs.builder()\n .name(\"user-updates-topic.fifo\")\n .fifoTopic(true)\n .contentBasedDeduplication(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n userUpdates:\n type: aws:sns:Topic\n name: user_updates\n properties:\n name: user-updates-topic.fifo\n fifoTopic: true\n contentBasedDeduplication: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Message Delivery Status Arguments\n\nThe `\u003cendpoint\u003e_success_feedback_role_arn` and `\u003cendpoint\u003e_failure_feedback_role_arn` arguments are used to give Amazon SNS write access to use CloudWatch Logs on your behalf. The `\u003cendpoint\u003e_success_feedback_sample_rate` argument is for specifying the sample rate percentage (0-100) of successfully delivered messages. After you configure the `\u003cendpoint\u003e_failure_feedback_role_arn` argument, then all failed message deliveries generate CloudWatch Logs.\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n- `arn` (String) Amazon Resource Name (ARN) of the SNS topic.\n\nUsing `pulumi import`, import SNS Topics using the topic `arn`. For example:\n\nconsole\n\n% pulumi import aws_sns_topic.user_updates arn:aws:sns:us-west-2:123456789012:my-topic\n\n", + "description": "Provides an SNS topic resource\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst userUpdates = new aws.sns.Topic(\"user_updates\", {name: \"user-updates-topic\"});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nuser_updates = aws.sns.Topic(\"user_updates\", name=\"user-updates-topic\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var userUpdates = new Aws.Sns.Topic(\"user_updates\", new()\n {\n Name = \"user-updates-topic\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sns.NewTopic(ctx, \"user_updates\", \u0026sns.TopicArgs{\n\t\t\tName: pulumi.String(\"user-updates-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sns.Topic;\nimport com.pulumi.aws.sns.TopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var userUpdates = new Topic(\"userUpdates\", TopicArgs.builder()\n .name(\"user-updates-topic\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n userUpdates:\n type: aws:sns:Topic\n name: user_updates\n properties:\n name: user-updates-topic\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Example with Delivery Policy\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst userUpdates = new aws.sns.Topic(\"user_updates\", {\n name: \"user-updates-topic\",\n deliveryPolicy: `{\n \\\\\"http\\\\\": {\n \\\\\"defaultHealthyRetryPolicy\\\\\": {\n \\\\\"minDelayTarget\\\\\": 20,\n \\\\\"maxDelayTarget\\\\\": 20,\n \\\\\"numRetries\\\\\": 3,\n \\\\\"numMaxDelayRetries\\\\\": 0,\n \\\\\"numNoDelayRetries\\\\\": 0,\n \\\\\"numMinDelayRetries\\\\\": 0,\n \\\\\"backoffFunction\\\\\": \\\\\"linear\\\\\"\n },\n \\\\\"disableSubscriptionOverrides\\\\\": false,\n \\\\\"defaultThrottlePolicy\\\\\": {\n \\\\\"maxReceivesPerSecond\\\\\": 1\n }\n }\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nuser_updates = aws.sns.Topic(\"user_updates\",\n name=\"user-updates-topic\",\n delivery_policy=\"\"\"{\n \\\"http\\\": {\n \\\"defaultHealthyRetryPolicy\\\": {\n \\\"minDelayTarget\\\": 20,\n \\\"maxDelayTarget\\\": 20,\n \\\"numRetries\\\": 3,\n \\\"numMaxDelayRetries\\\": 0,\n \\\"numNoDelayRetries\\\": 0,\n \\\"numMinDelayRetries\\\": 0,\n \\\"backoffFunction\\\": \\\"linear\\\"\n },\n \\\"disableSubscriptionOverrides\\\": false,\n \\\"defaultThrottlePolicy\\\": {\n \\\"maxReceivesPerSecond\\\": 1\n }\n }\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var userUpdates = new Aws.Sns.Topic(\"user_updates\", new()\n {\n Name = \"user-updates-topic\",\n DeliveryPolicy = @\"{\n \\\"\"http\\\"\": {\n \\\"\"defaultHealthyRetryPolicy\\\"\": {\n \\\"\"minDelayTarget\\\"\": 20,\n \\\"\"maxDelayTarget\\\"\": 20,\n \\\"\"numRetries\\\"\": 3,\n \\\"\"numMaxDelayRetries\\\"\": 0,\n \\\"\"numNoDelayRetries\\\"\": 0,\n \\\"\"numMinDelayRetries\\\"\": 0,\n \\\"\"backoffFunction\\\"\": \\\"\"linear\\\"\"\n },\n \\\"\"disableSubscriptionOverrides\\\"\": false,\n \\\"\"defaultThrottlePolicy\\\"\": {\n \\\"\"maxReceivesPerSecond\\\"\": 1\n }\n }\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sns.NewTopic(ctx, \"user_updates\", \u0026sns.TopicArgs{\n\t\t\tName: pulumi.String(\"user-updates-topic\"),\n\t\t\tDeliveryPolicy: pulumi.String(`{\n \\\"http\\\": {\n \\\"defaultHealthyRetryPolicy\\\": {\n \\\"minDelayTarget\\\": 20,\n \\\"maxDelayTarget\\\": 20,\n \\\"numRetries\\\": 3,\n \\\"numMaxDelayRetries\\\": 0,\n \\\"numNoDelayRetries\\\": 0,\n \\\"numMinDelayRetries\\\": 0,\n \\\"backoffFunction\\\": \\\"linear\\\"\n },\n \\\"disableSubscriptionOverrides\\\": false,\n \\\"defaultThrottlePolicy\\\": {\n \\\"maxReceivesPerSecond\\\": 1\n }\n }\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sns.Topic;\nimport com.pulumi.aws.sns.TopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var userUpdates = new Topic(\"userUpdates\", TopicArgs.builder()\n .name(\"user-updates-topic\")\n .deliveryPolicy(\"\"\"\n{\n \\\"http\\\": {\n \\\"defaultHealthyRetryPolicy\\\": {\n \\\"minDelayTarget\\\": 20,\n \\\"maxDelayTarget\\\": 20,\n \\\"numRetries\\\": 3,\n \\\"numMaxDelayRetries\\\": 0,\n \\\"numNoDelayRetries\\\": 0,\n \\\"numMinDelayRetries\\\": 0,\n \\\"backoffFunction\\\": \\\"linear\\\"\n },\n \\\"disableSubscriptionOverrides\\\": false,\n \\\"defaultThrottlePolicy\\\": {\n \\\"maxReceivesPerSecond\\\": 1\n }\n }\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n userUpdates:\n type: aws:sns:Topic\n name: user_updates\n properties:\n name: user-updates-topic\n deliveryPolicy: |\n {\n \\\"http\\\": {\n \\\"defaultHealthyRetryPolicy\\\": {\n \\\"minDelayTarget\\\": 20,\n \\\"maxDelayTarget\\\": 20,\n \\\"numRetries\\\": 3,\n \\\"numMaxDelayRetries\\\": 0,\n \\\"numNoDelayRetries\\\": 0,\n \\\"numMinDelayRetries\\\": 0,\n \\\"backoffFunction\\\": \\\"linear\\\"\n },\n \\\"disableSubscriptionOverrides\\\": false,\n \\\"defaultThrottlePolicy\\\": {\n \\\"maxReceivesPerSecond\\\": 1\n }\n }\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Example with Server-side encryption (SSE)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst userUpdates = new aws.sns.Topic(\"user_updates\", {\n name: \"user-updates-topic\",\n kmsMasterKeyId: \"alias/aws/sns\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nuser_updates = aws.sns.Topic(\"user_updates\",\n name=\"user-updates-topic\",\n kms_master_key_id=\"alias/aws/sns\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var userUpdates = new Aws.Sns.Topic(\"user_updates\", new()\n {\n Name = \"user-updates-topic\",\n KmsMasterKeyId = \"alias/aws/sns\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sns.NewTopic(ctx, \"user_updates\", \u0026sns.TopicArgs{\n\t\t\tName: pulumi.String(\"user-updates-topic\"),\n\t\t\tKmsMasterKeyId: pulumi.String(\"alias/aws/sns\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sns.Topic;\nimport com.pulumi.aws.sns.TopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var userUpdates = new Topic(\"userUpdates\", TopicArgs.builder()\n .name(\"user-updates-topic\")\n .kmsMasterKeyId(\"alias/aws/sns\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n userUpdates:\n type: aws:sns:Topic\n name: user_updates\n properties:\n name: user-updates-topic\n kmsMasterKeyId: alias/aws/sns\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Example with First-In-First-Out (FIFO)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst userUpdates = new aws.sns.Topic(\"user_updates\", {\n name: \"user-updates-topic.fifo\",\n fifoTopic: true,\n contentBasedDeduplication: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nuser_updates = aws.sns.Topic(\"user_updates\",\n name=\"user-updates-topic.fifo\",\n fifo_topic=True,\n content_based_deduplication=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var userUpdates = new Aws.Sns.Topic(\"user_updates\", new()\n {\n Name = \"user-updates-topic.fifo\",\n FifoTopic = true,\n ContentBasedDeduplication = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sns.NewTopic(ctx, \"user_updates\", \u0026sns.TopicArgs{\n\t\t\tName: pulumi.String(\"user-updates-topic.fifo\"),\n\t\t\tFifoTopic: pulumi.Bool(true),\n\t\t\tContentBasedDeduplication: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sns.Topic;\nimport com.pulumi.aws.sns.TopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var userUpdates = new Topic(\"userUpdates\", TopicArgs.builder()\n .name(\"user-updates-topic.fifo\")\n .fifoTopic(true)\n .contentBasedDeduplication(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n userUpdates:\n type: aws:sns:Topic\n name: user_updates\n properties:\n name: user-updates-topic.fifo\n fifoTopic: true\n contentBasedDeduplication: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Message Delivery Status Arguments\n\nThe `\u003cendpoint\u003e_success_feedback_role_arn` and `\u003cendpoint\u003e_failure_feedback_role_arn` arguments are used to give Amazon SNS write access to use CloudWatch Logs on your behalf. The `\u003cendpoint\u003e_success_feedback_sample_rate` argument is for specifying the sample rate percentage (0-100) of successfully delivered messages. After you configure the `\u003cendpoint\u003e_failure_feedback_role_arn` argument, then all failed message deliveries generate CloudWatch Logs.\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n- `arn` (String) Amazon Resource Name (ARN) of the SNS topic.\n\nUsing `pulumi import`, import SNS Topics using the topic `arn`. For example:\n\nconsole\n\n% pulumi import aws_sns_topic.user_updates arn:aws:sns:us-west-2:123456789012:my-topic\n\n", "properties": { "applicationFailureFeedbackRoleArn": { "type": "string", @@ -407267,7 +407267,7 @@ } }, "aws:sns/topicSubscription:TopicSubscription": { - "description": "Provides a resource for subscribing to SNS topics. Requires that an SNS topic exist for the subscription to attach to. This resource allows you to automatically place messages sent to SNS topics in SQS queues, send them as HTTP(S) POST requests to a given endpoint, send SMS messages, or notify devices / applications. The most likely use case for provider users will probably be SQS queues.\n\n\u003e **NOTE:** If the SNS topic and SQS queue are in different AWS regions, the \u003cspan pulumi-lang-nodejs=\"`aws.sns.TopicSubscription`\" pulumi-lang-dotnet=\"`aws.sns.TopicSubscription`\" pulumi-lang-go=\"`sns.TopicSubscription`\" pulumi-lang-python=\"`sns.TopicSubscription`\" pulumi-lang-yaml=\"`aws.sns.TopicSubscription`\" pulumi-lang-java=\"`aws.sns.TopicSubscription`\"\u003e`aws.sns.TopicSubscription`\u003c/span\u003e must use an AWS provider that is in the same region as the SNS topic. If the \u003cspan pulumi-lang-nodejs=\"`aws.sns.TopicSubscription`\" pulumi-lang-dotnet=\"`aws.sns.TopicSubscription`\" pulumi-lang-go=\"`sns.TopicSubscription`\" pulumi-lang-python=\"`sns.TopicSubscription`\" pulumi-lang-yaml=\"`aws.sns.TopicSubscription`\" pulumi-lang-java=\"`aws.sns.TopicSubscription`\"\u003e`aws.sns.TopicSubscription`\u003c/span\u003e uses a provider with a different region than the SNS topic, this provider will fail to create the subscription.\n\n\u003e **NOTE:** Setup of cross-account subscriptions from SNS topics to SQS queues requires the provider to have access to BOTH accounts.\n\n\u003e **NOTE:** If an SNS topic and SQS queue are in different AWS accounts but the same region, the \u003cspan pulumi-lang-nodejs=\"`aws.sns.TopicSubscription`\" pulumi-lang-dotnet=\"`aws.sns.TopicSubscription`\" pulumi-lang-go=\"`sns.TopicSubscription`\" pulumi-lang-python=\"`sns.TopicSubscription`\" pulumi-lang-yaml=\"`aws.sns.TopicSubscription`\" pulumi-lang-java=\"`aws.sns.TopicSubscription`\"\u003e`aws.sns.TopicSubscription`\u003c/span\u003e must use the AWS provider for the account with the SQS queue. If \u003cspan pulumi-lang-nodejs=\"`aws.sns.TopicSubscription`\" pulumi-lang-dotnet=\"`aws.sns.TopicSubscription`\" pulumi-lang-go=\"`sns.TopicSubscription`\" pulumi-lang-python=\"`sns.TopicSubscription`\" pulumi-lang-yaml=\"`aws.sns.TopicSubscription`\" pulumi-lang-java=\"`aws.sns.TopicSubscription`\"\u003e`aws.sns.TopicSubscription`\u003c/span\u003e uses a Provider with a different account than the SQS queue, this provider creates the subscription but does not keep state and tries to re-create the subscription at every \u003cspan pulumi-lang-nodejs=\"`apply`\" pulumi-lang-dotnet=\"`Apply`\" pulumi-lang-go=\"`apply`\" pulumi-lang-python=\"`apply`\" pulumi-lang-yaml=\"`apply`\" pulumi-lang-java=\"`apply`\"\u003e`apply`\u003c/span\u003e.\n\n\u003e **NOTE:** If an SNS topic and SQS queue are in different AWS accounts and different AWS regions, the subscription needs to be initiated from the account with the SQS queue but in the region of the SNS topic.\n\n\u003e **NOTE:** You cannot unsubscribe to a subscription that is pending confirmation. If you use \u003cspan pulumi-lang-nodejs=\"`email`\" pulumi-lang-dotnet=\"`Email`\" pulumi-lang-go=\"`email`\" pulumi-lang-python=\"`email`\" pulumi-lang-yaml=\"`email`\" pulumi-lang-java=\"`email`\"\u003e`email`\u003c/span\u003e, `email-json`, or \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e/\u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e (without auto-confirmation enabled), until the subscription is confirmed (e.g., outside of this provider), AWS does not allow this provider to delete / unsubscribe the subscription. If you \u003cspan pulumi-lang-nodejs=\"`destroy`\" pulumi-lang-dotnet=\"`Destroy`\" pulumi-lang-go=\"`destroy`\" pulumi-lang-python=\"`destroy`\" pulumi-lang-yaml=\"`destroy`\" pulumi-lang-java=\"`destroy`\"\u003e`destroy`\u003c/span\u003e an unconfirmed subscription, this provider will remove the subscription from its state but the subscription will still exist in AWS. However, if you delete an SNS topic, SNS [deletes all the subscriptions](https://docs.aws.amazon.com/sns/latest/dg/sns-delete-subscription-topic.html) associated with the topic. Also, you can import a subscription after confirmation and then have the capability to delete it.\n\n## Example Usage\n\n### Basic usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst userUpdates = new aws.sns.Topic(\"user_updates\", {name: \"user-updates-topic\"});\nconst sqsQueuePolicy = aws.iam.getPolicyDocumentOutput({\n policyId: \"arn:aws:sqs:us-west-2:123456789012:user_updates_queue/SQSDefaultPolicy\",\n statements: [{\n sid: \"user_updates_sqs_target\",\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"sns.amazonaws.com\"],\n }],\n actions: [\"SQS:SendMessage\"],\n resources: [\"arn:aws:sqs:us-west-2:123456789012:user-updates-queue\"],\n conditions: [{\n test: \"ArnEquals\",\n variable: \"aws:SourceArn\",\n values: [userUpdates.arn],\n }],\n }],\n});\nconst userUpdatesQueue = new aws.sqs.Queue(\"user_updates_queue\", {\n name: \"user-updates-queue\",\n policy: sqsQueuePolicy.apply(sqsQueuePolicy =\u003e sqsQueuePolicy.json),\n});\nconst userUpdatesSqsTarget = new aws.sns.TopicSubscription(\"user_updates_sqs_target\", {\n topic: userUpdates.arn,\n protocol: \"sqs\",\n endpoint: userUpdatesQueue.arn,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nuser_updates = aws.sns.Topic(\"user_updates\", name=\"user-updates-topic\")\nsqs_queue_policy = aws.iam.get_policy_document_output(policy_id=\"arn:aws:sqs:us-west-2:123456789012:user_updates_queue/SQSDefaultPolicy\",\n statements=[{\n \"sid\": \"user_updates_sqs_target\",\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"sns.amazonaws.com\"],\n }],\n \"actions\": [\"SQS:SendMessage\"],\n \"resources\": [\"arn:aws:sqs:us-west-2:123456789012:user-updates-queue\"],\n \"conditions\": [{\n \"test\": \"ArnEquals\",\n \"variable\": \"aws:SourceArn\",\n \"values\": [user_updates.arn],\n }],\n }])\nuser_updates_queue = aws.sqs.Queue(\"user_updates_queue\",\n name=\"user-updates-queue\",\n policy=sqs_queue_policy.json)\nuser_updates_sqs_target = aws.sns.TopicSubscription(\"user_updates_sqs_target\",\n topic=user_updates.arn,\n protocol=\"sqs\",\n endpoint=user_updates_queue.arn)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var userUpdates = new Aws.Sns.Topic(\"user_updates\", new()\n {\n Name = \"user-updates-topic\",\n });\n\n var sqsQueuePolicy = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n PolicyId = \"arn:aws:sqs:us-west-2:123456789012:user_updates_queue/SQSDefaultPolicy\",\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Sid = \"user_updates_sqs_target\",\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"sns.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"SQS:SendMessage\",\n },\n Resources = new[]\n {\n \"arn:aws:sqs:us-west-2:123456789012:user-updates-queue\",\n },\n Conditions = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementConditionInputArgs\n {\n Test = \"ArnEquals\",\n Variable = \"aws:SourceArn\",\n Values = new[]\n {\n userUpdates.Arn,\n },\n },\n },\n },\n },\n });\n\n var userUpdatesQueue = new Aws.Sqs.Queue(\"user_updates_queue\", new()\n {\n Name = \"user-updates-queue\",\n Policy = sqsQueuePolicy.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var userUpdatesSqsTarget = new Aws.Sns.TopicSubscription(\"user_updates_sqs_target\", new()\n {\n Topic = userUpdates.Arn,\n Protocol = \"sqs\",\n Endpoint = userUpdatesQueue.Arn,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sqs\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tuserUpdates, err := sns.NewTopic(ctx, \"user_updates\", \u0026sns.TopicArgs{\n\t\t\tName: pulumi.String(\"user-updates-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsqsQueuePolicy := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{\n\t\t\tPolicyId: pulumi.String(\"arn:aws:sqs:us-west-2:123456789012:user_updates_queue/SQSDefaultPolicy\"),\n\t\t\tStatements: iam.GetPolicyDocumentStatementArray{\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tSid: pulumi.String(\"user_updates_sqs_target\"),\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tPrincipals: iam.GetPolicyDocumentStatementPrincipalArray{\n\t\t\t\t\t\t\u0026iam.GetPolicyDocumentStatementPrincipalArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Service\"),\n\t\t\t\t\t\t\tIdentifiers: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"sns.amazonaws.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"SQS:SendMessage\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"arn:aws:sqs:us-west-2:123456789012:user-updates-queue\"),\n\t\t\t\t\t},\n\t\t\t\t\tConditions: iam.GetPolicyDocumentStatementConditionArray{\n\t\t\t\t\t\t\u0026iam.GetPolicyDocumentStatementConditionArgs{\n\t\t\t\t\t\t\tTest: pulumi.String(\"ArnEquals\"),\n\t\t\t\t\t\t\tVariable: pulumi.String(\"aws:SourceArn\"),\n\t\t\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\t\t\tuserUpdates.Arn,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tuserUpdatesQueue, err := sqs.NewQueue(ctx, \"user_updates_queue\", \u0026sqs.QueueArgs{\n\t\t\tName: pulumi.String(\"user-updates-queue\"),\n\t\t\tPolicy: pulumi.String(sqsQueuePolicy.ApplyT(func(sqsQueuePolicy iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026sqsQueuePolicy.Json, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sns.NewTopicSubscription(ctx, \"user_updates_sqs_target\", \u0026sns.TopicSubscriptionArgs{\n\t\t\tTopic: userUpdates.Arn,\n\t\t\tProtocol: pulumi.String(\"sqs\"),\n\t\t\tEndpoint: userUpdatesQueue.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sns.Topic;\nimport com.pulumi.aws.sns.TopicArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.sqs.Queue;\nimport com.pulumi.aws.sqs.QueueArgs;\nimport com.pulumi.aws.sns.TopicSubscription;\nimport com.pulumi.aws.sns.TopicSubscriptionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var userUpdates = new Topic(\"userUpdates\", TopicArgs.builder()\n .name(\"user-updates-topic\")\n .build());\n\n final var sqsQueuePolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .policyId(\"arn:aws:sqs:us-west-2:123456789012:user_updates_queue/SQSDefaultPolicy\")\n .statements(GetPolicyDocumentStatementArgs.builder()\n .sid(\"user_updates_sqs_target\")\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"sns.amazonaws.com\")\n .build())\n .actions(\"SQS:SendMessage\")\n .resources(\"arn:aws:sqs:us-west-2:123456789012:user-updates-queue\")\n .conditions(GetPolicyDocumentStatementConditionArgs.builder()\n .test(\"ArnEquals\")\n .variable(\"aws:SourceArn\")\n .values(userUpdates.arn())\n .build())\n .build())\n .build());\n\n var userUpdatesQueue = new Queue(\"userUpdatesQueue\", QueueArgs.builder()\n .name(\"user-updates-queue\")\n .policy(sqsQueuePolicy.applyValue(_sqsQueuePolicy -\u003e _sqsQueuePolicy.json()))\n .build());\n\n var userUpdatesSqsTarget = new TopicSubscription(\"userUpdatesSqsTarget\", TopicSubscriptionArgs.builder()\n .topic(userUpdates.arn())\n .protocol(\"sqs\")\n .endpoint(userUpdatesQueue.arn())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n userUpdates:\n type: aws:sns:Topic\n name: user_updates\n properties:\n name: user-updates-topic\n userUpdatesQueue:\n type: aws:sqs:Queue\n name: user_updates_queue\n properties:\n name: user-updates-queue\n policy: ${sqsQueuePolicy.json}\n userUpdatesSqsTarget:\n type: aws:sns:TopicSubscription\n name: user_updates_sqs_target\n properties:\n topic: ${userUpdates.arn}\n protocol: sqs\n endpoint: ${userUpdatesQueue.arn}\nvariables:\n sqsQueuePolicy:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n policyId: arn:aws:sqs:us-west-2:123456789012:user_updates_queue/SQSDefaultPolicy\n statements:\n - sid: user_updates_sqs_target\n effect: Allow\n principals:\n - type: Service\n identifiers:\n - sns.amazonaws.com\n actions:\n - SQS:SendMessage\n resources:\n - arn:aws:sqs:us-west-2:123456789012:user-updates-queue\n conditions:\n - test: ArnEquals\n variable: aws:SourceArn\n values:\n - ${userUpdates.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Cross-account Subscription\n\nYou can subscribe SNS topics to SQS queues in different Amazon accounts and regions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst config = new pulumi.Config();\nconst sns = config.getObject\u003cany\u003e(\"sns\") || {\n \"account-id\": \"111111111111\",\n displayName: \"example\",\n name: \"example-sns-topic\",\n region: \"us-west-1\",\n \"role-name\": \"service/service\",\n};\nconst sqs = config.getObject\u003cany\u003e(\"sqs\") || {\n \"account-id\": \"222222222222\",\n name: \"example-sqs-queue\",\n region: \"us-east-1\",\n \"role-name\": \"service/service\",\n};\nconst snsTopicPolicy = aws.iam.getPolicyDocument({\n policyId: \"__default_policy_ID\",\n statements: [\n {\n actions: [\n \"SNS:Subscribe\",\n \"SNS:SetTopicAttributes\",\n \"SNS:RemovePermission\",\n \"SNS:Publish\",\n \"SNS:ListSubscriptionsByTopic\",\n \"SNS:GetTopicAttributes\",\n \"SNS:DeleteTopic\",\n \"SNS:AddPermission\",\n ],\n conditions: [{\n test: \"StringEquals\",\n variable: \"AWS:SourceOwner\",\n values: [sns[\"account-id\"]],\n }],\n effect: \"Allow\",\n principals: [{\n type: \"AWS\",\n identifiers: [\"*\"],\n }],\n resources: [`arn:aws:sns:${sns.region}:${sns[\"account-id\"]}:${sns.name}`],\n sid: \"__default_statement_ID\",\n },\n {\n actions: [\n \"SNS:Subscribe\",\n \"SNS:Receive\",\n ],\n conditions: [{\n test: \"StringLike\",\n variable: \"SNS:Endpoint\",\n values: [`arn:aws:sqs:${sqs.region}:${sqs[\"account-id\"]}:${sqs.name}`],\n }],\n effect: \"Allow\",\n principals: [{\n type: \"AWS\",\n identifiers: [\"*\"],\n }],\n resources: [`arn:aws:sns:${sns.region}:${sns[\"account-id\"]}:${sns.name}`],\n sid: \"__console_sub_0\",\n },\n ],\n});\nconst sqsQueuePolicy = aws.iam.getPolicyDocument({\n policyId: `arn:aws:sqs:${sqs.region}:${sqs[\"account-id\"]}:${sqs.name}/SQSDefaultPolicy`,\n statements: [{\n sid: \"example-sns-topic\",\n effect: \"Allow\",\n principals: [{\n type: \"AWS\",\n identifiers: [\"*\"],\n }],\n actions: [\"SQS:SendMessage\"],\n resources: [`arn:aws:sqs:${sqs.region}:${sqs[\"account-id\"]}:${sqs.name}`],\n conditions: [{\n test: \"ArnEquals\",\n variable: \"aws:SourceArn\",\n values: [`arn:aws:sns:${sns.region}:${sns[\"account-id\"]}:${sns.name}`],\n }],\n }],\n});\nconst snsTopic = new aws.sns.Topic(\"sns_topic\", {\n name: sns.name,\n displayName: sns.display_name,\n policy: snsTopicPolicy.then(snsTopicPolicy =\u003e snsTopicPolicy.json),\n});\nconst sqsQueue = new aws.sqs.Queue(\"sqs_queue\", {\n name: sqs.name,\n policy: sqsQueuePolicy.then(sqsQueuePolicy =\u003e sqsQueuePolicy.json),\n});\nconst snsTopicTopicSubscription = new aws.sns.TopicSubscription(\"sns_topic\", {\n topic: snsTopic.arn,\n protocol: \"sqs\",\n endpoint: sqsQueue.arn,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nconfig = pulumi.Config()\nsns = config.get_object(\"sns\")\nif sns is None:\n sns = {\n \"account-id\": \"111111111111\",\n \"displayName\": \"example\",\n \"name\": \"example-sns-topic\",\n \"region\": \"us-west-1\",\n \"role-name\": \"service/service\",\n }\nsqs = config.get_object(\"sqs\")\nif sqs is None:\n sqs = {\n \"account-id\": \"222222222222\",\n \"name\": \"example-sqs-queue\",\n \"region\": \"us-east-1\",\n \"role-name\": \"service/service\",\n }\nsns_topic_policy = aws.iam.get_policy_document(policy_id=\"__default_policy_ID\",\n statements=[\n {\n \"actions\": [\n \"SNS:Subscribe\",\n \"SNS:SetTopicAttributes\",\n \"SNS:RemovePermission\",\n \"SNS:Publish\",\n \"SNS:ListSubscriptionsByTopic\",\n \"SNS:GetTopicAttributes\",\n \"SNS:DeleteTopic\",\n \"SNS:AddPermission\",\n ],\n \"conditions\": [{\n \"test\": \"StringEquals\",\n \"variable\": \"AWS:SourceOwner\",\n \"values\": [sns[\"account-id\"]],\n }],\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"AWS\",\n \"identifiers\": [\"*\"],\n }],\n \"resources\": [f\"arn:aws:sns:{sns['region']}:{sns['account-id']}:{sns['name']}\"],\n \"sid\": \"__default_statement_ID\",\n },\n {\n \"actions\": [\n \"SNS:Subscribe\",\n \"SNS:Receive\",\n ],\n \"conditions\": [{\n \"test\": \"StringLike\",\n \"variable\": \"SNS:Endpoint\",\n \"values\": [f\"arn:aws:sqs:{sqs['region']}:{sqs['account-id']}:{sqs['name']}\"],\n }],\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"AWS\",\n \"identifiers\": [\"*\"],\n }],\n \"resources\": [f\"arn:aws:sns:{sns['region']}:{sns['account-id']}:{sns['name']}\"],\n \"sid\": \"__console_sub_0\",\n },\n ])\nsqs_queue_policy = aws.iam.get_policy_document(policy_id=f\"arn:aws:sqs:{sqs['region']}:{sqs['account-id']}:{sqs['name']}/SQSDefaultPolicy\",\n statements=[{\n \"sid\": \"example-sns-topic\",\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"AWS\",\n \"identifiers\": [\"*\"],\n }],\n \"actions\": [\"SQS:SendMessage\"],\n \"resources\": [f\"arn:aws:sqs:{sqs['region']}:{sqs['account-id']}:{sqs['name']}\"],\n \"conditions\": [{\n \"test\": \"ArnEquals\",\n \"variable\": \"aws:SourceArn\",\n \"values\": [f\"arn:aws:sns:{sns['region']}:{sns['account-id']}:{sns['name']}\"],\n }],\n }])\nsns_topic = aws.sns.Topic(\"sns_topic\",\n name=sns[\"name\"],\n display_name=sns[\"display_name\"],\n policy=sns_topic_policy.json)\nsqs_queue = aws.sqs.Queue(\"sqs_queue\",\n name=sqs[\"name\"],\n policy=sqs_queue_policy.json)\nsns_topic_topic_subscription = aws.sns.TopicSubscription(\"sns_topic\",\n topic=sns_topic.arn,\n protocol=\"sqs\",\n endpoint=sqs_queue.arn)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var sns = config.GetObject\u003cdynamic\u003e(\"sns\") ?? \n {\n { \"account-id\", \"111111111111\" },\n { \"displayName\", \"example\" },\n { \"name\", \"example-sns-topic\" },\n { \"region\", \"us-west-1\" },\n { \"role-name\", \"service/service\" },\n };\n var sqs = config.GetObject\u003cdynamic\u003e(\"sqs\") ?? \n {\n { \"account-id\", \"222222222222\" },\n { \"name\", \"example-sqs-queue\" },\n { \"region\", \"us-east-1\" },\n { \"role-name\", \"service/service\" },\n };\n var snsTopicPolicy = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n PolicyId = \"__default_policy_ID\",\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Actions = new[]\n {\n \"SNS:Subscribe\",\n \"SNS:SetTopicAttributes\",\n \"SNS:RemovePermission\",\n \"SNS:Publish\",\n \"SNS:ListSubscriptionsByTopic\",\n \"SNS:GetTopicAttributes\",\n \"SNS:DeleteTopic\",\n \"SNS:AddPermission\",\n },\n Conditions = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementConditionInputArgs\n {\n Test = \"StringEquals\",\n Variable = \"AWS:SourceOwner\",\n Values = new[]\n {\n sns.Account_id,\n },\n },\n },\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"AWS\",\n Identifiers = new[]\n {\n \"*\",\n },\n },\n },\n Resources = new[]\n {\n $\"arn:aws:sns:{sns.Region}:{sns.Account_id}:{sns.Name}\",\n },\n Sid = \"__default_statement_ID\",\n },\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Actions = new[]\n {\n \"SNS:Subscribe\",\n \"SNS:Receive\",\n },\n Conditions = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementConditionInputArgs\n {\n Test = \"StringLike\",\n Variable = \"SNS:Endpoint\",\n Values = new[]\n {\n $\"arn:aws:sqs:{sqs.Region}:{sqs.Account_id}:{sqs.Name}\",\n },\n },\n },\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"AWS\",\n Identifiers = new[]\n {\n \"*\",\n },\n },\n },\n Resources = new[]\n {\n $\"arn:aws:sns:{sns.Region}:{sns.Account_id}:{sns.Name}\",\n },\n Sid = \"__console_sub_0\",\n },\n },\n });\n\n var sqsQueuePolicy = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n PolicyId = $\"arn:aws:sqs:{sqs.Region}:{sqs.Account_id}:{sqs.Name}/SQSDefaultPolicy\",\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Sid = \"example-sns-topic\",\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"AWS\",\n Identifiers = new[]\n {\n \"*\",\n },\n },\n },\n Actions = new[]\n {\n \"SQS:SendMessage\",\n },\n Resources = new[]\n {\n $\"arn:aws:sqs:{sqs.Region}:{sqs.Account_id}:{sqs.Name}\",\n },\n Conditions = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementConditionInputArgs\n {\n Test = \"ArnEquals\",\n Variable = \"aws:SourceArn\",\n Values = new[]\n {\n $\"arn:aws:sns:{sns.Region}:{sns.Account_id}:{sns.Name}\",\n },\n },\n },\n },\n },\n });\n\n var snsTopic = new Aws.Sns.Topic(\"sns_topic\", new()\n {\n Name = sns.Name,\n DisplayName = sns.Display_name,\n Policy = snsTopicPolicy.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var sqsQueue = new Aws.Sqs.Queue(\"sqs_queue\", new()\n {\n Name = sqs.Name,\n Policy = sqsQueuePolicy.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var snsTopicTopicSubscription = new Aws.Sns.TopicSubscription(\"sns_topic\", new()\n {\n Topic = snsTopic.Arn,\n Protocol = \"sqs\",\n Endpoint = sqsQueue.Arn,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sqs\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\ncfg := config.New(ctx, \"\")\nsns := map[string]interface{}{\n\"account-id\": \"111111111111\",\n\"displayName\": \"example\",\n\"name\": \"example-sns-topic\",\n\"region\": \"us-west-1\",\n\"role-name\": \"service/service\",\n};\nif param := cfg.GetObject(\"sns\"); param != nil {\nsns = param\n}\nsqs := map[string]interface{}{\n\"account-id\": \"222222222222\",\n\"name\": \"example-sqs-queue\",\n\"region\": \"us-east-1\",\n\"role-name\": \"service/service\",\n};\nif param := cfg.GetObject(\"sqs\"); param != nil {\nsqs = param\n}\nsnsTopicPolicy, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\nPolicyId: pulumi.StringRef(\"__default_policy_ID\"),\nStatements: []iam.GetPolicyDocumentStatement{\n{\nActions: []string{\n\"SNS:Subscribe\",\n\"SNS:SetTopicAttributes\",\n\"SNS:RemovePermission\",\n\"SNS:Publish\",\n\"SNS:ListSubscriptionsByTopic\",\n\"SNS:GetTopicAttributes\",\n\"SNS:DeleteTopic\",\n\"SNS:AddPermission\",\n},\nConditions: []iam.GetPolicyDocumentStatementCondition{\n{\nTest: \"StringEquals\",\nVariable: \"AWS:SourceOwner\",\nValues: interface{}{\nsns.AccountId,\n},\n},\n},\nEffect: pulumi.StringRef(\"Allow\"),\nPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n{\nType: \"AWS\",\nIdentifiers: []string{\n\"*\",\n},\n},\n},\nResources: []string{\nfmt.Sprintf(\"arn:aws:sns:%v:%v:%v\", sns.Region, sns.AccountId, sns.Name),\n},\nSid: pulumi.StringRef(\"__default_statement_ID\"),\n},\n{\nActions: []string{\n\"SNS:Subscribe\",\n\"SNS:Receive\",\n},\nConditions: []iam.GetPolicyDocumentStatementCondition{\n{\nTest: \"StringLike\",\nVariable: \"SNS:Endpoint\",\nValues: []string{\nfmt.Sprintf(\"arn:aws:sqs:%v:%v:%v\", sqs.Region, sqs.AccountId, sqs.Name),\n},\n},\n},\nEffect: pulumi.StringRef(\"Allow\"),\nPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n{\nType: \"AWS\",\nIdentifiers: []string{\n\"*\",\n},\n},\n},\nResources: []string{\nfmt.Sprintf(\"arn:aws:sns:%v:%v:%v\", sns.Region, sns.AccountId, sns.Name),\n},\nSid: pulumi.StringRef(\"__console_sub_0\"),\n},\n},\n}, nil);\nif err != nil {\nreturn err\n}\nsqsQueuePolicy, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\nPolicyId: pulumi.StringRef(fmt.Sprintf(\"arn:aws:sqs:%v:%v:%v/SQSDefaultPolicy\", sqs.Region, sqs.AccountId, sqs.Name)),\nStatements: []iam.GetPolicyDocumentStatement{\n{\nSid: pulumi.StringRef(\"example-sns-topic\"),\nEffect: pulumi.StringRef(\"Allow\"),\nPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n{\nType: \"AWS\",\nIdentifiers: []string{\n\"*\",\n},\n},\n},\nActions: []string{\n\"SQS:SendMessage\",\n},\nResources: []string{\nfmt.Sprintf(\"arn:aws:sqs:%v:%v:%v\", sqs.Region, sqs.AccountId, sqs.Name),\n},\nConditions: []iam.GetPolicyDocumentStatementCondition{\n{\nTest: \"ArnEquals\",\nVariable: \"aws:SourceArn\",\nValues: []string{\nfmt.Sprintf(\"arn:aws:sns:%v:%v:%v\", sns.Region, sns.AccountId, sns.Name),\n},\n},\n},\n},\n},\n}, nil);\nif err != nil {\nreturn err\n}\nsnsTopic, err := sns.NewTopic(ctx, \"sns_topic\", \u0026sns.TopicArgs{\nName: pulumi.Any(sns.Name),\nDisplayName: pulumi.Any(sns.Display_name),\nPolicy: pulumi.String(snsTopicPolicy.Json),\n})\nif err != nil {\nreturn err\n}\nsqsQueue, err := sqs.NewQueue(ctx, \"sqs_queue\", \u0026sqs.QueueArgs{\nName: pulumi.Any(sqs.Name),\nPolicy: pulumi.String(sqsQueuePolicy.Json),\n})\nif err != nil {\nreturn err\n}\n_, err = sns.NewTopicSubscription(ctx, \"sns_topic\", \u0026sns.TopicSubscriptionArgs{\nTopic: snsTopic.Arn,\nProtocol: pulumi.String(\"sqs\"),\nEndpoint: sqsQueue.Arn,\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.sns.Topic;\nimport com.pulumi.aws.sns.TopicArgs;\nimport com.pulumi.aws.sqs.Queue;\nimport com.pulumi.aws.sqs.QueueArgs;\nimport com.pulumi.aws.sns.TopicSubscription;\nimport com.pulumi.aws.sns.TopicSubscriptionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var sns = config.get(\"sns\").orElse(Map.ofEntries(\n Map.entry(\"account-id\", \"111111111111\"),\n Map.entry(\"displayName\", \"example\"),\n Map.entry(\"name\", \"example-sns-topic\"),\n Map.entry(\"region\", \"us-west-1\"),\n Map.entry(\"role-name\", \"service/service\")\n ));\n final var sqs = config.get(\"sqs\").orElse(Map.ofEntries(\n Map.entry(\"account-id\", \"222222222222\"),\n Map.entry(\"name\", \"example-sqs-queue\"),\n Map.entry(\"region\", \"us-east-1\"),\n Map.entry(\"role-name\", \"service/service\")\n ));\n final var snsTopicPolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .policyId(\"__default_policy_ID\")\n .statements( \n GetPolicyDocumentStatementArgs.builder()\n .actions( \n \"SNS:Subscribe\",\n \"SNS:SetTopicAttributes\",\n \"SNS:RemovePermission\",\n \"SNS:Publish\",\n \"SNS:ListSubscriptionsByTopic\",\n \"SNS:GetTopicAttributes\",\n \"SNS:DeleteTopic\",\n \"SNS:AddPermission\")\n .conditions(GetPolicyDocumentStatementConditionArgs.builder()\n .test(\"StringEquals\")\n .variable(\"AWS:SourceOwner\")\n .values(sns.account-id())\n .build())\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"AWS\")\n .identifiers(\"*\")\n .build())\n .resources(String.format(\"arn:aws:sns:%s:%s:%s\", sns.region(),sns.account-id(),sns.name()))\n .sid(\"__default_statement_ID\")\n .build(),\n GetPolicyDocumentStatementArgs.builder()\n .actions( \n \"SNS:Subscribe\",\n \"SNS:Receive\")\n .conditions(GetPolicyDocumentStatementConditionArgs.builder()\n .test(\"StringLike\")\n .variable(\"SNS:Endpoint\")\n .values(String.format(\"arn:aws:sqs:%s:%s:%s\", sqs.region(),sqs.account-id(),sqs.name()))\n .build())\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"AWS\")\n .identifiers(\"*\")\n .build())\n .resources(String.format(\"arn:aws:sns:%s:%s:%s\", sns.region(),sns.account-id(),sns.name()))\n .sid(\"__console_sub_0\")\n .build())\n .build());\n\n final var sqsQueuePolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .policyId(String.format(\"arn:aws:sqs:%s:%s:%s/SQSDefaultPolicy\", sqs.region(),sqs.account-id(),sqs.name()))\n .statements(GetPolicyDocumentStatementArgs.builder()\n .sid(\"example-sns-topic\")\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"AWS\")\n .identifiers(\"*\")\n .build())\n .actions(\"SQS:SendMessage\")\n .resources(String.format(\"arn:aws:sqs:%s:%s:%s\", sqs.region(),sqs.account-id(),sqs.name()))\n .conditions(GetPolicyDocumentStatementConditionArgs.builder()\n .test(\"ArnEquals\")\n .variable(\"aws:SourceArn\")\n .values(String.format(\"arn:aws:sns:%s:%s:%s\", sns.region(),sns.account-id(),sns.name()))\n .build())\n .build())\n .build());\n\n var snsTopic = new Topic(\"snsTopic\", TopicArgs.builder()\n .name(sns.name())\n .displayName(sns.display_name())\n .policy(snsTopicPolicy.json())\n .build());\n\n var sqsQueue = new Queue(\"sqsQueue\", QueueArgs.builder()\n .name(sqs.name())\n .policy(sqsQueuePolicy.json())\n .build());\n\n var snsTopicTopicSubscription = new TopicSubscription(\"snsTopicTopicSubscription\", TopicSubscriptionArgs.builder()\n .topic(snsTopic.arn())\n .protocol(\"sqs\")\n .endpoint(sqsQueue.arn())\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n sns:\n type: dynamic\n default:\n account-id: '111111111111'\n displayName: example\n name: example-sns-topic\n region: us-west-1\n role-name: service/service\n sqs:\n type: dynamic\n default:\n account-id: '222222222222'\n name: example-sqs-queue\n region: us-east-1\n role-name: service/service\nresources:\n snsTopic:\n type: aws:sns:Topic\n name: sns_topic\n properties:\n name: ${sns.name}\n displayName: ${sns.display_name}\n policy: ${snsTopicPolicy.json}\n sqsQueue:\n type: aws:sqs:Queue\n name: sqs_queue\n properties:\n name: ${sqs.name}\n policy: ${sqsQueuePolicy.json}\n snsTopicTopicSubscription:\n type: aws:sns:TopicSubscription\n name: sns_topic\n properties:\n topic: ${snsTopic.arn}\n protocol: sqs\n endpoint: ${sqsQueue.arn}\nvariables:\n snsTopicPolicy:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n policyId: __default_policy_ID\n statements:\n - actions:\n - SNS:Subscribe\n - SNS:SetTopicAttributes\n - SNS:RemovePermission\n - SNS:Publish\n - SNS:ListSubscriptionsByTopic\n - SNS:GetTopicAttributes\n - SNS:DeleteTopic\n - SNS:AddPermission\n conditions:\n - test: StringEquals\n variable: AWS:SourceOwner\n values:\n - ${sns\"account-id\"[%!s(MISSING)]}\n effect: Allow\n principals:\n - type: AWS\n identifiers:\n - '*'\n resources:\n - arn:aws:sns:${sns.region}:${sns\"account-id\"[%!s(MISSING)]}:${sns.name}\n sid: __default_statement_ID\n - actions:\n - SNS:Subscribe\n - SNS:Receive\n conditions:\n - test: StringLike\n variable: SNS:Endpoint\n values:\n - arn:aws:sqs:${sqs.region}:${sqs\"account-id\"[%!s(MISSING)]}:${sqs.name}\n effect: Allow\n principals:\n - type: AWS\n identifiers:\n - '*'\n resources:\n - arn:aws:sns:${sns.region}:${sns\"account-id\"[%!s(MISSING)]}:${sns.name}\n sid: __console_sub_0\n sqsQueuePolicy:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n policyId: arn:aws:sqs:${sqs.region}:${sqs\"account-id\"[%!s(MISSING)]}:${sqs.name}/SQSDefaultPolicy\n statements:\n - sid: example-sns-topic\n effect: Allow\n principals:\n - type: AWS\n identifiers:\n - '*'\n actions:\n - SQS:SendMessage\n resources:\n - arn:aws:sqs:${sqs.region}:${sqs\"account-id\"[%!s(MISSING)]}:${sqs.name}\n conditions:\n - test: ArnEquals\n variable: aws:SourceArn\n values:\n - arn:aws:sns:${sns.region}:${sns\"account-id\"[%!s(MISSING)]}:${sns.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example with Delivery Policy\n\nThis example demonstrates how to define a \u003cspan pulumi-lang-nodejs=\"`deliveryPolicy`\" pulumi-lang-dotnet=\"`DeliveryPolicy`\" pulumi-lang-go=\"`deliveryPolicy`\" pulumi-lang-python=\"`delivery_policy`\" pulumi-lang-yaml=\"`deliveryPolicy`\" pulumi-lang-java=\"`deliveryPolicy`\"\u003e`delivery_policy`\u003c/span\u003e for an HTTPS subscription. Unlike the \u003cspan pulumi-lang-nodejs=\"`aws.sns.Topic`\" pulumi-lang-dotnet=\"`aws.sns.Topic`\" pulumi-lang-go=\"`sns.Topic`\" pulumi-lang-python=\"`sns.Topic`\" pulumi-lang-yaml=\"`aws.sns.Topic`\" pulumi-lang-java=\"`aws.sns.Topic`\"\u003e`aws.sns.Topic`\u003c/span\u003e resource, the \u003cspan pulumi-lang-nodejs=\"`deliveryPolicy`\" pulumi-lang-dotnet=\"`DeliveryPolicy`\" pulumi-lang-go=\"`deliveryPolicy`\" pulumi-lang-python=\"`delivery_policy`\" pulumi-lang-yaml=\"`deliveryPolicy`\" pulumi-lang-java=\"`deliveryPolicy`\"\u003e`delivery_policy`\u003c/span\u003e for \u003cspan pulumi-lang-nodejs=\"`aws.sns.TopicSubscription`\" pulumi-lang-dotnet=\"`aws.sns.TopicSubscription`\" pulumi-lang-go=\"`sns.TopicSubscription`\" pulumi-lang-python=\"`sns.TopicSubscription`\" pulumi-lang-yaml=\"`aws.sns.TopicSubscription`\" pulumi-lang-java=\"`aws.sns.TopicSubscription`\"\u003e`aws.sns.TopicSubscription`\u003c/span\u003e should not be wrapped in an `\"http\"` object.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleWithDeliveryPolicy = new aws.sns.TopicSubscription(\"example_with_delivery_policy\", {\n topic: \"arn:aws:sns:us-west-2:123456789012:my-topic\",\n protocol: \"https\",\n endpoint: \"https://example.com/endpoint\",\n rawMessageDelivery: true,\n deliveryPolicy: `{\n \"healthyRetryPolicy\": {\n \"minDelayTarget\": 20,\n \"maxDelayTarget\": 20,\n \"numRetries\": 3,\n \"numMaxDelayRetries\": 0,\n \"numNoDelayRetries\": 0,\n \"numMinDelayRetries\": 0,\n \"backoffFunction\": \"linear\"\n },\n \"sicklyRetryPolicy\": null,\n \"throttlePolicy\": null,\n \"requestPolicy\": {\n \"headerContentType\": \"text/plain; application/json\"\n },\n \"guaranteed\": false\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_with_delivery_policy = aws.sns.TopicSubscription(\"example_with_delivery_policy\",\n topic=\"arn:aws:sns:us-west-2:123456789012:my-topic\",\n protocol=\"https\",\n endpoint=\"https://example.com/endpoint\",\n raw_message_delivery=True,\n delivery_policy=\"\"\"{\n \"healthyRetryPolicy\": {\n \"minDelayTarget\": 20,\n \"maxDelayTarget\": 20,\n \"numRetries\": 3,\n \"numMaxDelayRetries\": 0,\n \"numNoDelayRetries\": 0,\n \"numMinDelayRetries\": 0,\n \"backoffFunction\": \"linear\"\n },\n \"sicklyRetryPolicy\": null,\n \"throttlePolicy\": null,\n \"requestPolicy\": {\n \"headerContentType\": \"text/plain; application/json\"\n },\n \"guaranteed\": false\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleWithDeliveryPolicy = new Aws.Sns.TopicSubscription(\"example_with_delivery_policy\", new()\n {\n Topic = \"arn:aws:sns:us-west-2:123456789012:my-topic\",\n Protocol = \"https\",\n Endpoint = \"https://example.com/endpoint\",\n RawMessageDelivery = true,\n DeliveryPolicy = @\"{\n \"\"healthyRetryPolicy\"\": {\n \"\"minDelayTarget\"\": 20,\n \"\"maxDelayTarget\"\": 20,\n \"\"numRetries\"\": 3,\n \"\"numMaxDelayRetries\"\": 0,\n \"\"numNoDelayRetries\"\": 0,\n \"\"numMinDelayRetries\"\": 0,\n \"\"backoffFunction\"\": \"\"linear\"\"\n },\n \"\"sicklyRetryPolicy\"\": null,\n \"\"throttlePolicy\"\": null,\n \"\"requestPolicy\"\": {\n \"\"headerContentType\"\": \"\"text/plain; application/json\"\"\n },\n \"\"guaranteed\"\": false\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sns.NewTopicSubscription(ctx, \"example_with_delivery_policy\", \u0026sns.TopicSubscriptionArgs{\n\t\t\tTopic: pulumi.Any(\"arn:aws:sns:us-west-2:123456789012:my-topic\"),\n\t\t\tProtocol: pulumi.String(\"https\"),\n\t\t\tEndpoint: pulumi.String(\"https://example.com/endpoint\"),\n\t\t\tRawMessageDelivery: pulumi.Bool(true),\n\t\t\tDeliveryPolicy: pulumi.String(`{\n \"healthyRetryPolicy\": {\n \"minDelayTarget\": 20,\n \"maxDelayTarget\": 20,\n \"numRetries\": 3,\n \"numMaxDelayRetries\": 0,\n \"numNoDelayRetries\": 0,\n \"numMinDelayRetries\": 0,\n \"backoffFunction\": \"linear\"\n },\n \"sicklyRetryPolicy\": null,\n \"throttlePolicy\": null,\n \"requestPolicy\": {\n \"headerContentType\": \"text/plain; application/json\"\n },\n \"guaranteed\": false\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sns.TopicSubscription;\nimport com.pulumi.aws.sns.TopicSubscriptionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleWithDeliveryPolicy = new TopicSubscription(\"exampleWithDeliveryPolicy\", TopicSubscriptionArgs.builder()\n .topic(\"arn:aws:sns:us-west-2:123456789012:my-topic\")\n .protocol(\"https\")\n .endpoint(\"https://example.com/endpoint\")\n .rawMessageDelivery(true)\n .deliveryPolicy(\"\"\"\n{\n \"healthyRetryPolicy\": {\n \"minDelayTarget\": 20,\n \"maxDelayTarget\": 20,\n \"numRetries\": 3,\n \"numMaxDelayRetries\": 0,\n \"numNoDelayRetries\": 0,\n \"numMinDelayRetries\": 0,\n \"backoffFunction\": \"linear\"\n },\n \"sicklyRetryPolicy\": null,\n \"throttlePolicy\": null,\n \"requestPolicy\": {\n \"headerContentType\": \"text/plain; application/json\"\n },\n \"guaranteed\": false\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleWithDeliveryPolicy:\n type: aws:sns:TopicSubscription\n name: example_with_delivery_policy\n properties:\n topic: arn:aws:sns:us-west-2:123456789012:my-topic\n protocol: https\n endpoint: https://example.com/endpoint\n rawMessageDelivery: true\n deliveryPolicy: |\n {\n \"healthyRetryPolicy\": {\n \"minDelayTarget\": 20,\n \"maxDelayTarget\": 20,\n \"numRetries\": 3,\n \"numMaxDelayRetries\": 0,\n \"numNoDelayRetries\": 0,\n \"numMinDelayRetries\": 0,\n \"backoffFunction\": \"linear\"\n },\n \"sicklyRetryPolicy\": null,\n \"throttlePolicy\": null,\n \"requestPolicy\": {\n \"headerContentType\": \"text/plain; application/json\"\n },\n \"guaranteed\": false\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n- `arn` (String) Amazon Resource Name (ARN) of the SNS topic subscription.\n\nUsing `pulumi import`, import SNS Topic Subscriptions using the subscription `arn`. For example:\n\nconsole\n\n% pulumi import aws_sns_topic_subscription.user_updates_sqs_target arn:aws:sns:us-west-2:123456789012:my-topic:8a21d249-4329-4871-acc6-7be709c6ea7f\n\n", + "description": "Provides a resource for subscribing to SNS topics. Requires that an SNS topic exist for the subscription to attach to. This resource allows you to automatically place messages sent to SNS topics in SQS queues, send them as HTTP(S) POST requests to a given endpoint, send SMS messages, or notify devices / applications. The most likely use case for provider users will probably be SQS queues.\n\n\u003e **NOTE:** If the SNS topic and SQS queue are in different AWS regions, the \u003cspan pulumi-lang-nodejs=\"`aws.sns.TopicSubscription`\" pulumi-lang-dotnet=\"`aws.sns.TopicSubscription`\" pulumi-lang-go=\"`sns.TopicSubscription`\" pulumi-lang-python=\"`sns.TopicSubscription`\" pulumi-lang-yaml=\"`aws.sns.TopicSubscription`\" pulumi-lang-java=\"`aws.sns.TopicSubscription`\"\u003e`aws.sns.TopicSubscription`\u003c/span\u003e must use an AWS provider that is in the same region as the SNS topic. If the \u003cspan pulumi-lang-nodejs=\"`aws.sns.TopicSubscription`\" pulumi-lang-dotnet=\"`aws.sns.TopicSubscription`\" pulumi-lang-go=\"`sns.TopicSubscription`\" pulumi-lang-python=\"`sns.TopicSubscription`\" pulumi-lang-yaml=\"`aws.sns.TopicSubscription`\" pulumi-lang-java=\"`aws.sns.TopicSubscription`\"\u003e`aws.sns.TopicSubscription`\u003c/span\u003e uses a provider with a different region than the SNS topic, this provider will fail to create the subscription.\n\n\u003e **NOTE:** Setup of cross-account subscriptions from SNS topics to SQS queues requires the provider to have access to BOTH accounts.\n\n\u003e **NOTE:** If an SNS topic and SQS queue are in different AWS accounts but the same region, the \u003cspan pulumi-lang-nodejs=\"`aws.sns.TopicSubscription`\" pulumi-lang-dotnet=\"`aws.sns.TopicSubscription`\" pulumi-lang-go=\"`sns.TopicSubscription`\" pulumi-lang-python=\"`sns.TopicSubscription`\" pulumi-lang-yaml=\"`aws.sns.TopicSubscription`\" pulumi-lang-java=\"`aws.sns.TopicSubscription`\"\u003e`aws.sns.TopicSubscription`\u003c/span\u003e must use the AWS provider for the account with the SQS queue. If \u003cspan pulumi-lang-nodejs=\"`aws.sns.TopicSubscription`\" pulumi-lang-dotnet=\"`aws.sns.TopicSubscription`\" pulumi-lang-go=\"`sns.TopicSubscription`\" pulumi-lang-python=\"`sns.TopicSubscription`\" pulumi-lang-yaml=\"`aws.sns.TopicSubscription`\" pulumi-lang-java=\"`aws.sns.TopicSubscription`\"\u003e`aws.sns.TopicSubscription`\u003c/span\u003e uses a Provider with a different account than the SQS queue, this provider creates the subscription but does not keep state and tries to re-create the subscription at every \u003cspan pulumi-lang-nodejs=\"`apply`\" pulumi-lang-dotnet=\"`Apply`\" pulumi-lang-go=\"`apply`\" pulumi-lang-python=\"`apply`\" pulumi-lang-yaml=\"`apply`\" pulumi-lang-java=\"`apply`\"\u003e`apply`\u003c/span\u003e.\n\n\u003e **NOTE:** If an SNS topic and SQS queue are in different AWS accounts and different AWS regions, the subscription needs to be initiated from the account with the SQS queue but in the region of the SNS topic.\n\n\u003e **NOTE:** You cannot unsubscribe to a subscription that is pending confirmation. If you use \u003cspan pulumi-lang-nodejs=\"`email`\" pulumi-lang-dotnet=\"`Email`\" pulumi-lang-go=\"`email`\" pulumi-lang-python=\"`email`\" pulumi-lang-yaml=\"`email`\" pulumi-lang-java=\"`email`\"\u003e`email`\u003c/span\u003e, `email-json`, or \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e/\u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e (without auto-confirmation enabled), until the subscription is confirmed (e.g., outside of this provider), AWS does not allow this provider to delete / unsubscribe the subscription. If you \u003cspan pulumi-lang-nodejs=\"`destroy`\" pulumi-lang-dotnet=\"`Destroy`\" pulumi-lang-go=\"`destroy`\" pulumi-lang-python=\"`destroy`\" pulumi-lang-yaml=\"`destroy`\" pulumi-lang-java=\"`destroy`\"\u003e`destroy`\u003c/span\u003e an unconfirmed subscription, this provider will remove the subscription from its state but the subscription will still exist in AWS. However, if you delete an SNS topic, SNS [deletes all the subscriptions](https://docs.aws.amazon.com/sns/latest/dg/sns-delete-subscription-topic.html) associated with the topic. Also, you can import a subscription after confirmation and then have the capability to delete it.\n\n## Example Usage\n\n### Basic usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst userUpdates = new aws.sns.Topic(\"user_updates\", {name: \"user-updates-topic\"});\nconst sqsQueuePolicy = aws.iam.getPolicyDocumentOutput({\n policyId: \"arn:aws:sqs:us-west-2:123456789012:user_updates_queue/SQSDefaultPolicy\",\n statements: [{\n sid: \"user_updates_sqs_target\",\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"sns.amazonaws.com\"],\n }],\n actions: [\"SQS:SendMessage\"],\n resources: [\"arn:aws:sqs:us-west-2:123456789012:user-updates-queue\"],\n conditions: [{\n test: \"ArnEquals\",\n variable: \"aws:SourceArn\",\n values: [userUpdates.arn],\n }],\n }],\n});\nconst userUpdatesQueue = new aws.sqs.Queue(\"user_updates_queue\", {\n name: \"user-updates-queue\",\n policy: sqsQueuePolicy.apply(sqsQueuePolicy =\u003e sqsQueuePolicy.json),\n});\nconst userUpdatesSqsTarget = new aws.sns.TopicSubscription(\"user_updates_sqs_target\", {\n topic: userUpdates.arn,\n protocol: \"sqs\",\n endpoint: userUpdatesQueue.arn,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nuser_updates = aws.sns.Topic(\"user_updates\", name=\"user-updates-topic\")\nsqs_queue_policy = aws.iam.get_policy_document_output(policy_id=\"arn:aws:sqs:us-west-2:123456789012:user_updates_queue/SQSDefaultPolicy\",\n statements=[{\n \"sid\": \"user_updates_sqs_target\",\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"sns.amazonaws.com\"],\n }],\n \"actions\": [\"SQS:SendMessage\"],\n \"resources\": [\"arn:aws:sqs:us-west-2:123456789012:user-updates-queue\"],\n \"conditions\": [{\n \"test\": \"ArnEquals\",\n \"variable\": \"aws:SourceArn\",\n \"values\": [user_updates.arn],\n }],\n }])\nuser_updates_queue = aws.sqs.Queue(\"user_updates_queue\",\n name=\"user-updates-queue\",\n policy=sqs_queue_policy.json)\nuser_updates_sqs_target = aws.sns.TopicSubscription(\"user_updates_sqs_target\",\n topic=user_updates.arn,\n protocol=\"sqs\",\n endpoint=user_updates_queue.arn)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var userUpdates = new Aws.Sns.Topic(\"user_updates\", new()\n {\n Name = \"user-updates-topic\",\n });\n\n var sqsQueuePolicy = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n PolicyId = \"arn:aws:sqs:us-west-2:123456789012:user_updates_queue/SQSDefaultPolicy\",\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Sid = \"user_updates_sqs_target\",\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"sns.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"SQS:SendMessage\",\n },\n Resources = new[]\n {\n \"arn:aws:sqs:us-west-2:123456789012:user-updates-queue\",\n },\n Conditions = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementConditionInputArgs\n {\n Test = \"ArnEquals\",\n Variable = \"aws:SourceArn\",\n Values = new[]\n {\n userUpdates.Arn,\n },\n },\n },\n },\n },\n });\n\n var userUpdatesQueue = new Aws.Sqs.Queue(\"user_updates_queue\", new()\n {\n Name = \"user-updates-queue\",\n Policy = sqsQueuePolicy.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var userUpdatesSqsTarget = new Aws.Sns.TopicSubscription(\"user_updates_sqs_target\", new()\n {\n Topic = userUpdates.Arn,\n Protocol = \"sqs\",\n Endpoint = userUpdatesQueue.Arn,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sqs\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tuserUpdates, err := sns.NewTopic(ctx, \"user_updates\", \u0026sns.TopicArgs{\n\t\t\tName: pulumi.String(\"user-updates-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsqsQueuePolicy := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{\n\t\t\tPolicyId: pulumi.String(\"arn:aws:sqs:us-west-2:123456789012:user_updates_queue/SQSDefaultPolicy\"),\n\t\t\tStatements: iam.GetPolicyDocumentStatementArray{\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tSid: pulumi.String(\"user_updates_sqs_target\"),\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tPrincipals: iam.GetPolicyDocumentStatementPrincipalArray{\n\t\t\t\t\t\t\u0026iam.GetPolicyDocumentStatementPrincipalArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Service\"),\n\t\t\t\t\t\t\tIdentifiers: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"sns.amazonaws.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"SQS:SendMessage\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"arn:aws:sqs:us-west-2:123456789012:user-updates-queue\"),\n\t\t\t\t\t},\n\t\t\t\t\tConditions: iam.GetPolicyDocumentStatementConditionArray{\n\t\t\t\t\t\t\u0026iam.GetPolicyDocumentStatementConditionArgs{\n\t\t\t\t\t\t\tTest: pulumi.String(\"ArnEquals\"),\n\t\t\t\t\t\t\tVariable: pulumi.String(\"aws:SourceArn\"),\n\t\t\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\t\t\tuserUpdates.Arn,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tuserUpdatesQueue, err := sqs.NewQueue(ctx, \"user_updates_queue\", \u0026sqs.QueueArgs{\n\t\t\tName: pulumi.String(\"user-updates-queue\"),\n\t\t\tPolicy: pulumi.String(sqsQueuePolicy.ApplyT(func(sqsQueuePolicy iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026sqsQueuePolicy.Json, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sns.NewTopicSubscription(ctx, \"user_updates_sqs_target\", \u0026sns.TopicSubscriptionArgs{\n\t\t\tTopic: userUpdates.Arn,\n\t\t\tProtocol: pulumi.String(\"sqs\"),\n\t\t\tEndpoint: userUpdatesQueue.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sns.Topic;\nimport com.pulumi.aws.sns.TopicArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.sqs.Queue;\nimport com.pulumi.aws.sqs.QueueArgs;\nimport com.pulumi.aws.sns.TopicSubscription;\nimport com.pulumi.aws.sns.TopicSubscriptionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var userUpdates = new Topic(\"userUpdates\", TopicArgs.builder()\n .name(\"user-updates-topic\")\n .build());\n\n final var sqsQueuePolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .policyId(\"arn:aws:sqs:us-west-2:123456789012:user_updates_queue/SQSDefaultPolicy\")\n .statements(GetPolicyDocumentStatementArgs.builder()\n .sid(\"user_updates_sqs_target\")\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"sns.amazonaws.com\")\n .build())\n .actions(\"SQS:SendMessage\")\n .resources(\"arn:aws:sqs:us-west-2:123456789012:user-updates-queue\")\n .conditions(GetPolicyDocumentStatementConditionArgs.builder()\n .test(\"ArnEquals\")\n .variable(\"aws:SourceArn\")\n .values(userUpdates.arn())\n .build())\n .build())\n .build());\n\n var userUpdatesQueue = new Queue(\"userUpdatesQueue\", QueueArgs.builder()\n .name(\"user-updates-queue\")\n .policy(sqsQueuePolicy.applyValue(_sqsQueuePolicy -\u003e _sqsQueuePolicy.json()))\n .build());\n\n var userUpdatesSqsTarget = new TopicSubscription(\"userUpdatesSqsTarget\", TopicSubscriptionArgs.builder()\n .topic(userUpdates.arn())\n .protocol(\"sqs\")\n .endpoint(userUpdatesQueue.arn())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n userUpdates:\n type: aws:sns:Topic\n name: user_updates\n properties:\n name: user-updates-topic\n userUpdatesQueue:\n type: aws:sqs:Queue\n name: user_updates_queue\n properties:\n name: user-updates-queue\n policy: ${sqsQueuePolicy.json}\n userUpdatesSqsTarget:\n type: aws:sns:TopicSubscription\n name: user_updates_sqs_target\n properties:\n topic: ${userUpdates.arn}\n protocol: sqs\n endpoint: ${userUpdatesQueue.arn}\nvariables:\n sqsQueuePolicy:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n policyId: arn:aws:sqs:us-west-2:123456789012:user_updates_queue/SQSDefaultPolicy\n statements:\n - sid: user_updates_sqs_target\n effect: Allow\n principals:\n - type: Service\n identifiers:\n - sns.amazonaws.com\n actions:\n - SQS:SendMessage\n resources:\n - arn:aws:sqs:us-west-2:123456789012:user-updates-queue\n conditions:\n - test: ArnEquals\n variable: aws:SourceArn\n values:\n - ${userUpdates.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Cross-account Subscription\n\nYou can subscribe SNS topics to SQS queues in different Amazon accounts and regions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst config = new pulumi.Config();\nconst sns = config.getObject\u003cany\u003e(\"sns\") || {\n \"account-id\": \"111111111111\",\n displayName: \"example\",\n name: \"example-sns-topic\",\n region: \"us-west-1\",\n \"role-name\": \"service/service\",\n};\nconst sqs = config.getObject\u003cany\u003e(\"sqs\") || {\n \"account-id\": \"222222222222\",\n name: \"example-sqs-queue\",\n region: \"us-east-1\",\n \"role-name\": \"service/service\",\n};\nconst snsTopicPolicy = aws.iam.getPolicyDocument({\n policyId: \"__default_policy_ID\",\n statements: [\n {\n actions: [\n \"SNS:Subscribe\",\n \"SNS:SetTopicAttributes\",\n \"SNS:RemovePermission\",\n \"SNS:Publish\",\n \"SNS:ListSubscriptionsByTopic\",\n \"SNS:GetTopicAttributes\",\n \"SNS:DeleteTopic\",\n \"SNS:AddPermission\",\n ],\n conditions: [{\n test: \"StringEquals\",\n variable: \"AWS:SourceOwner\",\n values: [sns[\"account-id\"]],\n }],\n effect: \"Allow\",\n principals: [{\n type: \"AWS\",\n identifiers: [\"*\"],\n }],\n resources: [`arn:aws:sns:${sns.region}:${sns[\"account-id\"]}:${sns.name}`],\n sid: \"__default_statement_ID\",\n },\n {\n actions: [\n \"SNS:Subscribe\",\n \"SNS:Receive\",\n ],\n conditions: [{\n test: \"StringLike\",\n variable: \"SNS:Endpoint\",\n values: [`arn:aws:sqs:${sqs.region}:${sqs[\"account-id\"]}:${sqs.name}`],\n }],\n effect: \"Allow\",\n principals: [{\n type: \"AWS\",\n identifiers: [\"*\"],\n }],\n resources: [`arn:aws:sns:${sns.region}:${sns[\"account-id\"]}:${sns.name}`],\n sid: \"__console_sub_0\",\n },\n ],\n});\nconst sqsQueuePolicy = aws.iam.getPolicyDocument({\n policyId: `arn:aws:sqs:${sqs.region}:${sqs[\"account-id\"]}:${sqs.name}/SQSDefaultPolicy`,\n statements: [{\n sid: \"example-sns-topic\",\n effect: \"Allow\",\n principals: [{\n type: \"AWS\",\n identifiers: [\"*\"],\n }],\n actions: [\"SQS:SendMessage\"],\n resources: [`arn:aws:sqs:${sqs.region}:${sqs[\"account-id\"]}:${sqs.name}`],\n conditions: [{\n test: \"ArnEquals\",\n variable: \"aws:SourceArn\",\n values: [`arn:aws:sns:${sns.region}:${sns[\"account-id\"]}:${sns.name}`],\n }],\n }],\n});\nconst snsTopic = new aws.sns.Topic(\"sns_topic\", {\n name: sns.name,\n displayName: sns.display_name,\n policy: snsTopicPolicy.then(snsTopicPolicy =\u003e snsTopicPolicy.json),\n});\nconst sqsQueue = new aws.sqs.Queue(\"sqs_queue\", {\n name: sqs.name,\n policy: sqsQueuePolicy.then(sqsQueuePolicy =\u003e sqsQueuePolicy.json),\n});\nconst snsTopicTopicSubscription = new aws.sns.TopicSubscription(\"sns_topic\", {\n topic: snsTopic.arn,\n protocol: \"sqs\",\n endpoint: sqsQueue.arn,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nconfig = pulumi.Config()\nsns = config.get_object(\"sns\")\nif sns is None:\n sns = {\n \"account-id\": \"111111111111\",\n \"displayName\": \"example\",\n \"name\": \"example-sns-topic\",\n \"region\": \"us-west-1\",\n \"role-name\": \"service/service\",\n }\nsqs = config.get_object(\"sqs\")\nif sqs is None:\n sqs = {\n \"account-id\": \"222222222222\",\n \"name\": \"example-sqs-queue\",\n \"region\": \"us-east-1\",\n \"role-name\": \"service/service\",\n }\nsns_topic_policy = aws.iam.get_policy_document(policy_id=\"__default_policy_ID\",\n statements=[\n {\n \"actions\": [\n \"SNS:Subscribe\",\n \"SNS:SetTopicAttributes\",\n \"SNS:RemovePermission\",\n \"SNS:Publish\",\n \"SNS:ListSubscriptionsByTopic\",\n \"SNS:GetTopicAttributes\",\n \"SNS:DeleteTopic\",\n \"SNS:AddPermission\",\n ],\n \"conditions\": [{\n \"test\": \"StringEquals\",\n \"variable\": \"AWS:SourceOwner\",\n \"values\": [sns[\"account-id\"]],\n }],\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"AWS\",\n \"identifiers\": [\"*\"],\n }],\n \"resources\": [f\"arn:aws:sns:{sns['region']}:{sns['account-id']}:{sns['name']}\"],\n \"sid\": \"__default_statement_ID\",\n },\n {\n \"actions\": [\n \"SNS:Subscribe\",\n \"SNS:Receive\",\n ],\n \"conditions\": [{\n \"test\": \"StringLike\",\n \"variable\": \"SNS:Endpoint\",\n \"values\": [f\"arn:aws:sqs:{sqs['region']}:{sqs['account-id']}:{sqs['name']}\"],\n }],\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"AWS\",\n \"identifiers\": [\"*\"],\n }],\n \"resources\": [f\"arn:aws:sns:{sns['region']}:{sns['account-id']}:{sns['name']}\"],\n \"sid\": \"__console_sub_0\",\n },\n ])\nsqs_queue_policy = aws.iam.get_policy_document(policy_id=f\"arn:aws:sqs:{sqs['region']}:{sqs['account-id']}:{sqs['name']}/SQSDefaultPolicy\",\n statements=[{\n \"sid\": \"example-sns-topic\",\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"AWS\",\n \"identifiers\": [\"*\"],\n }],\n \"actions\": [\"SQS:SendMessage\"],\n \"resources\": [f\"arn:aws:sqs:{sqs['region']}:{sqs['account-id']}:{sqs['name']}\"],\n \"conditions\": [{\n \"test\": \"ArnEquals\",\n \"variable\": \"aws:SourceArn\",\n \"values\": [f\"arn:aws:sns:{sns['region']}:{sns['account-id']}:{sns['name']}\"],\n }],\n }])\nsns_topic = aws.sns.Topic(\"sns_topic\",\n name=sns[\"name\"],\n display_name=sns[\"display_name\"],\n policy=sns_topic_policy.json)\nsqs_queue = aws.sqs.Queue(\"sqs_queue\",\n name=sqs[\"name\"],\n policy=sqs_queue_policy.json)\nsns_topic_topic_subscription = aws.sns.TopicSubscription(\"sns_topic\",\n topic=sns_topic.arn,\n protocol=\"sqs\",\n endpoint=sqs_queue.arn)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var sns = config.GetObject\u003cdynamic\u003e(\"sns\") ?? \n {\n { \"account-id\", \"111111111111\" },\n { \"displayName\", \"example\" },\n { \"name\", \"example-sns-topic\" },\n { \"region\", \"us-west-1\" },\n { \"role-name\", \"service/service\" },\n };\n var sqs = config.GetObject\u003cdynamic\u003e(\"sqs\") ?? \n {\n { \"account-id\", \"222222222222\" },\n { \"name\", \"example-sqs-queue\" },\n { \"region\", \"us-east-1\" },\n { \"role-name\", \"service/service\" },\n };\n var snsTopicPolicy = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n PolicyId = \"__default_policy_ID\",\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Actions = new[]\n {\n \"SNS:Subscribe\",\n \"SNS:SetTopicAttributes\",\n \"SNS:RemovePermission\",\n \"SNS:Publish\",\n \"SNS:ListSubscriptionsByTopic\",\n \"SNS:GetTopicAttributes\",\n \"SNS:DeleteTopic\",\n \"SNS:AddPermission\",\n },\n Conditions = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementConditionInputArgs\n {\n Test = \"StringEquals\",\n Variable = \"AWS:SourceOwner\",\n Values = new[]\n {\n sns.Account_id,\n },\n },\n },\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"AWS\",\n Identifiers = new[]\n {\n \"*\",\n },\n },\n },\n Resources = new[]\n {\n $\"arn:aws:sns:{sns.Region}:{sns.Account_id}:{sns.Name}\",\n },\n Sid = \"__default_statement_ID\",\n },\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Actions = new[]\n {\n \"SNS:Subscribe\",\n \"SNS:Receive\",\n },\n Conditions = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementConditionInputArgs\n {\n Test = \"StringLike\",\n Variable = \"SNS:Endpoint\",\n Values = new[]\n {\n $\"arn:aws:sqs:{sqs.Region}:{sqs.Account_id}:{sqs.Name}\",\n },\n },\n },\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"AWS\",\n Identifiers = new[]\n {\n \"*\",\n },\n },\n },\n Resources = new[]\n {\n $\"arn:aws:sns:{sns.Region}:{sns.Account_id}:{sns.Name}\",\n },\n Sid = \"__console_sub_0\",\n },\n },\n });\n\n var sqsQueuePolicy = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n PolicyId = $\"arn:aws:sqs:{sqs.Region}:{sqs.Account_id}:{sqs.Name}/SQSDefaultPolicy\",\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Sid = \"example-sns-topic\",\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"AWS\",\n Identifiers = new[]\n {\n \"*\",\n },\n },\n },\n Actions = new[]\n {\n \"SQS:SendMessage\",\n },\n Resources = new[]\n {\n $\"arn:aws:sqs:{sqs.Region}:{sqs.Account_id}:{sqs.Name}\",\n },\n Conditions = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementConditionInputArgs\n {\n Test = \"ArnEquals\",\n Variable = \"aws:SourceArn\",\n Values = new[]\n {\n $\"arn:aws:sns:{sns.Region}:{sns.Account_id}:{sns.Name}\",\n },\n },\n },\n },\n },\n });\n\n var snsTopic = new Aws.Sns.Topic(\"sns_topic\", new()\n {\n Name = sns.Name,\n DisplayName = sns.Display_name,\n Policy = snsTopicPolicy.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var sqsQueue = new Aws.Sqs.Queue(\"sqs_queue\", new()\n {\n Name = sqs.Name,\n Policy = sqsQueuePolicy.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var snsTopicTopicSubscription = new Aws.Sns.TopicSubscription(\"sns_topic\", new()\n {\n Topic = snsTopic.Arn,\n Protocol = \"sqs\",\n Endpoint = sqsQueue.Arn,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sqs\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\ncfg := config.New(ctx, \"\")\nsns := map[string]interface{}{\n\"account-id\": \"111111111111\",\n\"displayName\": \"example\",\n\"name\": \"example-sns-topic\",\n\"region\": \"us-west-1\",\n\"role-name\": \"service/service\",\n};\nif param := cfg.GetObject(\"sns\"); param != nil {\nsns = param\n}\nsqs := map[string]interface{}{\n\"account-id\": \"222222222222\",\n\"name\": \"example-sqs-queue\",\n\"region\": \"us-east-1\",\n\"role-name\": \"service/service\",\n};\nif param := cfg.GetObject(\"sqs\"); param != nil {\nsqs = param\n}\nsnsTopicPolicy, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\nPolicyId: pulumi.StringRef(\"__default_policy_ID\"),\nStatements: []iam.GetPolicyDocumentStatement{\n{\nActions: []string{\n\"SNS:Subscribe\",\n\"SNS:SetTopicAttributes\",\n\"SNS:RemovePermission\",\n\"SNS:Publish\",\n\"SNS:ListSubscriptionsByTopic\",\n\"SNS:GetTopicAttributes\",\n\"SNS:DeleteTopic\",\n\"SNS:AddPermission\",\n},\nConditions: []iam.GetPolicyDocumentStatementCondition{\n{\nTest: \"StringEquals\",\nVariable: \"AWS:SourceOwner\",\nValues: interface{}{\nsns.AccountId,\n},\n},\n},\nEffect: pulumi.StringRef(\"Allow\"),\nPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n{\nType: \"AWS\",\nIdentifiers: []string{\n\"*\",\n},\n},\n},\nResources: []string{\nfmt.Sprintf(\"arn:aws:sns:%v:%v:%v\", sns.Region, sns.AccountId, sns.Name),\n},\nSid: pulumi.StringRef(\"__default_statement_ID\"),\n},\n{\nActions: []string{\n\"SNS:Subscribe\",\n\"SNS:Receive\",\n},\nConditions: []iam.GetPolicyDocumentStatementCondition{\n{\nTest: \"StringLike\",\nVariable: \"SNS:Endpoint\",\nValues: []string{\nfmt.Sprintf(\"arn:aws:sqs:%v:%v:%v\", sqs.Region, sqs.AccountId, sqs.Name),\n},\n},\n},\nEffect: pulumi.StringRef(\"Allow\"),\nPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n{\nType: \"AWS\",\nIdentifiers: []string{\n\"*\",\n},\n},\n},\nResources: []string{\nfmt.Sprintf(\"arn:aws:sns:%v:%v:%v\", sns.Region, sns.AccountId, sns.Name),\n},\nSid: pulumi.StringRef(\"__console_sub_0\"),\n},\n},\n}, nil);\nif err != nil {\nreturn err\n}\nsqsQueuePolicy, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\nPolicyId: pulumi.StringRef(fmt.Sprintf(\"arn:aws:sqs:%v:%v:%v/SQSDefaultPolicy\", sqs.Region, sqs.AccountId, sqs.Name)),\nStatements: []iam.GetPolicyDocumentStatement{\n{\nSid: pulumi.StringRef(\"example-sns-topic\"),\nEffect: pulumi.StringRef(\"Allow\"),\nPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n{\nType: \"AWS\",\nIdentifiers: []string{\n\"*\",\n},\n},\n},\nActions: []string{\n\"SQS:SendMessage\",\n},\nResources: []string{\nfmt.Sprintf(\"arn:aws:sqs:%v:%v:%v\", sqs.Region, sqs.AccountId, sqs.Name),\n},\nConditions: []iam.GetPolicyDocumentStatementCondition{\n{\nTest: \"ArnEquals\",\nVariable: \"aws:SourceArn\",\nValues: []string{\nfmt.Sprintf(\"arn:aws:sns:%v:%v:%v\", sns.Region, sns.AccountId, sns.Name),\n},\n},\n},\n},\n},\n}, nil);\nif err != nil {\nreturn err\n}\nsnsTopic, err := sns.NewTopic(ctx, \"sns_topic\", \u0026sns.TopicArgs{\nName: pulumi.Any(sns.Name),\nDisplayName: pulumi.Any(sns.Display_name),\nPolicy: pulumi.String(snsTopicPolicy.Json),\n})\nif err != nil {\nreturn err\n}\nsqsQueue, err := sqs.NewQueue(ctx, \"sqs_queue\", \u0026sqs.QueueArgs{\nName: pulumi.Any(sqs.Name),\nPolicy: pulumi.String(sqsQueuePolicy.Json),\n})\nif err != nil {\nreturn err\n}\n_, err = sns.NewTopicSubscription(ctx, \"sns_topic\", \u0026sns.TopicSubscriptionArgs{\nTopic: snsTopic.Arn,\nProtocol: pulumi.String(\"sqs\"),\nEndpoint: sqsQueue.Arn,\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.sns.Topic;\nimport com.pulumi.aws.sns.TopicArgs;\nimport com.pulumi.aws.sqs.Queue;\nimport com.pulumi.aws.sqs.QueueArgs;\nimport com.pulumi.aws.sns.TopicSubscription;\nimport com.pulumi.aws.sns.TopicSubscriptionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var sns = config.get(\"sns\").orElse(Map.ofEntries(\n Map.entry(\"account-id\", \"111111111111\"),\n Map.entry(\"displayName\", \"example\"),\n Map.entry(\"name\", \"example-sns-topic\"),\n Map.entry(\"region\", \"us-west-1\"),\n Map.entry(\"role-name\", \"service/service\")\n ));\n final var sqs = config.get(\"sqs\").orElse(Map.ofEntries(\n Map.entry(\"account-id\", \"222222222222\"),\n Map.entry(\"name\", \"example-sqs-queue\"),\n Map.entry(\"region\", \"us-east-1\"),\n Map.entry(\"role-name\", \"service/service\")\n ));\n final var snsTopicPolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .policyId(\"__default_policy_ID\")\n .statements( \n GetPolicyDocumentStatementArgs.builder()\n .actions( \n \"SNS:Subscribe\",\n \"SNS:SetTopicAttributes\",\n \"SNS:RemovePermission\",\n \"SNS:Publish\",\n \"SNS:ListSubscriptionsByTopic\",\n \"SNS:GetTopicAttributes\",\n \"SNS:DeleteTopic\",\n \"SNS:AddPermission\")\n .conditions(GetPolicyDocumentStatementConditionArgs.builder()\n .test(\"StringEquals\")\n .variable(\"AWS:SourceOwner\")\n .values(sns.account-id())\n .build())\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"AWS\")\n .identifiers(\"*\")\n .build())\n .resources(String.format(\"arn:aws:sns:%s:%s:%s\", sns.region(),sns.account-id(),sns.name()))\n .sid(\"__default_statement_ID\")\n .build(),\n GetPolicyDocumentStatementArgs.builder()\n .actions( \n \"SNS:Subscribe\",\n \"SNS:Receive\")\n .conditions(GetPolicyDocumentStatementConditionArgs.builder()\n .test(\"StringLike\")\n .variable(\"SNS:Endpoint\")\n .values(String.format(\"arn:aws:sqs:%s:%s:%s\", sqs.region(),sqs.account-id(),sqs.name()))\n .build())\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"AWS\")\n .identifiers(\"*\")\n .build())\n .resources(String.format(\"arn:aws:sns:%s:%s:%s\", sns.region(),sns.account-id(),sns.name()))\n .sid(\"__console_sub_0\")\n .build())\n .build());\n\n final var sqsQueuePolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .policyId(String.format(\"arn:aws:sqs:%s:%s:%s/SQSDefaultPolicy\", sqs.region(),sqs.account-id(),sqs.name()))\n .statements(GetPolicyDocumentStatementArgs.builder()\n .sid(\"example-sns-topic\")\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"AWS\")\n .identifiers(\"*\")\n .build())\n .actions(\"SQS:SendMessage\")\n .resources(String.format(\"arn:aws:sqs:%s:%s:%s\", sqs.region(),sqs.account-id(),sqs.name()))\n .conditions(GetPolicyDocumentStatementConditionArgs.builder()\n .test(\"ArnEquals\")\n .variable(\"aws:SourceArn\")\n .values(String.format(\"arn:aws:sns:%s:%s:%s\", sns.region(),sns.account-id(),sns.name()))\n .build())\n .build())\n .build());\n\n var snsTopic = new Topic(\"snsTopic\", TopicArgs.builder()\n .name(sns.name())\n .displayName(sns.display_name())\n .policy(snsTopicPolicy.json())\n .build());\n\n var sqsQueue = new Queue(\"sqsQueue\", QueueArgs.builder()\n .name(sqs.name())\n .policy(sqsQueuePolicy.json())\n .build());\n\n var snsTopicTopicSubscription = new TopicSubscription(\"snsTopicTopicSubscription\", TopicSubscriptionArgs.builder()\n .topic(snsTopic.arn())\n .protocol(\"sqs\")\n .endpoint(sqsQueue.arn())\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n sns:\n type: dynamic\n default:\n account-id: '111111111111'\n displayName: example\n name: example-sns-topic\n region: us-west-1\n role-name: service/service\n sqs:\n type: dynamic\n default:\n account-id: '222222222222'\n name: example-sqs-queue\n region: us-east-1\n role-name: service/service\nresources:\n snsTopic:\n type: aws:sns:Topic\n name: sns_topic\n properties:\n name: ${sns.name}\n displayName: ${sns.display_name}\n policy: ${snsTopicPolicy.json}\n sqsQueue:\n type: aws:sqs:Queue\n name: sqs_queue\n properties:\n name: ${sqs.name}\n policy: ${sqsQueuePolicy.json}\n snsTopicTopicSubscription:\n type: aws:sns:TopicSubscription\n name: sns_topic\n properties:\n topic: ${snsTopic.arn}\n protocol: sqs\n endpoint: ${sqsQueue.arn}\nvariables:\n snsTopicPolicy:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n policyId: __default_policy_ID\n statements:\n - actions:\n - SNS:Subscribe\n - SNS:SetTopicAttributes\n - SNS:RemovePermission\n - SNS:Publish\n - SNS:ListSubscriptionsByTopic\n - SNS:GetTopicAttributes\n - SNS:DeleteTopic\n - SNS:AddPermission\n conditions:\n - test: StringEquals\n variable: AWS:SourceOwner\n values:\n - ${sns\"account-id\"[%!s(MISSING)]}\n effect: Allow\n principals:\n - type: AWS\n identifiers:\n - '*'\n resources:\n - arn:aws:sns:${sns.region}:${sns\"account-id\"[%!s(MISSING)]}:${sns.name}\n sid: __default_statement_ID\n - actions:\n - SNS:Subscribe\n - SNS:Receive\n conditions:\n - test: StringLike\n variable: SNS:Endpoint\n values:\n - arn:aws:sqs:${sqs.region}:${sqs\"account-id\"[%!s(MISSING)]}:${sqs.name}\n effect: Allow\n principals:\n - type: AWS\n identifiers:\n - '*'\n resources:\n - arn:aws:sns:${sns.region}:${sns\"account-id\"[%!s(MISSING)]}:${sns.name}\n sid: __console_sub_0\n sqsQueuePolicy:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n policyId: arn:aws:sqs:${sqs.region}:${sqs\"account-id\"[%!s(MISSING)]}:${sqs.name}/SQSDefaultPolicy\n statements:\n - sid: example-sns-topic\n effect: Allow\n principals:\n - type: AWS\n identifiers:\n - '*'\n actions:\n - SQS:SendMessage\n resources:\n - arn:aws:sqs:${sqs.region}:${sqs\"account-id\"[%!s(MISSING)]}:${sqs.name}\n conditions:\n - test: ArnEquals\n variable: aws:SourceArn\n values:\n - arn:aws:sns:${sns.region}:${sns\"account-id\"[%!s(MISSING)]}:${sns.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example with Delivery Policy\n\nThis example demonstrates how to define a \u003cspan pulumi-lang-nodejs=\"`deliveryPolicy`\" pulumi-lang-dotnet=\"`DeliveryPolicy`\" pulumi-lang-go=\"`deliveryPolicy`\" pulumi-lang-python=\"`delivery_policy`\" pulumi-lang-yaml=\"`deliveryPolicy`\" pulumi-lang-java=\"`deliveryPolicy`\"\u003e`delivery_policy`\u003c/span\u003e for an HTTPS subscription. Unlike the \u003cspan pulumi-lang-nodejs=\"`aws.sns.Topic`\" pulumi-lang-dotnet=\"`aws.sns.Topic`\" pulumi-lang-go=\"`sns.Topic`\" pulumi-lang-python=\"`sns.Topic`\" pulumi-lang-yaml=\"`aws.sns.Topic`\" pulumi-lang-java=\"`aws.sns.Topic`\"\u003e`aws.sns.Topic`\u003c/span\u003e resource, the \u003cspan pulumi-lang-nodejs=\"`deliveryPolicy`\" pulumi-lang-dotnet=\"`DeliveryPolicy`\" pulumi-lang-go=\"`deliveryPolicy`\" pulumi-lang-python=\"`delivery_policy`\" pulumi-lang-yaml=\"`deliveryPolicy`\" pulumi-lang-java=\"`deliveryPolicy`\"\u003e`delivery_policy`\u003c/span\u003e for \u003cspan pulumi-lang-nodejs=\"`aws.sns.TopicSubscription`\" pulumi-lang-dotnet=\"`aws.sns.TopicSubscription`\" pulumi-lang-go=\"`sns.TopicSubscription`\" pulumi-lang-python=\"`sns.TopicSubscription`\" pulumi-lang-yaml=\"`aws.sns.TopicSubscription`\" pulumi-lang-java=\"`aws.sns.TopicSubscription`\"\u003e`aws.sns.TopicSubscription`\u003c/span\u003e should not be wrapped in an `\"http\"` object.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleWithDeliveryPolicy = new aws.sns.TopicSubscription(\"example_with_delivery_policy\", {\n topic: \"arn:aws:sns:us-west-2:123456789012:my-topic\",\n protocol: \"https\",\n endpoint: \"https://example.com/endpoint\",\n rawMessageDelivery: true,\n deliveryPolicy: `{\n \\\\\"healthyRetryPolicy\\\\\": {\n \\\\\"minDelayTarget\\\\\": 20,\n \\\\\"maxDelayTarget\\\\\": 20,\n \\\\\"numRetries\\\\\": 3,\n \\\\\"numMaxDelayRetries\\\\\": 0,\n \\\\\"numNoDelayRetries\\\\\": 0,\n \\\\\"numMinDelayRetries\\\\\": 0,\n \\\\\"backoffFunction\\\\\": \\\\\"linear\\\\\"\n },\n \\\\\"sicklyRetryPolicy\\\\\": null,\n \\\\\"throttlePolicy\\\\\": null,\n \\\\\"requestPolicy\\\\\": {\n \\\\\"headerContentType\\\\\": \\\\\"text/plain; application/json\\\\\"\n },\n \\\\\"guaranteed\\\\\": false\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_with_delivery_policy = aws.sns.TopicSubscription(\"example_with_delivery_policy\",\n topic=\"arn:aws:sns:us-west-2:123456789012:my-topic\",\n protocol=\"https\",\n endpoint=\"https://example.com/endpoint\",\n raw_message_delivery=True,\n delivery_policy=\"\"\"{\n \\\"healthyRetryPolicy\\\": {\n \\\"minDelayTarget\\\": 20,\n \\\"maxDelayTarget\\\": 20,\n \\\"numRetries\\\": 3,\n \\\"numMaxDelayRetries\\\": 0,\n \\\"numNoDelayRetries\\\": 0,\n \\\"numMinDelayRetries\\\": 0,\n \\\"backoffFunction\\\": \\\"linear\\\"\n },\n \\\"sicklyRetryPolicy\\\": null,\n \\\"throttlePolicy\\\": null,\n \\\"requestPolicy\\\": {\n \\\"headerContentType\\\": \\\"text/plain; application/json\\\"\n },\n \\\"guaranteed\\\": false\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleWithDeliveryPolicy = new Aws.Sns.TopicSubscription(\"example_with_delivery_policy\", new()\n {\n Topic = \"arn:aws:sns:us-west-2:123456789012:my-topic\",\n Protocol = \"https\",\n Endpoint = \"https://example.com/endpoint\",\n RawMessageDelivery = true,\n DeliveryPolicy = @\"{\n \\\"\"healthyRetryPolicy\\\"\": {\n \\\"\"minDelayTarget\\\"\": 20,\n \\\"\"maxDelayTarget\\\"\": 20,\n \\\"\"numRetries\\\"\": 3,\n \\\"\"numMaxDelayRetries\\\"\": 0,\n \\\"\"numNoDelayRetries\\\"\": 0,\n \\\"\"numMinDelayRetries\\\"\": 0,\n \\\"\"backoffFunction\\\"\": \\\"\"linear\\\"\"\n },\n \\\"\"sicklyRetryPolicy\\\"\": null,\n \\\"\"throttlePolicy\\\"\": null,\n \\\"\"requestPolicy\\\"\": {\n \\\"\"headerContentType\\\"\": \\\"\"text/plain; application/json\\\"\"\n },\n \\\"\"guaranteed\\\"\": false\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sns.NewTopicSubscription(ctx, \"example_with_delivery_policy\", \u0026sns.TopicSubscriptionArgs{\n\t\t\tTopic: pulumi.Any(\"arn:aws:sns:us-west-2:123456789012:my-topic\"),\n\t\t\tProtocol: pulumi.String(\"https\"),\n\t\t\tEndpoint: pulumi.String(\"https://example.com/endpoint\"),\n\t\t\tRawMessageDelivery: pulumi.Bool(true),\n\t\t\tDeliveryPolicy: pulumi.String(`{\n \\\"healthyRetryPolicy\\\": {\n \\\"minDelayTarget\\\": 20,\n \\\"maxDelayTarget\\\": 20,\n \\\"numRetries\\\": 3,\n \\\"numMaxDelayRetries\\\": 0,\n \\\"numNoDelayRetries\\\": 0,\n \\\"numMinDelayRetries\\\": 0,\n \\\"backoffFunction\\\": \\\"linear\\\"\n },\n \\\"sicklyRetryPolicy\\\": null,\n \\\"throttlePolicy\\\": null,\n \\\"requestPolicy\\\": {\n \\\"headerContentType\\\": \\\"text/plain; application/json\\\"\n },\n \\\"guaranteed\\\": false\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sns.TopicSubscription;\nimport com.pulumi.aws.sns.TopicSubscriptionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleWithDeliveryPolicy = new TopicSubscription(\"exampleWithDeliveryPolicy\", TopicSubscriptionArgs.builder()\n .topic(\"arn:aws:sns:us-west-2:123456789012:my-topic\")\n .protocol(\"https\")\n .endpoint(\"https://example.com/endpoint\")\n .rawMessageDelivery(true)\n .deliveryPolicy(\"\"\"\n{\n \\\"healthyRetryPolicy\\\": {\n \\\"minDelayTarget\\\": 20,\n \\\"maxDelayTarget\\\": 20,\n \\\"numRetries\\\": 3,\n \\\"numMaxDelayRetries\\\": 0,\n \\\"numNoDelayRetries\\\": 0,\n \\\"numMinDelayRetries\\\": 0,\n \\\"backoffFunction\\\": \\\"linear\\\"\n },\n \\\"sicklyRetryPolicy\\\": null,\n \\\"throttlePolicy\\\": null,\n \\\"requestPolicy\\\": {\n \\\"headerContentType\\\": \\\"text/plain; application/json\\\"\n },\n \\\"guaranteed\\\": false\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleWithDeliveryPolicy:\n type: aws:sns:TopicSubscription\n name: example_with_delivery_policy\n properties:\n topic: arn:aws:sns:us-west-2:123456789012:my-topic\n protocol: https\n endpoint: https://example.com/endpoint\n rawMessageDelivery: true\n deliveryPolicy: |\n {\n \\\"healthyRetryPolicy\\\": {\n \\\"minDelayTarget\\\": 20,\n \\\"maxDelayTarget\\\": 20,\n \\\"numRetries\\\": 3,\n \\\"numMaxDelayRetries\\\": 0,\n \\\"numNoDelayRetries\\\": 0,\n \\\"numMinDelayRetries\\\": 0,\n \\\"backoffFunction\\\": \\\"linear\\\"\n },\n \\\"sicklyRetryPolicy\\\": null,\n \\\"throttlePolicy\\\": null,\n \\\"requestPolicy\\\": {\n \\\"headerContentType\\\": \\\"text/plain; application/json\\\"\n },\n \\\"guaranteed\\\": false\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n- `arn` (String) Amazon Resource Name (ARN) of the SNS topic subscription.\n\nUsing `pulumi import`, import SNS Topic Subscriptions using the subscription `arn`. For example:\n\nconsole\n\n% pulumi import aws_sns_topic_subscription.user_updates_sqs_target arn:aws:sns:us-west-2:123456789012:my-topic:8a21d249-4329-4871-acc6-7be709c6ea7f\n\n", "properties": { "arn": { "type": "string", @@ -408203,7 +408203,7 @@ } }, "aws:ssm/association:Association": { - "description": "Associates an SSM Document to an instance or EC2 tag.\n\n## Example Usage\n\n### Create an association for a specific instance\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ssm.Association(\"example\", {\n name: exampleAwsSsmDocument.name,\n targets: [{\n key: \"InstanceIds\",\n values: [exampleAwsInstance.id],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ssm.Association(\"example\",\n name=example_aws_ssm_document[\"name\"],\n targets=[{\n \"key\": \"InstanceIds\",\n \"values\": [example_aws_instance[\"id\"]],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ssm.Association(\"example\", new()\n {\n Name = exampleAwsSsmDocument.Name,\n Targets = new[]\n {\n new Aws.Ssm.Inputs.AssociationTargetArgs\n {\n Key = \"InstanceIds\",\n Values = new[]\n {\n exampleAwsInstance.Id,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ssm.NewAssociation(ctx, \"example\", \u0026ssm.AssociationArgs{\n\t\t\tName: pulumi.Any(exampleAwsSsmDocument.Name),\n\t\t\tTargets: ssm.AssociationTargetArray{\n\t\t\t\t\u0026ssm.AssociationTargetArgs{\n\t\t\t\t\tKey: pulumi.String(\"InstanceIds\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\texampleAwsInstance.Id,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ssm.Association;\nimport com.pulumi.aws.ssm.AssociationArgs;\nimport com.pulumi.aws.ssm.inputs.AssociationTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Association(\"example\", AssociationArgs.builder()\n .name(exampleAwsSsmDocument.name())\n .targets(AssociationTargetArgs.builder()\n .key(\"InstanceIds\")\n .values(exampleAwsInstance.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ssm:Association\n properties:\n name: ${exampleAwsSsmDocument.name}\n targets:\n - key: InstanceIds\n values:\n - ${exampleAwsInstance.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create an association for all managed instances in an AWS account\n\nTo target all managed instances in an AWS account, set the \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e as `\"InstanceIds\"` with \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e set as `[\"*\"]`. This example also illustrates how to use an Amazon owned SSM document named `AmazonCloudWatch-ManageAgent`.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ssm.Association(\"example\", {\n name: \"AmazonCloudWatch-ManageAgent\",\n targets: [{\n key: \"InstanceIds\",\n values: [\"*\"],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ssm.Association(\"example\",\n name=\"AmazonCloudWatch-ManageAgent\",\n targets=[{\n \"key\": \"InstanceIds\",\n \"values\": [\"*\"],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ssm.Association(\"example\", new()\n {\n Name = \"AmazonCloudWatch-ManageAgent\",\n Targets = new[]\n {\n new Aws.Ssm.Inputs.AssociationTargetArgs\n {\n Key = \"InstanceIds\",\n Values = new[]\n {\n \"*\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ssm.NewAssociation(ctx, \"example\", \u0026ssm.AssociationArgs{\n\t\t\tName: pulumi.String(\"AmazonCloudWatch-ManageAgent\"),\n\t\t\tTargets: ssm.AssociationTargetArray{\n\t\t\t\t\u0026ssm.AssociationTargetArgs{\n\t\t\t\t\tKey: pulumi.String(\"InstanceIds\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ssm.Association;\nimport com.pulumi.aws.ssm.AssociationArgs;\nimport com.pulumi.aws.ssm.inputs.AssociationTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Association(\"example\", AssociationArgs.builder()\n .name(\"AmazonCloudWatch-ManageAgent\")\n .targets(AssociationTargetArgs.builder()\n .key(\"InstanceIds\")\n .values(\"*\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ssm:Association\n properties:\n name: AmazonCloudWatch-ManageAgent\n targets:\n - key: InstanceIds\n values:\n - '*'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create an association for a specific tag\n\nThis example shows how to target all managed instances that are assigned a tag key of `Environment` and value of `Development`.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ssm.Association(\"example\", {\n name: \"AmazonCloudWatch-ManageAgent\",\n targets: [{\n key: \"tag:Environment\",\n values: [\"Development\"],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ssm.Association(\"example\",\n name=\"AmazonCloudWatch-ManageAgent\",\n targets=[{\n \"key\": \"tag:Environment\",\n \"values\": [\"Development\"],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ssm.Association(\"example\", new()\n {\n Name = \"AmazonCloudWatch-ManageAgent\",\n Targets = new[]\n {\n new Aws.Ssm.Inputs.AssociationTargetArgs\n {\n Key = \"tag:Environment\",\n Values = new[]\n {\n \"Development\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ssm.NewAssociation(ctx, \"example\", \u0026ssm.AssociationArgs{\n\t\t\tName: pulumi.String(\"AmazonCloudWatch-ManageAgent\"),\n\t\t\tTargets: ssm.AssociationTargetArray{\n\t\t\t\t\u0026ssm.AssociationTargetArgs{\n\t\t\t\t\tKey: pulumi.String(\"tag:Environment\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"Development\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ssm.Association;\nimport com.pulumi.aws.ssm.AssociationArgs;\nimport com.pulumi.aws.ssm.inputs.AssociationTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Association(\"example\", AssociationArgs.builder()\n .name(\"AmazonCloudWatch-ManageAgent\")\n .targets(AssociationTargetArgs.builder()\n .key(\"tag:Environment\")\n .values(\"Development\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ssm:Association\n properties:\n name: AmazonCloudWatch-ManageAgent\n targets:\n - key: tag:Environment\n values:\n - Development\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create an association with a specific schedule\n\nThis example shows how to schedule an association in various ways.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ssm.Association(\"example\", {\n name: exampleAwsSsmDocument.name,\n scheduleExpression: \"cron(0 2 ? * SUN *)\",\n targets: [{\n key: \"InstanceIds\",\n values: [exampleAwsInstance.id],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ssm.Association(\"example\",\n name=example_aws_ssm_document[\"name\"],\n schedule_expression=\"cron(0 2 ? * SUN *)\",\n targets=[{\n \"key\": \"InstanceIds\",\n \"values\": [example_aws_instance[\"id\"]],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ssm.Association(\"example\", new()\n {\n Name = exampleAwsSsmDocument.Name,\n ScheduleExpression = \"cron(0 2 ? * SUN *)\",\n Targets = new[]\n {\n new Aws.Ssm.Inputs.AssociationTargetArgs\n {\n Key = \"InstanceIds\",\n Values = new[]\n {\n exampleAwsInstance.Id,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ssm.NewAssociation(ctx, \"example\", \u0026ssm.AssociationArgs{\n\t\t\tName: pulumi.Any(exampleAwsSsmDocument.Name),\n\t\t\tScheduleExpression: pulumi.String(\"cron(0 2 ? * SUN *)\"),\n\t\t\tTargets: ssm.AssociationTargetArray{\n\t\t\t\t\u0026ssm.AssociationTargetArgs{\n\t\t\t\t\tKey: pulumi.String(\"InstanceIds\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\texampleAwsInstance.Id,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ssm.Association;\nimport com.pulumi.aws.ssm.AssociationArgs;\nimport com.pulumi.aws.ssm.inputs.AssociationTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Association(\"example\", AssociationArgs.builder()\n .name(exampleAwsSsmDocument.name())\n .scheduleExpression(\"cron(0 2 ? * SUN *)\")\n .targets(AssociationTargetArgs.builder()\n .key(\"InstanceIds\")\n .values(exampleAwsInstance.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ssm:Association\n properties:\n name: ${exampleAwsSsmDocument.name}\n scheduleExpression: cron(0 2 ? * SUN *)\n targets:\n - key: InstanceIds\n values:\n - ${exampleAwsInstance.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create an association with multiple instances with their instance ids\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\n// First EC2 instance\nconst webServer1 = new aws.ec2.Instance(\"web_server_1\", {\n ami: amazonLinux.id,\n instanceType: aws.ec2.InstanceType.T3_Micro,\n subnetId: _public.id,\n vpcSecurityGroupIds: [ec2Sg.id],\n iamInstanceProfile: ec2SsmProfile.name,\n userData: `#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n`,\n});\n// Second EC2 instance\nconst webServer2 = new aws.ec2.Instance(\"web_server_2\", {\n ami: amazonLinux.id,\n instanceType: aws.ec2.InstanceType.T3_Micro,\n subnetId: _public.id,\n vpcSecurityGroupIds: [ec2Sg.id],\n iamInstanceProfile: ec2SsmProfile.name,\n userData: `#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n`,\n});\n// Removed EC2 provisioning dependencies for brevity\nconst systemUpdate = new aws.ssm.Association(\"system_update\", {\n name: \"AWS-RunShellScript\",\n targets: [{\n key: \"InstanceIds\",\n values: [\n webServer1.id,\n webServer2.id,\n ],\n }],\n scheduleExpression: \"cron(0 2 ? * SUN *)\",\n parameters: {\n commands: std.join({\n separator: \"\\n\",\n input: [\n \"#!/bin/bash\",\n \"echo 'Starting system update on $(hostname)'\",\n \"echo 'Instance ID: $(curl -s http://169.254.169.254/latest/meta-data/instance-id)'\",\n \"yum update -y\",\n \"echo 'System update completed successfully'\",\n \"systemctl status httpd\",\n \"df -h\",\n \"free -m\",\n ],\n }).then(invoke =\u003e invoke.result),\n workingDirectory: \"/tmp\",\n executionTimeout: \"3600\",\n },\n associationName: \"weekly-system-update\",\n complianceSeverity: \"MEDIUM\",\n maxConcurrency: \"1\",\n maxErrors: \"0\",\n tags: {\n Name: \"Weekly System Update\",\n Environment: \"demo\",\n Purpose: \"maintenance\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\n# First EC2 instance\nweb_server1 = aws.ec2.Instance(\"web_server_1\",\n ami=amazon_linux[\"id\"],\n instance_type=aws.ec2.InstanceType.T3_MICRO,\n subnet_id=public[\"id\"],\n vpc_security_group_ids=[ec2_sg[\"id\"]],\n iam_instance_profile=ec2_ssm_profile[\"name\"],\n user_data=\"\"\"#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n\"\"\")\n# Second EC2 instance\nweb_server2 = aws.ec2.Instance(\"web_server_2\",\n ami=amazon_linux[\"id\"],\n instance_type=aws.ec2.InstanceType.T3_MICRO,\n subnet_id=public[\"id\"],\n vpc_security_group_ids=[ec2_sg[\"id\"]],\n iam_instance_profile=ec2_ssm_profile[\"name\"],\n user_data=\"\"\"#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n\"\"\")\n# Removed EC2 provisioning dependencies for brevity\nsystem_update = aws.ssm.Association(\"system_update\",\n name=\"AWS-RunShellScript\",\n targets=[{\n \"key\": \"InstanceIds\",\n \"values\": [\n web_server1.id,\n web_server2.id,\n ],\n }],\n schedule_expression=\"cron(0 2 ? * SUN *)\",\n parameters={\n \"commands\": std.join(separator=\"\\n\",\n input=[\n \"#!/bin/bash\",\n \"echo 'Starting system update on $(hostname)'\",\n \"echo 'Instance ID: $(curl -s http://169.254.169.254/latest/meta-data/instance-id)'\",\n \"yum update -y\",\n \"echo 'System update completed successfully'\",\n \"systemctl status httpd\",\n \"df -h\",\n \"free -m\",\n ]).result,\n \"workingDirectory\": \"/tmp\",\n \"executionTimeout\": \"3600\",\n },\n association_name=\"weekly-system-update\",\n compliance_severity=\"MEDIUM\",\n max_concurrency=\"1\",\n max_errors=\"0\",\n tags={\n \"Name\": \"Weekly System Update\",\n \"Environment\": \"demo\",\n \"Purpose\": \"maintenance\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // First EC2 instance\n var webServer1 = new Aws.Ec2.Instance(\"web_server_1\", new()\n {\n Ami = amazonLinux.Id,\n InstanceType = Aws.Ec2.InstanceType.T3_Micro,\n SubnetId = @public.Id,\n VpcSecurityGroupIds = new[]\n {\n ec2Sg.Id,\n },\n IamInstanceProfile = ec2SsmProfile.Name,\n UserData = @\"#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n\",\n });\n\n // Second EC2 instance\n var webServer2 = new Aws.Ec2.Instance(\"web_server_2\", new()\n {\n Ami = amazonLinux.Id,\n InstanceType = Aws.Ec2.InstanceType.T3_Micro,\n SubnetId = @public.Id,\n VpcSecurityGroupIds = new[]\n {\n ec2Sg.Id,\n },\n IamInstanceProfile = ec2SsmProfile.Name,\n UserData = @\"#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n\",\n });\n\n // Removed EC2 provisioning dependencies for brevity\n var systemUpdate = new Aws.Ssm.Association(\"system_update\", new()\n {\n Name = \"AWS-RunShellScript\",\n Targets = new[]\n {\n new Aws.Ssm.Inputs.AssociationTargetArgs\n {\n Key = \"InstanceIds\",\n Values = new[]\n {\n webServer1.Id,\n webServer2.Id,\n },\n },\n },\n ScheduleExpression = \"cron(0 2 ? * SUN *)\",\n Parameters = \n {\n { \"commands\", Std.Join.Invoke(new()\n {\n Separator = @\"\n\",\n Input = new[]\n {\n \"#!/bin/bash\",\n \"echo 'Starting system update on $(hostname)'\",\n \"echo 'Instance ID: $(curl -s http://169.254.169.254/latest/meta-data/instance-id)'\",\n \"yum update -y\",\n \"echo 'System update completed successfully'\",\n \"systemctl status httpd\",\n \"df -h\",\n \"free -m\",\n },\n }).Apply(invoke =\u003e invoke.Result) },\n { \"workingDirectory\", \"/tmp\" },\n { \"executionTimeout\", \"3600\" },\n },\n AssociationName = \"weekly-system-update\",\n ComplianceSeverity = \"MEDIUM\",\n MaxConcurrency = \"1\",\n MaxErrors = \"0\",\n Tags = \n {\n { \"Name\", \"Weekly System Update\" },\n { \"Environment\", \"demo\" },\n { \"Purpose\", \"maintenance\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// First EC2 instance\n\t\twebServer1, err := ec2.NewInstance(ctx, \"web_server_1\", \u0026ec2.InstanceArgs{\n\t\t\tAmi: pulumi.Any(amazonLinux.Id),\n\t\t\tInstanceType: pulumi.String(ec2.InstanceType_T3_Micro),\n\t\t\tSubnetId: pulumi.Any(public.Id),\n\t\t\tVpcSecurityGroupIds: pulumi.StringArray{\n\t\t\t\tec2Sg.Id,\n\t\t\t},\n\t\t\tIamInstanceProfile: pulumi.Any(ec2SsmProfile.Name),\n\t\t\tUserData: pulumi.String(`#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Second EC2 instance\n\t\twebServer2, err := ec2.NewInstance(ctx, \"web_server_2\", \u0026ec2.InstanceArgs{\n\t\t\tAmi: pulumi.Any(amazonLinux.Id),\n\t\t\tInstanceType: pulumi.String(ec2.InstanceType_T3_Micro),\n\t\t\tSubnetId: pulumi.Any(public.Id),\n\t\t\tVpcSecurityGroupIds: pulumi.StringArray{\n\t\t\t\tec2Sg.Id,\n\t\t\t},\n\t\t\tIamInstanceProfile: pulumi.Any(ec2SsmProfile.Name),\n\t\t\tUserData: pulumi.String(`#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeJoin, err := std.Join(ctx, \u0026std.JoinArgs{\n\t\t\tSeparator: \"\\n\",\n\t\t\tInput: []string{\n\t\t\t\t\"#!/bin/bash\",\n\t\t\t\t\"echo 'Starting system update on $(hostname)'\",\n\t\t\t\t\"echo 'Instance ID: $(curl -s http://169.254.169.254/latest/meta-data/instance-id)'\",\n\t\t\t\t\"yum update -y\",\n\t\t\t\t\"echo 'System update completed successfully'\",\n\t\t\t\t\"systemctl status httpd\",\n\t\t\t\t\"df -h\",\n\t\t\t\t\"free -m\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Removed EC2 provisioning dependencies for brevity\n\t\t_, err = ssm.NewAssociation(ctx, \"system_update\", \u0026ssm.AssociationArgs{\n\t\t\tName: pulumi.String(\"AWS-RunShellScript\"),\n\t\t\tTargets: ssm.AssociationTargetArray{\n\t\t\t\t\u0026ssm.AssociationTargetArgs{\n\t\t\t\t\tKey: pulumi.String(\"InstanceIds\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\twebServer1.ID(),\n\t\t\t\t\t\twebServer2.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tScheduleExpression: pulumi.String(\"cron(0 2 ? * SUN *)\"),\n\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\"commands\": pulumi.String(invokeJoin.Result),\n\t\t\t\t\"workingDirectory\": pulumi.String(\"/tmp\"),\n\t\t\t\t\"executionTimeout\": pulumi.String(\"3600\"),\n\t\t\t},\n\t\t\tAssociationName: pulumi.String(\"weekly-system-update\"),\n\t\t\tComplianceSeverity: pulumi.String(\"MEDIUM\"),\n\t\t\tMaxConcurrency: pulumi.String(\"1\"),\n\t\t\tMaxErrors: pulumi.String(\"0\"),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"Weekly System Update\"),\n\t\t\t\t\"Environment\": pulumi.String(\"demo\"),\n\t\t\t\t\"Purpose\": pulumi.String(\"maintenance\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.Instance;\nimport com.pulumi.aws.ec2.InstanceArgs;\nimport com.pulumi.aws.ssm.Association;\nimport com.pulumi.aws.ssm.AssociationArgs;\nimport com.pulumi.aws.ssm.inputs.AssociationTargetArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.JoinArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // First EC2 instance\n var webServer1 = new Instance(\"webServer1\", InstanceArgs.builder()\n .ami(amazonLinux.id())\n .instanceType(\"t3.micro\")\n .subnetId(public_.id())\n .vpcSecurityGroupIds(ec2Sg.id())\n .iamInstanceProfile(ec2SsmProfile.name())\n .userData(\"\"\"\n#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \"\"\")\n .build());\n\n // Second EC2 instance\n var webServer2 = new Instance(\"webServer2\", InstanceArgs.builder()\n .ami(amazonLinux.id())\n .instanceType(\"t3.micro\")\n .subnetId(public_.id())\n .vpcSecurityGroupIds(ec2Sg.id())\n .iamInstanceProfile(ec2SsmProfile.name())\n .userData(\"\"\"\n#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \"\"\")\n .build());\n\n // Removed EC2 provisioning dependencies for brevity\n var systemUpdate = new Association(\"systemUpdate\", AssociationArgs.builder()\n .name(\"AWS-RunShellScript\")\n .targets(AssociationTargetArgs.builder()\n .key(\"InstanceIds\")\n .values( \n webServer1.id(),\n webServer2.id())\n .build())\n .scheduleExpression(\"cron(0 2 ? * SUN *)\")\n .parameters(Map.ofEntries(\n Map.entry(\"commands\", StdFunctions.join(JoinArgs.builder()\n .separator(\"\"\"\n\n \"\"\")\n .input( \n \"#!/bin/bash\",\n \"echo 'Starting system update on $(hostname)'\",\n \"echo 'Instance ID: $(curl -s http://169.254.169.254/latest/meta-data/instance-id)'\",\n \"yum update -y\",\n \"echo 'System update completed successfully'\",\n \"systemctl status httpd\",\n \"df -h\",\n \"free -m\")\n .build()).result()),\n Map.entry(\"workingDirectory\", \"/tmp\"),\n Map.entry(\"executionTimeout\", \"3600\")\n ))\n .associationName(\"weekly-system-update\")\n .complianceSeverity(\"MEDIUM\")\n .maxConcurrency(\"1\")\n .maxErrors(\"0\")\n .tags(Map.ofEntries(\n Map.entry(\"Name\", \"Weekly System Update\"),\n Map.entry(\"Environment\", \"demo\"),\n Map.entry(\"Purpose\", \"maintenance\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Removed EC2 provisioning dependencies for brevity\n systemUpdate:\n type: aws:ssm:Association\n name: system_update\n properties:\n name: AWS-RunShellScript\n targets:\n - key: InstanceIds\n values:\n - ${webServer1.id}\n - ${webServer2.id}\n scheduleExpression: cron(0 2 ? * SUN *)\n parameters:\n commands:\n fn::invoke:\n function: std:join\n arguments:\n separator: |2+\n input:\n - '#!/bin/bash'\n - echo 'Starting system update on $(hostname)'\n - 'echo ''Instance ID: $(curl -s http://169.254.169.254/latest/meta-data/instance-id)'''\n - yum update -y\n - echo 'System update completed successfully'\n - systemctl status httpd\n - df -h\n - free -m\n return: result\n workingDirectory: /tmp\n executionTimeout: '3600'\n associationName: weekly-system-update\n complianceSeverity: MEDIUM\n maxConcurrency: '1'\n maxErrors: '0'\n tags:\n Name: Weekly System Update\n Environment: demo\n Purpose: maintenance\n # First EC2 instance\n webServer1:\n type: aws:ec2:Instance\n name: web_server_1\n properties:\n ami: ${amazonLinux.id}\n instanceType: t3.micro\n subnetId: ${public.id}\n vpcSecurityGroupIds:\n - ${ec2Sg.id}\n iamInstanceProfile: ${ec2SsmProfile.name}\n userData: |\n #!/bin/bash\n yum update -y\n yum install -y amazon-ssm-agent\n systemctl enable amazon-ssm-agent\n systemctl start amazon-ssm-agent\n # Second EC2 instance\n webServer2:\n type: aws:ec2:Instance\n name: web_server_2\n properties:\n ami: ${amazonLinux.id}\n instanceType: t3.micro\n subnetId: ${public.id}\n vpcSecurityGroupIds:\n - ${ec2Sg.id}\n iamInstanceProfile: ${ec2SsmProfile.name}\n userData: |\n #!/bin/bash\n yum update -y\n yum install -y amazon-ssm-agent\n systemctl enable amazon-ssm-agent\n systemctl start amazon-ssm-agent\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create an association with multiple instances with their values matching their tags\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\n// SSM Association for Webbased Servers\nconst databaseAssociation = new aws.ssm.Association(\"database_association\", {\n name: systemUpdate.name,\n targets: [{\n key: \"tag:Role\",\n values: [\n \"WebServer\",\n \"Database\",\n ],\n }],\n parameters: {\n restartServices: \"true\",\n },\n scheduleExpression: \"cron(0 3 ? * SUN *)\",\n});\n// EC2 Instance 1 - Web Server with \"ServerType\" tag\nconst webServer = new aws.ec2.Instance(\"web_server\", {\n ami: amazonLinux.id,\n instanceType: aws.ec2.InstanceType.T3_Micro,\n subnetId: _default.id,\n vpcSecurityGroupIds: [ec2Sg.id],\n iamInstanceProfile: ec2SsmProfile.name,\n userData: std.base64encode({\n input: `#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \n# Install Apache web server\nyum install -y httpd\nsystemctl enable httpd\nsystemctl start httpd\necho \"\u003ch1\u003eWeb Server - ${prefix}\u003c/h1\u003e\" \u003e /var/www/html/index.html\n`,\n }).then(invoke =\u003e invoke.result),\n tags: {\n Name: `${prefix}-web-server`,\n ServerType: \"WebServer\",\n Role: \"WebServer\",\n Environment: environment,\n Owner: owner,\n },\n});\n// EC2 Instance 2 - Database Server with \"Role\" tag\nconst databaseServer = new aws.ec2.Instance(\"database_server\", {\n ami: amazonLinux.id,\n instanceType: aws.ec2.InstanceType.T3_Micro,\n subnetId: _default.id,\n vpcSecurityGroupIds: [ec2Sg.id],\n iamInstanceProfile: ec2SsmProfile.name,\n userData: std.base64encode({\n input: `#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \n# Install MySQL\nyum install -y mysql-server\nsystemctl enable mysqld\nsystemctl start mysqld\n`,\n }).then(invoke =\u003e invoke.result),\n tags: {\n Name: `${prefix}-database-server`,\n Role: \"Database\",\n Environment: environment,\n Owner: owner,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\n# SSM Association for Webbased Servers\ndatabase_association = aws.ssm.Association(\"database_association\",\n name=system_update[\"name\"],\n targets=[{\n \"key\": \"tag:Role\",\n \"values\": [\n \"WebServer\",\n \"Database\",\n ],\n }],\n parameters={\n \"restartServices\": \"true\",\n },\n schedule_expression=\"cron(0 3 ? * SUN *)\")\n# EC2 Instance 1 - Web Server with \"ServerType\" tag\nweb_server = aws.ec2.Instance(\"web_server\",\n ami=amazon_linux[\"id\"],\n instance_type=aws.ec2.InstanceType.T3_MICRO,\n subnet_id=default[\"id\"],\n vpc_security_group_ids=[ec2_sg[\"id\"]],\n iam_instance_profile=ec2_ssm_profile[\"name\"],\n user_data=std.base64encode(input=f\"\"\"#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \n# Install Apache web server\nyum install -y httpd\nsystemctl enable httpd\nsystemctl start httpd\necho \"\u003ch1\u003eWeb Server - {prefix}\u003c/h1\u003e\" \u003e /var/www/html/index.html\n\"\"\").result,\n tags={\n \"Name\": f\"{prefix}-web-server\",\n \"ServerType\": \"WebServer\",\n \"Role\": \"WebServer\",\n \"Environment\": environment,\n \"Owner\": owner,\n })\n# EC2 Instance 2 - Database Server with \"Role\" tag\ndatabase_server = aws.ec2.Instance(\"database_server\",\n ami=amazon_linux[\"id\"],\n instance_type=aws.ec2.InstanceType.T3_MICRO,\n subnet_id=default[\"id\"],\n vpc_security_group_ids=[ec2_sg[\"id\"]],\n iam_instance_profile=ec2_ssm_profile[\"name\"],\n user_data=std.base64encode(input=\"\"\"#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \n# Install MySQL\nyum install -y mysql-server\nsystemctl enable mysqld\nsystemctl start mysqld\n\"\"\").result,\n tags={\n \"Name\": f\"{prefix}-database-server\",\n \"Role\": \"Database\",\n \"Environment\": environment,\n \"Owner\": owner,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // SSM Association for Webbased Servers\n var databaseAssociation = new Aws.Ssm.Association(\"database_association\", new()\n {\n Name = systemUpdate.Name,\n Targets = new[]\n {\n new Aws.Ssm.Inputs.AssociationTargetArgs\n {\n Key = \"tag:Role\",\n Values = new[]\n {\n \"WebServer\",\n \"Database\",\n },\n },\n },\n Parameters = \n {\n { \"restartServices\", \"true\" },\n },\n ScheduleExpression = \"cron(0 3 ? * SUN *)\",\n });\n\n // EC2 Instance 1 - Web Server with \"ServerType\" tag\n var webServer = new Aws.Ec2.Instance(\"web_server\", new()\n {\n Ami = amazonLinux.Id,\n InstanceType = Aws.Ec2.InstanceType.T3_Micro,\n SubnetId = @default.Id,\n VpcSecurityGroupIds = new[]\n {\n ec2Sg.Id,\n },\n IamInstanceProfile = ec2SsmProfile.Name,\n UserData = Std.Base64encode.Invoke(new()\n {\n Input = @$\"#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \n# Install Apache web server\nyum install -y httpd\nsystemctl enable httpd\nsystemctl start httpd\necho \"\"\u003ch1\u003eWeb Server - {prefix}\u003c/h1\u003e\"\" \u003e /var/www/html/index.html\n\",\n }).Apply(invoke =\u003e invoke.Result),\n Tags = \n {\n { \"Name\", $\"{prefix}-web-server\" },\n { \"ServerType\", \"WebServer\" },\n { \"Role\", \"WebServer\" },\n { \"Environment\", environment },\n { \"Owner\", owner },\n },\n });\n\n // EC2 Instance 2 - Database Server with \"Role\" tag\n var databaseServer = new Aws.Ec2.Instance(\"database_server\", new()\n {\n Ami = amazonLinux.Id,\n InstanceType = Aws.Ec2.InstanceType.T3_Micro,\n SubnetId = @default.Id,\n VpcSecurityGroupIds = new[]\n {\n ec2Sg.Id,\n },\n IamInstanceProfile = ec2SsmProfile.Name,\n UserData = Std.Base64encode.Invoke(new()\n {\n Input = @\"#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \n# Install MySQL\nyum install -y mysql-server\nsystemctl enable mysqld\nsystemctl start mysqld\n\",\n }).Apply(invoke =\u003e invoke.Result),\n Tags = \n {\n { \"Name\", $\"{prefix}-database-server\" },\n { \"Role\", \"Database\" },\n { \"Environment\", environment },\n { \"Owner\", owner },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// SSM Association for Webbased Servers\n\t\t_, err := ssm.NewAssociation(ctx, \"database_association\", \u0026ssm.AssociationArgs{\n\t\t\tName: pulumi.Any(systemUpdate.Name),\n\t\t\tTargets: ssm.AssociationTargetArray{\n\t\t\t\t\u0026ssm.AssociationTargetArgs{\n\t\t\t\t\tKey: pulumi.String(\"tag:Role\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"WebServer\"),\n\t\t\t\t\t\tpulumi.String(\"Database\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\"restartServices\": pulumi.String(\"true\"),\n\t\t\t},\n\t\t\tScheduleExpression: pulumi.String(\"cron(0 3 ? * SUN *)\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: fmt.Sprintf(`#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \n# Install Apache web server\nyum install -y httpd\nsystemctl enable httpd\nsystemctl start httpd\necho \"\u003ch1\u003eWeb Server - %v\u003c/h1\u003e\" \u003e /var/www/html/index.html\n`, prefix),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// EC2 Instance 1 - Web Server with \"ServerType\" tag\n\t\t_, err = ec2.NewInstance(ctx, \"web_server\", \u0026ec2.InstanceArgs{\n\t\t\tAmi: pulumi.Any(amazonLinux.Id),\n\t\t\tInstanceType: pulumi.String(ec2.InstanceType_T3_Micro),\n\t\t\tSubnetId: pulumi.Any(_default.Id),\n\t\t\tVpcSecurityGroupIds: pulumi.StringArray{\n\t\t\t\tec2Sg.Id,\n\t\t\t},\n\t\t\tIamInstanceProfile: pulumi.Any(ec2SsmProfile.Name),\n\t\t\tUserData: pulumi.String(invokeBase64encode.Result),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.Sprintf(\"%v-web-server\", prefix),\n\t\t\t\t\"ServerType\": pulumi.String(\"WebServer\"),\n\t\t\t\t\"Role\": pulumi.String(\"WebServer\"),\n\t\t\t\t\"Environment\": pulumi.Any(environment),\n\t\t\t\t\"Owner\": pulumi.Any(owner),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode1, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: `#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \n# Install MySQL\nyum install -y mysql-server\nsystemctl enable mysqld\nsystemctl start mysqld\n`,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// EC2 Instance 2 - Database Server with \"Role\" tag\n\t\t_, err = ec2.NewInstance(ctx, \"database_server\", \u0026ec2.InstanceArgs{\n\t\t\tAmi: pulumi.Any(amazonLinux.Id),\n\t\t\tInstanceType: pulumi.String(ec2.InstanceType_T3_Micro),\n\t\t\tSubnetId: pulumi.Any(_default.Id),\n\t\t\tVpcSecurityGroupIds: pulumi.StringArray{\n\t\t\t\tec2Sg.Id,\n\t\t\t},\n\t\t\tIamInstanceProfile: pulumi.Any(ec2SsmProfile.Name),\n\t\t\tUserData: pulumi.String(invokeBase64encode1.Result),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.Sprintf(\"%v-database-server\", prefix),\n\t\t\t\t\"Role\": pulumi.String(\"Database\"),\n\t\t\t\t\"Environment\": pulumi.Any(environment),\n\t\t\t\t\"Owner\": pulumi.Any(owner),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ssm.Association;\nimport com.pulumi.aws.ssm.AssociationArgs;\nimport com.pulumi.aws.ssm.inputs.AssociationTargetArgs;\nimport com.pulumi.aws.ec2.Instance;\nimport com.pulumi.aws.ec2.InstanceArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.Base64encodeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // SSM Association for Webbased Servers\n var databaseAssociation = new Association(\"databaseAssociation\", AssociationArgs.builder()\n .name(systemUpdate.name())\n .targets(AssociationTargetArgs.builder()\n .key(\"tag:Role\")\n .values( \n \"WebServer\",\n \"Database\")\n .build())\n .parameters(Map.of(\"restartServices\", \"true\"))\n .scheduleExpression(\"cron(0 3 ? * SUN *)\")\n .build());\n\n // EC2 Instance 1 - Web Server with \"ServerType\" tag\n var webServer = new Instance(\"webServer\", InstanceArgs.builder()\n .ami(amazonLinux.id())\n .instanceType(\"t3.micro\")\n .subnetId(default_.id())\n .vpcSecurityGroupIds(ec2Sg.id())\n .iamInstanceProfile(ec2SsmProfile.name())\n .userData(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"\"\"\n#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \n# Install Apache web server\nyum install -y httpd\nsystemctl enable httpd\nsystemctl start httpd\necho \"\u003ch1\u003eWeb Server - %s\u003c/h1\u003e\" \u003e /var/www/html/index.html\n\", prefix))\n .build()).result())\n .tags(Map.ofEntries(\n Map.entry(\"Name\", String.format(\"%s-web-server\", prefix)),\n Map.entry(\"ServerType\", \"WebServer\"),\n Map.entry(\"Role\", \"WebServer\"),\n Map.entry(\"Environment\", environment),\n Map.entry(\"Owner\", owner)\n ))\n .build());\n\n // EC2 Instance 2 - Database Server with \"Role\" tag\n var databaseServer = new Instance(\"databaseServer\", InstanceArgs.builder()\n .ami(amazonLinux.id())\n .instanceType(\"t3.micro\")\n .subnetId(default_.id())\n .vpcSecurityGroupIds(ec2Sg.id())\n .iamInstanceProfile(ec2SsmProfile.name())\n .userData(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"\"\"\n#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \n# Install MySQL\nyum install -y mysql-server\nsystemctl enable mysqld\nsystemctl start mysqld\n \"\"\")\n .build()).result())\n .tags(Map.ofEntries(\n Map.entry(\"Name\", String.format(\"%s-database-server\", prefix)),\n Map.entry(\"Role\", \"Database\"),\n Map.entry(\"Environment\", environment),\n Map.entry(\"Owner\", owner)\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # SSM Association for Webbased Servers\n databaseAssociation:\n type: aws:ssm:Association\n name: database_association\n properties:\n name: ${systemUpdate.name}\n targets:\n - key: tag:Role\n values:\n - WebServer\n - Database\n parameters:\n restartServices: 'true'\n scheduleExpression: cron(0 3 ? * SUN *)\n # EC2 Instance 1 - Web Server with \"ServerType\" tag\n webServer:\n type: aws:ec2:Instance\n name: web_server\n properties:\n ami: ${amazonLinux.id}\n instanceType: t3.micro\n subnetId: ${default.id}\n vpcSecurityGroupIds:\n - ${ec2Sg.id}\n iamInstanceProfile: ${ec2SsmProfile.name}\n userData:\n fn::invoke:\n function: std:base64encode\n arguments:\n input: \"#!/bin/bash\\nyum update -y\\nyum install -y amazon-ssm-agent\\nsystemctl enable amazon-ssm-agent\\nsystemctl start amazon-ssm-agent\\n \\n# Install Apache web server\\nyum install -y httpd\\nsystemctl enable httpd\\nsystemctl start httpd\\necho \\\"\u003ch1\u003eWeb Server - ${prefix}\u003c/h1\u003e\\\" \u003e /var/www/html/index.html\\n\"\n return: result\n tags:\n Name: ${prefix}-web-server\n ServerType: WebServer\n Role: WebServer\n Environment: ${environment}\n Owner: ${owner}\n # EC2 Instance 2 - Database Server with \"Role\" tag\n databaseServer:\n type: aws:ec2:Instance\n name: database_server\n properties:\n ami: ${amazonLinux.id}\n instanceType: t3.micro\n subnetId: ${default.id}\n vpcSecurityGroupIds:\n - ${ec2Sg.id}\n iamInstanceProfile: ${ec2SsmProfile.name}\n userData:\n fn::invoke:\n function: std:base64encode\n arguments:\n input: \"#!/bin/bash\\nyum update -y\\nyum install -y amazon-ssm-agent\\nsystemctl enable amazon-ssm-agent\\nsystemctl start amazon-ssm-agent\\n \\n# Install MySQL\\nyum install -y mysql-server\\nsystemctl enable mysqld\\nsystemctl start mysqld\\n\"\n return: result\n tags:\n Name: ${prefix}-database-server\n Role: Database\n Environment: ${environment}\n Owner: ${owner}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n* `association_id` - (String) ID of the SSM association.\n\n#### Optional\n\n* `account_id` (String) AWS Account where this resource is managed.\n\n* `region` (String) Region where this resource is managed.\n\nUsing `pulumi import`, import SSM associations using the `association_id`. For example:\n\nconsole\n\n% pulumi import aws_ssm_association.example 10abcdef-0abc-1234-5678-90abcdef123456\n\n", + "description": "Associates an SSM Document to an instance or EC2 tag.\n\n## Example Usage\n\n### Create an association for a specific instance\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ssm.Association(\"example\", {\n name: exampleAwsSsmDocument.name,\n targets: [{\n key: \"InstanceIds\",\n values: [exampleAwsInstance.id],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ssm.Association(\"example\",\n name=example_aws_ssm_document[\"name\"],\n targets=[{\n \"key\": \"InstanceIds\",\n \"values\": [example_aws_instance[\"id\"]],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ssm.Association(\"example\", new()\n {\n Name = exampleAwsSsmDocument.Name,\n Targets = new[]\n {\n new Aws.Ssm.Inputs.AssociationTargetArgs\n {\n Key = \"InstanceIds\",\n Values = new[]\n {\n exampleAwsInstance.Id,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ssm.NewAssociation(ctx, \"example\", \u0026ssm.AssociationArgs{\n\t\t\tName: pulumi.Any(exampleAwsSsmDocument.Name),\n\t\t\tTargets: ssm.AssociationTargetArray{\n\t\t\t\t\u0026ssm.AssociationTargetArgs{\n\t\t\t\t\tKey: pulumi.String(\"InstanceIds\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\texampleAwsInstance.Id,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ssm.Association;\nimport com.pulumi.aws.ssm.AssociationArgs;\nimport com.pulumi.aws.ssm.inputs.AssociationTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Association(\"example\", AssociationArgs.builder()\n .name(exampleAwsSsmDocument.name())\n .targets(AssociationTargetArgs.builder()\n .key(\"InstanceIds\")\n .values(exampleAwsInstance.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ssm:Association\n properties:\n name: ${exampleAwsSsmDocument.name}\n targets:\n - key: InstanceIds\n values:\n - ${exampleAwsInstance.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create an association for all managed instances in an AWS account\n\nTo target all managed instances in an AWS account, set the \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e as `\"InstanceIds\"` with \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e set as `[\"*\"]`. This example also illustrates how to use an Amazon owned SSM document named `AmazonCloudWatch-ManageAgent`.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ssm.Association(\"example\", {\n name: \"AmazonCloudWatch-ManageAgent\",\n targets: [{\n key: \"InstanceIds\",\n values: [\"*\"],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ssm.Association(\"example\",\n name=\"AmazonCloudWatch-ManageAgent\",\n targets=[{\n \"key\": \"InstanceIds\",\n \"values\": [\"*\"],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ssm.Association(\"example\", new()\n {\n Name = \"AmazonCloudWatch-ManageAgent\",\n Targets = new[]\n {\n new Aws.Ssm.Inputs.AssociationTargetArgs\n {\n Key = \"InstanceIds\",\n Values = new[]\n {\n \"*\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ssm.NewAssociation(ctx, \"example\", \u0026ssm.AssociationArgs{\n\t\t\tName: pulumi.String(\"AmazonCloudWatch-ManageAgent\"),\n\t\t\tTargets: ssm.AssociationTargetArray{\n\t\t\t\t\u0026ssm.AssociationTargetArgs{\n\t\t\t\t\tKey: pulumi.String(\"InstanceIds\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ssm.Association;\nimport com.pulumi.aws.ssm.AssociationArgs;\nimport com.pulumi.aws.ssm.inputs.AssociationTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Association(\"example\", AssociationArgs.builder()\n .name(\"AmazonCloudWatch-ManageAgent\")\n .targets(AssociationTargetArgs.builder()\n .key(\"InstanceIds\")\n .values(\"*\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ssm:Association\n properties:\n name: AmazonCloudWatch-ManageAgent\n targets:\n - key: InstanceIds\n values:\n - '*'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create an association for a specific tag\n\nThis example shows how to target all managed instances that are assigned a tag key of `Environment` and value of `Development`.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ssm.Association(\"example\", {\n name: \"AmazonCloudWatch-ManageAgent\",\n targets: [{\n key: \"tag:Environment\",\n values: [\"Development\"],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ssm.Association(\"example\",\n name=\"AmazonCloudWatch-ManageAgent\",\n targets=[{\n \"key\": \"tag:Environment\",\n \"values\": [\"Development\"],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ssm.Association(\"example\", new()\n {\n Name = \"AmazonCloudWatch-ManageAgent\",\n Targets = new[]\n {\n new Aws.Ssm.Inputs.AssociationTargetArgs\n {\n Key = \"tag:Environment\",\n Values = new[]\n {\n \"Development\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ssm.NewAssociation(ctx, \"example\", \u0026ssm.AssociationArgs{\n\t\t\tName: pulumi.String(\"AmazonCloudWatch-ManageAgent\"),\n\t\t\tTargets: ssm.AssociationTargetArray{\n\t\t\t\t\u0026ssm.AssociationTargetArgs{\n\t\t\t\t\tKey: pulumi.String(\"tag:Environment\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"Development\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ssm.Association;\nimport com.pulumi.aws.ssm.AssociationArgs;\nimport com.pulumi.aws.ssm.inputs.AssociationTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Association(\"example\", AssociationArgs.builder()\n .name(\"AmazonCloudWatch-ManageAgent\")\n .targets(AssociationTargetArgs.builder()\n .key(\"tag:Environment\")\n .values(\"Development\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ssm:Association\n properties:\n name: AmazonCloudWatch-ManageAgent\n targets:\n - key: tag:Environment\n values:\n - Development\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create an association with a specific schedule\n\nThis example shows how to schedule an association in various ways.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ssm.Association(\"example\", {\n name: exampleAwsSsmDocument.name,\n scheduleExpression: \"cron(0 2 ? * SUN *)\",\n targets: [{\n key: \"InstanceIds\",\n values: [exampleAwsInstance.id],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ssm.Association(\"example\",\n name=example_aws_ssm_document[\"name\"],\n schedule_expression=\"cron(0 2 ? * SUN *)\",\n targets=[{\n \"key\": \"InstanceIds\",\n \"values\": [example_aws_instance[\"id\"]],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ssm.Association(\"example\", new()\n {\n Name = exampleAwsSsmDocument.Name,\n ScheduleExpression = \"cron(0 2 ? * SUN *)\",\n Targets = new[]\n {\n new Aws.Ssm.Inputs.AssociationTargetArgs\n {\n Key = \"InstanceIds\",\n Values = new[]\n {\n exampleAwsInstance.Id,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ssm.NewAssociation(ctx, \"example\", \u0026ssm.AssociationArgs{\n\t\t\tName: pulumi.Any(exampleAwsSsmDocument.Name),\n\t\t\tScheduleExpression: pulumi.String(\"cron(0 2 ? * SUN *)\"),\n\t\t\tTargets: ssm.AssociationTargetArray{\n\t\t\t\t\u0026ssm.AssociationTargetArgs{\n\t\t\t\t\tKey: pulumi.String(\"InstanceIds\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\texampleAwsInstance.Id,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ssm.Association;\nimport com.pulumi.aws.ssm.AssociationArgs;\nimport com.pulumi.aws.ssm.inputs.AssociationTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Association(\"example\", AssociationArgs.builder()\n .name(exampleAwsSsmDocument.name())\n .scheduleExpression(\"cron(0 2 ? * SUN *)\")\n .targets(AssociationTargetArgs.builder()\n .key(\"InstanceIds\")\n .values(exampleAwsInstance.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ssm:Association\n properties:\n name: ${exampleAwsSsmDocument.name}\n scheduleExpression: cron(0 2 ? * SUN *)\n targets:\n - key: InstanceIds\n values:\n - ${exampleAwsInstance.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create an association with multiple instances with their instance ids\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\n// First EC2 instance\nconst webServer1 = new aws.ec2.Instance(\"web_server_1\", {\n ami: amazonLinux.id,\n instanceType: aws.ec2.InstanceType.T3_Micro,\n subnetId: _public.id,\n vpcSecurityGroupIds: [ec2Sg.id],\n iamInstanceProfile: ec2SsmProfile.name,\n userData: `#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n`,\n});\n// Second EC2 instance\nconst webServer2 = new aws.ec2.Instance(\"web_server_2\", {\n ami: amazonLinux.id,\n instanceType: aws.ec2.InstanceType.T3_Micro,\n subnetId: _public.id,\n vpcSecurityGroupIds: [ec2Sg.id],\n iamInstanceProfile: ec2SsmProfile.name,\n userData: `#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n`,\n});\n// Removed EC2 provisioning dependencies for brevity\nconst systemUpdate = new aws.ssm.Association(\"system_update\", {\n name: \"AWS-RunShellScript\",\n targets: [{\n key: \"InstanceIds\",\n values: [\n webServer1.id,\n webServer2.id,\n ],\n }],\n scheduleExpression: \"cron(0 2 ? * SUN *)\",\n parameters: {\n commands: std.join({\n separator: \"\\n\",\n input: [\n \"#!/bin/bash\",\n \"echo 'Starting system update on $(hostname)'\",\n \"echo 'Instance ID: $(curl -s http://169.254.169.254/latest/meta-data/instance-id)'\",\n \"yum update -y\",\n \"echo 'System update completed successfully'\",\n \"systemctl status httpd\",\n \"df -h\",\n \"free -m\",\n ],\n }).then(invoke =\u003e invoke.result),\n workingDirectory: \"/tmp\",\n executionTimeout: \"3600\",\n },\n associationName: \"weekly-system-update\",\n complianceSeverity: \"MEDIUM\",\n maxConcurrency: \"1\",\n maxErrors: \"0\",\n tags: {\n Name: \"Weekly System Update\",\n Environment: \"demo\",\n Purpose: \"maintenance\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\n# First EC2 instance\nweb_server1 = aws.ec2.Instance(\"web_server_1\",\n ami=amazon_linux[\"id\"],\n instance_type=aws.ec2.InstanceType.T3_MICRO,\n subnet_id=public[\"id\"],\n vpc_security_group_ids=[ec2_sg[\"id\"]],\n iam_instance_profile=ec2_ssm_profile[\"name\"],\n user_data=\"\"\"#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n\"\"\")\n# Second EC2 instance\nweb_server2 = aws.ec2.Instance(\"web_server_2\",\n ami=amazon_linux[\"id\"],\n instance_type=aws.ec2.InstanceType.T3_MICRO,\n subnet_id=public[\"id\"],\n vpc_security_group_ids=[ec2_sg[\"id\"]],\n iam_instance_profile=ec2_ssm_profile[\"name\"],\n user_data=\"\"\"#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n\"\"\")\n# Removed EC2 provisioning dependencies for brevity\nsystem_update = aws.ssm.Association(\"system_update\",\n name=\"AWS-RunShellScript\",\n targets=[{\n \"key\": \"InstanceIds\",\n \"values\": [\n web_server1.id,\n web_server2.id,\n ],\n }],\n schedule_expression=\"cron(0 2 ? * SUN *)\",\n parameters={\n \"commands\": std.join(separator=\"\\n\",\n input=[\n \"#!/bin/bash\",\n \"echo 'Starting system update on $(hostname)'\",\n \"echo 'Instance ID: $(curl -s http://169.254.169.254/latest/meta-data/instance-id)'\",\n \"yum update -y\",\n \"echo 'System update completed successfully'\",\n \"systemctl status httpd\",\n \"df -h\",\n \"free -m\",\n ]).result,\n \"workingDirectory\": \"/tmp\",\n \"executionTimeout\": \"3600\",\n },\n association_name=\"weekly-system-update\",\n compliance_severity=\"MEDIUM\",\n max_concurrency=\"1\",\n max_errors=\"0\",\n tags={\n \"Name\": \"Weekly System Update\",\n \"Environment\": \"demo\",\n \"Purpose\": \"maintenance\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // First EC2 instance\n var webServer1 = new Aws.Ec2.Instance(\"web_server_1\", new()\n {\n Ami = amazonLinux.Id,\n InstanceType = Aws.Ec2.InstanceType.T3_Micro,\n SubnetId = @public.Id,\n VpcSecurityGroupIds = new[]\n {\n ec2Sg.Id,\n },\n IamInstanceProfile = ec2SsmProfile.Name,\n UserData = @\"#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n\",\n });\n\n // Second EC2 instance\n var webServer2 = new Aws.Ec2.Instance(\"web_server_2\", new()\n {\n Ami = amazonLinux.Id,\n InstanceType = Aws.Ec2.InstanceType.T3_Micro,\n SubnetId = @public.Id,\n VpcSecurityGroupIds = new[]\n {\n ec2Sg.Id,\n },\n IamInstanceProfile = ec2SsmProfile.Name,\n UserData = @\"#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n\",\n });\n\n // Removed EC2 provisioning dependencies for brevity\n var systemUpdate = new Aws.Ssm.Association(\"system_update\", new()\n {\n Name = \"AWS-RunShellScript\",\n Targets = new[]\n {\n new Aws.Ssm.Inputs.AssociationTargetArgs\n {\n Key = \"InstanceIds\",\n Values = new[]\n {\n webServer1.Id,\n webServer2.Id,\n },\n },\n },\n ScheduleExpression = \"cron(0 2 ? * SUN *)\",\n Parameters = \n {\n { \"commands\", Std.Join.Invoke(new()\n {\n Separator = @\"\n\",\n Input = new[]\n {\n \"#!/bin/bash\",\n \"echo 'Starting system update on $(hostname)'\",\n \"echo 'Instance ID: $(curl -s http://169.254.169.254/latest/meta-data/instance-id)'\",\n \"yum update -y\",\n \"echo 'System update completed successfully'\",\n \"systemctl status httpd\",\n \"df -h\",\n \"free -m\",\n },\n }).Apply(invoke =\u003e invoke.Result) },\n { \"workingDirectory\", \"/tmp\" },\n { \"executionTimeout\", \"3600\" },\n },\n AssociationName = \"weekly-system-update\",\n ComplianceSeverity = \"MEDIUM\",\n MaxConcurrency = \"1\",\n MaxErrors = \"0\",\n Tags = \n {\n { \"Name\", \"Weekly System Update\" },\n { \"Environment\", \"demo\" },\n { \"Purpose\", \"maintenance\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// First EC2 instance\n\t\twebServer1, err := ec2.NewInstance(ctx, \"web_server_1\", \u0026ec2.InstanceArgs{\n\t\t\tAmi: pulumi.Any(amazonLinux.Id),\n\t\t\tInstanceType: pulumi.String(ec2.InstanceType_T3_Micro),\n\t\t\tSubnetId: pulumi.Any(public.Id),\n\t\t\tVpcSecurityGroupIds: pulumi.StringArray{\n\t\t\t\tec2Sg.Id,\n\t\t\t},\n\t\t\tIamInstanceProfile: pulumi.Any(ec2SsmProfile.Name),\n\t\t\tUserData: pulumi.String(`#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Second EC2 instance\n\t\twebServer2, err := ec2.NewInstance(ctx, \"web_server_2\", \u0026ec2.InstanceArgs{\n\t\t\tAmi: pulumi.Any(amazonLinux.Id),\n\t\t\tInstanceType: pulumi.String(ec2.InstanceType_T3_Micro),\n\t\t\tSubnetId: pulumi.Any(public.Id),\n\t\t\tVpcSecurityGroupIds: pulumi.StringArray{\n\t\t\t\tec2Sg.Id,\n\t\t\t},\n\t\t\tIamInstanceProfile: pulumi.Any(ec2SsmProfile.Name),\n\t\t\tUserData: pulumi.String(`#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeJoin, err := std.Join(ctx, \u0026std.JoinArgs{\n\t\t\tSeparator: \"\\n\",\n\t\t\tInput: []string{\n\t\t\t\t\"#!/bin/bash\",\n\t\t\t\t\"echo 'Starting system update on $(hostname)'\",\n\t\t\t\t\"echo 'Instance ID: $(curl -s http://169.254.169.254/latest/meta-data/instance-id)'\",\n\t\t\t\t\"yum update -y\",\n\t\t\t\t\"echo 'System update completed successfully'\",\n\t\t\t\t\"systemctl status httpd\",\n\t\t\t\t\"df -h\",\n\t\t\t\t\"free -m\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Removed EC2 provisioning dependencies for brevity\n\t\t_, err = ssm.NewAssociation(ctx, \"system_update\", \u0026ssm.AssociationArgs{\n\t\t\tName: pulumi.String(\"AWS-RunShellScript\"),\n\t\t\tTargets: ssm.AssociationTargetArray{\n\t\t\t\t\u0026ssm.AssociationTargetArgs{\n\t\t\t\t\tKey: pulumi.String(\"InstanceIds\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\twebServer1.ID(),\n\t\t\t\t\t\twebServer2.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tScheduleExpression: pulumi.String(\"cron(0 2 ? * SUN *)\"),\n\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\"commands\": pulumi.String(invokeJoin.Result),\n\t\t\t\t\"workingDirectory\": pulumi.String(\"/tmp\"),\n\t\t\t\t\"executionTimeout\": pulumi.String(\"3600\"),\n\t\t\t},\n\t\t\tAssociationName: pulumi.String(\"weekly-system-update\"),\n\t\t\tComplianceSeverity: pulumi.String(\"MEDIUM\"),\n\t\t\tMaxConcurrency: pulumi.String(\"1\"),\n\t\t\tMaxErrors: pulumi.String(\"0\"),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"Weekly System Update\"),\n\t\t\t\t\"Environment\": pulumi.String(\"demo\"),\n\t\t\t\t\"Purpose\": pulumi.String(\"maintenance\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.Instance;\nimport com.pulumi.aws.ec2.InstanceArgs;\nimport com.pulumi.aws.ssm.Association;\nimport com.pulumi.aws.ssm.AssociationArgs;\nimport com.pulumi.aws.ssm.inputs.AssociationTargetArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.JoinArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // First EC2 instance\n var webServer1 = new Instance(\"webServer1\", InstanceArgs.builder()\n .ami(amazonLinux.id())\n .instanceType(\"t3.micro\")\n .subnetId(public_.id())\n .vpcSecurityGroupIds(ec2Sg.id())\n .iamInstanceProfile(ec2SsmProfile.name())\n .userData(\"\"\"\n#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \"\"\")\n .build());\n\n // Second EC2 instance\n var webServer2 = new Instance(\"webServer2\", InstanceArgs.builder()\n .ami(amazonLinux.id())\n .instanceType(\"t3.micro\")\n .subnetId(public_.id())\n .vpcSecurityGroupIds(ec2Sg.id())\n .iamInstanceProfile(ec2SsmProfile.name())\n .userData(\"\"\"\n#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \"\"\")\n .build());\n\n // Removed EC2 provisioning dependencies for brevity\n var systemUpdate = new Association(\"systemUpdate\", AssociationArgs.builder()\n .name(\"AWS-RunShellScript\")\n .targets(AssociationTargetArgs.builder()\n .key(\"InstanceIds\")\n .values( \n webServer1.id(),\n webServer2.id())\n .build())\n .scheduleExpression(\"cron(0 2 ? * SUN *)\")\n .parameters(Map.ofEntries(\n Map.entry(\"commands\", StdFunctions.join(JoinArgs.builder()\n .separator(\"\"\"\n\n \"\"\")\n .input( \n \"#!/bin/bash\",\n \"echo 'Starting system update on $(hostname)'\",\n \"echo 'Instance ID: $(curl -s http://169.254.169.254/latest/meta-data/instance-id)'\",\n \"yum update -y\",\n \"echo 'System update completed successfully'\",\n \"systemctl status httpd\",\n \"df -h\",\n \"free -m\")\n .build()).result()),\n Map.entry(\"workingDirectory\", \"/tmp\"),\n Map.entry(\"executionTimeout\", \"3600\")\n ))\n .associationName(\"weekly-system-update\")\n .complianceSeverity(\"MEDIUM\")\n .maxConcurrency(\"1\")\n .maxErrors(\"0\")\n .tags(Map.ofEntries(\n Map.entry(\"Name\", \"Weekly System Update\"),\n Map.entry(\"Environment\", \"demo\"),\n Map.entry(\"Purpose\", \"maintenance\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Removed EC2 provisioning dependencies for brevity\n systemUpdate:\n type: aws:ssm:Association\n name: system_update\n properties:\n name: AWS-RunShellScript\n targets:\n - key: InstanceIds\n values:\n - ${webServer1.id}\n - ${webServer2.id}\n scheduleExpression: cron(0 2 ? * SUN *)\n parameters:\n commands:\n fn::invoke:\n function: std:join\n arguments:\n separator: |2+\n input:\n - '#!/bin/bash'\n - echo 'Starting system update on $(hostname)'\n - 'echo ''Instance ID: $(curl -s http://169.254.169.254/latest/meta-data/instance-id)'''\n - yum update -y\n - echo 'System update completed successfully'\n - systemctl status httpd\n - df -h\n - free -m\n return: result\n workingDirectory: /tmp\n executionTimeout: '3600'\n associationName: weekly-system-update\n complianceSeverity: MEDIUM\n maxConcurrency: '1'\n maxErrors: '0'\n tags:\n Name: Weekly System Update\n Environment: demo\n Purpose: maintenance\n # First EC2 instance\n webServer1:\n type: aws:ec2:Instance\n name: web_server_1\n properties:\n ami: ${amazonLinux.id}\n instanceType: t3.micro\n subnetId: ${public.id}\n vpcSecurityGroupIds:\n - ${ec2Sg.id}\n iamInstanceProfile: ${ec2SsmProfile.name}\n userData: |\n #!/bin/bash\n yum update -y\n yum install -y amazon-ssm-agent\n systemctl enable amazon-ssm-agent\n systemctl start amazon-ssm-agent\n # Second EC2 instance\n webServer2:\n type: aws:ec2:Instance\n name: web_server_2\n properties:\n ami: ${amazonLinux.id}\n instanceType: t3.micro\n subnetId: ${public.id}\n vpcSecurityGroupIds:\n - ${ec2Sg.id}\n iamInstanceProfile: ${ec2SsmProfile.name}\n userData: |\n #!/bin/bash\n yum update -y\n yum install -y amazon-ssm-agent\n systemctl enable amazon-ssm-agent\n systemctl start amazon-ssm-agent\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create an association with multiple instances with their values matching their tags\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\n// SSM Association for Webbased Servers\nconst databaseAssociation = new aws.ssm.Association(\"database_association\", {\n name: systemUpdate.name,\n targets: [{\n key: \"tag:Role\",\n values: [\n \"WebServer\",\n \"Database\",\n ],\n }],\n parameters: {\n restartServices: \"true\",\n },\n scheduleExpression: \"cron(0 3 ? * SUN *)\",\n});\n// EC2 Instance 1 - Web Server with \"ServerType\" tag\nconst webServer = new aws.ec2.Instance(\"web_server\", {\n ami: amazonLinux.id,\n instanceType: aws.ec2.InstanceType.T3_Micro,\n subnetId: _default.id,\n vpcSecurityGroupIds: [ec2Sg.id],\n iamInstanceProfile: ec2SsmProfile.name,\n userData: std.base64encode({\n input: `#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \n# Install Apache web server\nyum install -y httpd\nsystemctl enable httpd\nsystemctl start httpd\necho \\\"\u003ch1\u003eWeb Server - ${prefix}\u003c/h1\u003e\\\" \u003e /var/www/html/index.html\n`,\n }).then(invoke =\u003e invoke.result),\n tags: {\n Name: `${prefix}-web-server`,\n ServerType: \"WebServer\",\n Role: \"WebServer\",\n Environment: environment,\n Owner: owner,\n },\n});\n// EC2 Instance 2 - Database Server with \"Role\" tag\nconst databaseServer = new aws.ec2.Instance(\"database_server\", {\n ami: amazonLinux.id,\n instanceType: aws.ec2.InstanceType.T3_Micro,\n subnetId: _default.id,\n vpcSecurityGroupIds: [ec2Sg.id],\n iamInstanceProfile: ec2SsmProfile.name,\n userData: std.base64encode({\n input: `#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \n# Install MySQL\nyum install -y mysql-server\nsystemctl enable mysqld\nsystemctl start mysqld\n`,\n }).then(invoke =\u003e invoke.result),\n tags: {\n Name: `${prefix}-database-server`,\n Role: \"Database\",\n Environment: environment,\n Owner: owner,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\n# SSM Association for Webbased Servers\ndatabase_association = aws.ssm.Association(\"database_association\",\n name=system_update[\"name\"],\n targets=[{\n \"key\": \"tag:Role\",\n \"values\": [\n \"WebServer\",\n \"Database\",\n ],\n }],\n parameters={\n \"restartServices\": \"true\",\n },\n schedule_expression=\"cron(0 3 ? * SUN *)\")\n# EC2 Instance 1 - Web Server with \"ServerType\" tag\nweb_server = aws.ec2.Instance(\"web_server\",\n ami=amazon_linux[\"id\"],\n instance_type=aws.ec2.InstanceType.T3_MICRO,\n subnet_id=default[\"id\"],\n vpc_security_group_ids=[ec2_sg[\"id\"]],\n iam_instance_profile=ec2_ssm_profile[\"name\"],\n user_data=std.base64encode(input=f\"\"\"#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \n# Install Apache web server\nyum install -y httpd\nsystemctl enable httpd\nsystemctl start httpd\necho \\\"\u003ch1\u003eWeb Server - {prefix}\u003c/h1\u003e\\\" \u003e /var/www/html/index.html\n\"\"\").result,\n tags={\n \"Name\": f\"{prefix}-web-server\",\n \"ServerType\": \"WebServer\",\n \"Role\": \"WebServer\",\n \"Environment\": environment,\n \"Owner\": owner,\n })\n# EC2 Instance 2 - Database Server with \"Role\" tag\ndatabase_server = aws.ec2.Instance(\"database_server\",\n ami=amazon_linux[\"id\"],\n instance_type=aws.ec2.InstanceType.T3_MICRO,\n subnet_id=default[\"id\"],\n vpc_security_group_ids=[ec2_sg[\"id\"]],\n iam_instance_profile=ec2_ssm_profile[\"name\"],\n user_data=std.base64encode(input=\"\"\"#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \n# Install MySQL\nyum install -y mysql-server\nsystemctl enable mysqld\nsystemctl start mysqld\n\"\"\").result,\n tags={\n \"Name\": f\"{prefix}-database-server\",\n \"Role\": \"Database\",\n \"Environment\": environment,\n \"Owner\": owner,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // SSM Association for Webbased Servers\n var databaseAssociation = new Aws.Ssm.Association(\"database_association\", new()\n {\n Name = systemUpdate.Name,\n Targets = new[]\n {\n new Aws.Ssm.Inputs.AssociationTargetArgs\n {\n Key = \"tag:Role\",\n Values = new[]\n {\n \"WebServer\",\n \"Database\",\n },\n },\n },\n Parameters = \n {\n { \"restartServices\", \"true\" },\n },\n ScheduleExpression = \"cron(0 3 ? * SUN *)\",\n });\n\n // EC2 Instance 1 - Web Server with \"ServerType\" tag\n var webServer = new Aws.Ec2.Instance(\"web_server\", new()\n {\n Ami = amazonLinux.Id,\n InstanceType = Aws.Ec2.InstanceType.T3_Micro,\n SubnetId = @default.Id,\n VpcSecurityGroupIds = new[]\n {\n ec2Sg.Id,\n },\n IamInstanceProfile = ec2SsmProfile.Name,\n UserData = Std.Base64encode.Invoke(new()\n {\n Input = @$\"#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \n# Install Apache web server\nyum install -y httpd\nsystemctl enable httpd\nsystemctl start httpd\necho \\\"\"\u003ch1\u003eWeb Server - {prefix}\u003c/h1\u003e\\\"\" \u003e /var/www/html/index.html\n\",\n }).Apply(invoke =\u003e invoke.Result),\n Tags = \n {\n { \"Name\", $\"{prefix}-web-server\" },\n { \"ServerType\", \"WebServer\" },\n { \"Role\", \"WebServer\" },\n { \"Environment\", environment },\n { \"Owner\", owner },\n },\n });\n\n // EC2 Instance 2 - Database Server with \"Role\" tag\n var databaseServer = new Aws.Ec2.Instance(\"database_server\", new()\n {\n Ami = amazonLinux.Id,\n InstanceType = Aws.Ec2.InstanceType.T3_Micro,\n SubnetId = @default.Id,\n VpcSecurityGroupIds = new[]\n {\n ec2Sg.Id,\n },\n IamInstanceProfile = ec2SsmProfile.Name,\n UserData = Std.Base64encode.Invoke(new()\n {\n Input = @\"#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \n# Install MySQL\nyum install -y mysql-server\nsystemctl enable mysqld\nsystemctl start mysqld\n\",\n }).Apply(invoke =\u003e invoke.Result),\n Tags = \n {\n { \"Name\", $\"{prefix}-database-server\" },\n { \"Role\", \"Database\" },\n { \"Environment\", environment },\n { \"Owner\", owner },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// SSM Association for Webbased Servers\n\t\t_, err := ssm.NewAssociation(ctx, \"database_association\", \u0026ssm.AssociationArgs{\n\t\t\tName: pulumi.Any(systemUpdate.Name),\n\t\t\tTargets: ssm.AssociationTargetArray{\n\t\t\t\t\u0026ssm.AssociationTargetArgs{\n\t\t\t\t\tKey: pulumi.String(\"tag:Role\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"WebServer\"),\n\t\t\t\t\t\tpulumi.String(\"Database\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\"restartServices\": pulumi.String(\"true\"),\n\t\t\t},\n\t\t\tScheduleExpression: pulumi.String(\"cron(0 3 ? * SUN *)\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: fmt.Sprintf(`#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \n# Install Apache web server\nyum install -y httpd\nsystemctl enable httpd\nsystemctl start httpd\necho \\\"\u003ch1\u003eWeb Server - %v\u003c/h1\u003e\\\" \u003e /var/www/html/index.html\n`, prefix),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// EC2 Instance 1 - Web Server with \"ServerType\" tag\n\t\t_, err = ec2.NewInstance(ctx, \"web_server\", \u0026ec2.InstanceArgs{\n\t\t\tAmi: pulumi.Any(amazonLinux.Id),\n\t\t\tInstanceType: pulumi.String(ec2.InstanceType_T3_Micro),\n\t\t\tSubnetId: pulumi.Any(_default.Id),\n\t\t\tVpcSecurityGroupIds: pulumi.StringArray{\n\t\t\t\tec2Sg.Id,\n\t\t\t},\n\t\t\tIamInstanceProfile: pulumi.Any(ec2SsmProfile.Name),\n\t\t\tUserData: pulumi.String(invokeBase64encode.Result),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.Sprintf(\"%v-web-server\", prefix),\n\t\t\t\t\"ServerType\": pulumi.String(\"WebServer\"),\n\t\t\t\t\"Role\": pulumi.String(\"WebServer\"),\n\t\t\t\t\"Environment\": pulumi.Any(environment),\n\t\t\t\t\"Owner\": pulumi.Any(owner),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode1, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: `#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \n# Install MySQL\nyum install -y mysql-server\nsystemctl enable mysqld\nsystemctl start mysqld\n`,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// EC2 Instance 2 - Database Server with \"Role\" tag\n\t\t_, err = ec2.NewInstance(ctx, \"database_server\", \u0026ec2.InstanceArgs{\n\t\t\tAmi: pulumi.Any(amazonLinux.Id),\n\t\t\tInstanceType: pulumi.String(ec2.InstanceType_T3_Micro),\n\t\t\tSubnetId: pulumi.Any(_default.Id),\n\t\t\tVpcSecurityGroupIds: pulumi.StringArray{\n\t\t\t\tec2Sg.Id,\n\t\t\t},\n\t\t\tIamInstanceProfile: pulumi.Any(ec2SsmProfile.Name),\n\t\t\tUserData: pulumi.String(invokeBase64encode1.Result),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.Sprintf(\"%v-database-server\", prefix),\n\t\t\t\t\"Role\": pulumi.String(\"Database\"),\n\t\t\t\t\"Environment\": pulumi.Any(environment),\n\t\t\t\t\"Owner\": pulumi.Any(owner),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ssm.Association;\nimport com.pulumi.aws.ssm.AssociationArgs;\nimport com.pulumi.aws.ssm.inputs.AssociationTargetArgs;\nimport com.pulumi.aws.ec2.Instance;\nimport com.pulumi.aws.ec2.InstanceArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.Base64encodeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // SSM Association for Webbased Servers\n var databaseAssociation = new Association(\"databaseAssociation\", AssociationArgs.builder()\n .name(systemUpdate.name())\n .targets(AssociationTargetArgs.builder()\n .key(\"tag:Role\")\n .values( \n \"WebServer\",\n \"Database\")\n .build())\n .parameters(Map.of(\"restartServices\", \"true\"))\n .scheduleExpression(\"cron(0 3 ? * SUN *)\")\n .build());\n\n // EC2 Instance 1 - Web Server with \"ServerType\" tag\n var webServer = new Instance(\"webServer\", InstanceArgs.builder()\n .ami(amazonLinux.id())\n .instanceType(\"t3.micro\")\n .subnetId(default_.id())\n .vpcSecurityGroupIds(ec2Sg.id())\n .iamInstanceProfile(ec2SsmProfile.name())\n .userData(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"\"\"\n#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \n# Install Apache web server\nyum install -y httpd\nsystemctl enable httpd\nsystemctl start httpd\necho \\\"\u003ch1\u003eWeb Server - %s\u003c/h1\u003e\\\" \u003e /var/www/html/index.html\n\", prefix))\n .build()).result())\n .tags(Map.ofEntries(\n Map.entry(\"Name\", String.format(\"%s-web-server\", prefix)),\n Map.entry(\"ServerType\", \"WebServer\"),\n Map.entry(\"Role\", \"WebServer\"),\n Map.entry(\"Environment\", environment),\n Map.entry(\"Owner\", owner)\n ))\n .build());\n\n // EC2 Instance 2 - Database Server with \"Role\" tag\n var databaseServer = new Instance(\"databaseServer\", InstanceArgs.builder()\n .ami(amazonLinux.id())\n .instanceType(\"t3.micro\")\n .subnetId(default_.id())\n .vpcSecurityGroupIds(ec2Sg.id())\n .iamInstanceProfile(ec2SsmProfile.name())\n .userData(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"\"\"\n#!/bin/bash\nyum update -y\nyum install -y amazon-ssm-agent\nsystemctl enable amazon-ssm-agent\nsystemctl start amazon-ssm-agent\n \n# Install MySQL\nyum install -y mysql-server\nsystemctl enable mysqld\nsystemctl start mysqld\n \"\"\")\n .build()).result())\n .tags(Map.ofEntries(\n Map.entry(\"Name\", String.format(\"%s-database-server\", prefix)),\n Map.entry(\"Role\", \"Database\"),\n Map.entry(\"Environment\", environment),\n Map.entry(\"Owner\", owner)\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # SSM Association for Webbased Servers\n databaseAssociation:\n type: aws:ssm:Association\n name: database_association\n properties:\n name: ${systemUpdate.name}\n targets:\n - key: tag:Role\n values:\n - WebServer\n - Database\n parameters:\n restartServices: 'true'\n scheduleExpression: cron(0 3 ? * SUN *)\n # EC2 Instance 1 - Web Server with \"ServerType\" tag\n webServer:\n type: aws:ec2:Instance\n name: web_server\n properties:\n ami: ${amazonLinux.id}\n instanceType: t3.micro\n subnetId: ${default.id}\n vpcSecurityGroupIds:\n - ${ec2Sg.id}\n iamInstanceProfile: ${ec2SsmProfile.name}\n userData:\n fn::invoke:\n function: std:base64encode\n arguments:\n input: \"#!/bin/bash\\nyum update -y\\nyum install -y amazon-ssm-agent\\nsystemctl enable amazon-ssm-agent\\nsystemctl start amazon-ssm-agent\\n \\n# Install Apache web server\\nyum install -y httpd\\nsystemctl enable httpd\\nsystemctl start httpd\\necho \\\\\\\"\u003ch1\u003eWeb Server - ${prefix}\u003c/h1\u003e\\\\\\\" \u003e /var/www/html/index.html\\n\"\n return: result\n tags:\n Name: ${prefix}-web-server\n ServerType: WebServer\n Role: WebServer\n Environment: ${environment}\n Owner: ${owner}\n # EC2 Instance 2 - Database Server with \"Role\" tag\n databaseServer:\n type: aws:ec2:Instance\n name: database_server\n properties:\n ami: ${amazonLinux.id}\n instanceType: t3.micro\n subnetId: ${default.id}\n vpcSecurityGroupIds:\n - ${ec2Sg.id}\n iamInstanceProfile: ${ec2SsmProfile.name}\n userData:\n fn::invoke:\n function: std:base64encode\n arguments:\n input: \"#!/bin/bash\\nyum update -y\\nyum install -y amazon-ssm-agent\\nsystemctl enable amazon-ssm-agent\\nsystemctl start amazon-ssm-agent\\n \\n# Install MySQL\\nyum install -y mysql-server\\nsystemctl enable mysqld\\nsystemctl start mysqld\\n\"\n return: result\n tags:\n Name: ${prefix}-database-server\n Role: Database\n Environment: ${environment}\n Owner: ${owner}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n* `association_id` - (String) ID of the SSM association.\n\n#### Optional\n\n* `account_id` (String) AWS Account where this resource is managed.\n\n* `region` (String) Region where this resource is managed.\n\nUsing `pulumi import`, import SSM associations using the `association_id`. For example:\n\nconsole\n\n% pulumi import aws_ssm_association.example 10abcdef-0abc-1234-5678-90abcdef123456\n\n", "properties": { "applyOnlyAtCronInterval": { "type": "boolean", @@ -408688,7 +408688,7 @@ } }, "aws:ssm/document:Document": { - "description": "Provides an SSM Document resource\n\n\u003e **NOTE on updating SSM documents:** Only documents with a schema version of 2.0\nor greater can update their content once created, see [SSM Schema Features](http://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-ssm-docs.html#document-schemas-features). To update a document with an older schema version you must recreate the resource. Not all document types support a schema version of 2.0 or greater. Refer to [SSM document schema features and examples](https://docs.aws.amazon.com/systems-manager/latest/userguide/document-schemas-features.html) for information about which schema versions are supported for the respective \u003cspan pulumi-lang-nodejs=\"`documentType`\" pulumi-lang-dotnet=\"`DocumentType`\" pulumi-lang-go=\"`documentType`\" pulumi-lang-python=\"`document_type`\" pulumi-lang-yaml=\"`documentType`\" pulumi-lang-java=\"`documentType`\"\u003e`document_type`\u003c/span\u003e.\n\n## Example Usage\n\n### Create an ssm document in JSON format\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst foo = new aws.ssm.Document(\"foo\", {\n name: \"test_document\",\n documentType: \"Command\",\n content: ` {\n \"schemaVersion\": \"1.2\",\n \"description\": \"Check ip configuration of a Linux instance.\",\n \"parameters\": {\n\n },\n \"runtimeConfig\": {\n \"aws:runShellScript\": {\n \"properties\": [\n {\n \"id\": \"0.aws:runShellScript\",\n \"runCommand\": [\"ifconfig\"]\n }\n ]\n }\n }\n }\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nfoo = aws.ssm.Document(\"foo\",\n name=\"test_document\",\n document_type=\"Command\",\n content=\"\"\" {\n \"schemaVersion\": \"1.2\",\n \"description\": \"Check ip configuration of a Linux instance.\",\n \"parameters\": {\n\n },\n \"runtimeConfig\": {\n \"aws:runShellScript\": {\n \"properties\": [\n {\n \"id\": \"0.aws:runShellScript\",\n \"runCommand\": [\"ifconfig\"]\n }\n ]\n }\n }\n }\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var foo = new Aws.Ssm.Document(\"foo\", new()\n {\n Name = \"test_document\",\n DocumentType = \"Command\",\n Content = @\" {\n \"\"schemaVersion\"\": \"\"1.2\"\",\n \"\"description\"\": \"\"Check ip configuration of a Linux instance.\"\",\n \"\"parameters\"\": {\n\n },\n \"\"runtimeConfig\"\": {\n \"\"aws:runShellScript\"\": {\n \"\"properties\"\": [\n {\n \"\"id\"\": \"\"0.aws:runShellScript\"\",\n \"\"runCommand\"\": [\"\"ifconfig\"\"]\n }\n ]\n }\n }\n }\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ssm.NewDocument(ctx, \"foo\", \u0026ssm.DocumentArgs{\n\t\t\tName: pulumi.String(\"test_document\"),\n\t\t\tDocumentType: pulumi.String(\"Command\"),\n\t\t\tContent: pulumi.String(` {\n \"schemaVersion\": \"1.2\",\n \"description\": \"Check ip configuration of a Linux instance.\",\n \"parameters\": {\n\n },\n \"runtimeConfig\": {\n \"aws:runShellScript\": {\n \"properties\": [\n {\n \"id\": \"0.aws:runShellScript\",\n \"runCommand\": [\"ifconfig\"]\n }\n ]\n }\n }\n }\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ssm.Document;\nimport com.pulumi.aws.ssm.DocumentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var foo = new Document(\"foo\", DocumentArgs.builder()\n .name(\"test_document\")\n .documentType(\"Command\")\n .content(\"\"\"\n {\n \"schemaVersion\": \"1.2\",\n \"description\": \"Check ip configuration of a Linux instance.\",\n \"parameters\": {\n\n },\n \"runtimeConfig\": {\n \"aws:runShellScript\": {\n \"properties\": [\n {\n \"id\": \"0.aws:runShellScript\",\n \"runCommand\": [\"ifconfig\"]\n }\n ]\n }\n }\n }\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: aws:ssm:Document\n properties:\n name: test_document\n documentType: Command\n content: |2\n {\n \"schemaVersion\": \"1.2\",\n \"description\": \"Check ip configuration of a Linux instance.\",\n \"parameters\": {\n\n },\n \"runtimeConfig\": {\n \"aws:runShellScript\": {\n \"properties\": [\n {\n \"id\": \"0.aws:runShellScript\",\n \"runCommand\": [\"ifconfig\"]\n }\n ]\n }\n }\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create an ssm document in YAML format\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst foo = new aws.ssm.Document(\"foo\", {\n name: \"test_document\",\n documentFormat: \"YAML\",\n documentType: \"Command\",\n content: `schemaVersion: '1.2'\ndescription: Check ip configuration of a Linux instance.\nparameters: {}\nruntimeConfig:\n 'aws:runShellScript':\n properties:\n - id: '0.aws:runShellScript'\n runCommand:\n - ifconfig\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nfoo = aws.ssm.Document(\"foo\",\n name=\"test_document\",\n document_format=\"YAML\",\n document_type=\"Command\",\n content=\"\"\"schemaVersion: '1.2'\ndescription: Check ip configuration of a Linux instance.\nparameters: {}\nruntimeConfig:\n 'aws:runShellScript':\n properties:\n - id: '0.aws:runShellScript'\n runCommand:\n - ifconfig\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var foo = new Aws.Ssm.Document(\"foo\", new()\n {\n Name = \"test_document\",\n DocumentFormat = \"YAML\",\n DocumentType = \"Command\",\n Content = @\"schemaVersion: '1.2'\ndescription: Check ip configuration of a Linux instance.\nparameters: {}\nruntimeConfig:\n 'aws:runShellScript':\n properties:\n - id: '0.aws:runShellScript'\n runCommand:\n - ifconfig\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ssm.NewDocument(ctx, \"foo\", \u0026ssm.DocumentArgs{\n\t\t\tName: pulumi.String(\"test_document\"),\n\t\t\tDocumentFormat: pulumi.String(\"YAML\"),\n\t\t\tDocumentType: pulumi.String(\"Command\"),\n\t\t\tContent: pulumi.String(`schemaVersion: '1.2'\ndescription: Check ip configuration of a Linux instance.\nparameters: {}\nruntimeConfig:\n 'aws:runShellScript':\n properties:\n - id: '0.aws:runShellScript'\n runCommand:\n - ifconfig\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ssm.Document;\nimport com.pulumi.aws.ssm.DocumentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var foo = new Document(\"foo\", DocumentArgs.builder()\n .name(\"test_document\")\n .documentFormat(\"YAML\")\n .documentType(\"Command\")\n .content(\"\"\"\nschemaVersion: '1.2'\ndescription: Check ip configuration of a Linux instance.\nparameters: {}\nruntimeConfig:\n 'aws:runShellScript':\n properties:\n - id: '0.aws:runShellScript'\n runCommand:\n - ifconfig\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: aws:ssm:Document\n properties:\n name: test_document\n documentFormat: YAML\n documentType: Command\n content: |\n schemaVersion: '1.2'\n description: Check ip configuration of a Linux instance.\n parameters: {}\n runtimeConfig:\n 'aws:runShellScript':\n properties:\n - id: '0.aws:runShellScript'\n runCommand:\n - ifconfig\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n* `name` - (String) Name of the SSM document.\n\n#### Optional\n\n* `account_id` (String) AWS Account where this resource is managed.\n\n* `region` (String) Region where this resource is managed.\n\nUsing `pulumi import`, import SSM Documents using the name. For example:\n\nconsole\n\n% pulumi import aws_ssm_document.example example\n\nThe `attachments_source` argument does not have an SSM API method for reading the attachment information detail after creation. If the argument is set in the Pulumi program on an imported resource, Pulumi will always show a difference. To workaround this behavior, either omit the argument from the Pulumi program or use `ignore_changes` to hide the difference. For example:\n\nterraform\n\nresource \"aws_ssm_document\" \"test\" {\n\n name = \"test_document\"\n\n document_type = \"Package\"\n\n attachments_source {\n\n key = \"SourceUrl\"\n\n values = [\"s3://${aws_s3_bucket.object_bucket.bucket}/test.zip\"]\n\n }\n\n # There is no AWS SSM API for reading attachments_source info directly\n\n lifecycle {\n\n ignore_changes = [attachments_source]\n\n }\n\n}\n\n", + "description": "Provides an SSM Document resource\n\n\u003e **NOTE on updating SSM documents:** Only documents with a schema version of 2.0\nor greater can update their content once created, see [SSM Schema Features](http://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-ssm-docs.html#document-schemas-features). To update a document with an older schema version you must recreate the resource. Not all document types support a schema version of 2.0 or greater. Refer to [SSM document schema features and examples](https://docs.aws.amazon.com/systems-manager/latest/userguide/document-schemas-features.html) for information about which schema versions are supported for the respective \u003cspan pulumi-lang-nodejs=\"`documentType`\" pulumi-lang-dotnet=\"`DocumentType`\" pulumi-lang-go=\"`documentType`\" pulumi-lang-python=\"`document_type`\" pulumi-lang-yaml=\"`documentType`\" pulumi-lang-java=\"`documentType`\"\u003e`document_type`\u003c/span\u003e.\n\n## Example Usage\n\n### Create an ssm document in JSON format\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst foo = new aws.ssm.Document(\"foo\", {\n name: \"test_document\",\n documentType: \"Command\",\n content: ` {\n \\\\\"schemaVersion\\\\\": \\\\\"1.2\\\\\",\n \\\\\"description\\\\\": \\\\\"Check ip configuration of a Linux instance.\\\\\",\n \\\\\"parameters\\\\\": {\n\n },\n \\\\\"runtimeConfig\\\\\": {\n \\\\\"aws:runShellScript\\\\\": {\n \\\\\"properties\\\\\": [\n {\n \\\\\"id\\\\\": \\\\\"0.aws:runShellScript\\\\\",\n \\\\\"runCommand\\\\\": [\\\\\"ifconfig\\\\\"]\n }\n ]\n }\n }\n }\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nfoo = aws.ssm.Document(\"foo\",\n name=\"test_document\",\n document_type=\"Command\",\n content=\"\"\" {\n \\\"schemaVersion\\\": \\\"1.2\\\",\n \\\"description\\\": \\\"Check ip configuration of a Linux instance.\\\",\n \\\"parameters\\\": {\n\n },\n \\\"runtimeConfig\\\": {\n \\\"aws:runShellScript\\\": {\n \\\"properties\\\": [\n {\n \\\"id\\\": \\\"0.aws:runShellScript\\\",\n \\\"runCommand\\\": [\\\"ifconfig\\\"]\n }\n ]\n }\n }\n }\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var foo = new Aws.Ssm.Document(\"foo\", new()\n {\n Name = \"test_document\",\n DocumentType = \"Command\",\n Content = @\" {\n \\\"\"schemaVersion\\\"\": \\\"\"1.2\\\"\",\n \\\"\"description\\\"\": \\\"\"Check ip configuration of a Linux instance.\\\"\",\n \\\"\"parameters\\\"\": {\n\n },\n \\\"\"runtimeConfig\\\"\": {\n \\\"\"aws:runShellScript\\\"\": {\n \\\"\"properties\\\"\": [\n {\n \\\"\"id\\\"\": \\\"\"0.aws:runShellScript\\\"\",\n \\\"\"runCommand\\\"\": [\\\"\"ifconfig\\\"\"]\n }\n ]\n }\n }\n }\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ssm.NewDocument(ctx, \"foo\", \u0026ssm.DocumentArgs{\n\t\t\tName: pulumi.String(\"test_document\"),\n\t\t\tDocumentType: pulumi.String(\"Command\"),\n\t\t\tContent: pulumi.String(` {\n \\\"schemaVersion\\\": \\\"1.2\\\",\n \\\"description\\\": \\\"Check ip configuration of a Linux instance.\\\",\n \\\"parameters\\\": {\n\n },\n \\\"runtimeConfig\\\": {\n \\\"aws:runShellScript\\\": {\n \\\"properties\\\": [\n {\n \\\"id\\\": \\\"0.aws:runShellScript\\\",\n \\\"runCommand\\\": [\\\"ifconfig\\\"]\n }\n ]\n }\n }\n }\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ssm.Document;\nimport com.pulumi.aws.ssm.DocumentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var foo = new Document(\"foo\", DocumentArgs.builder()\n .name(\"test_document\")\n .documentType(\"Command\")\n .content(\"\"\"\n {\n \\\"schemaVersion\\\": \\\"1.2\\\",\n \\\"description\\\": \\\"Check ip configuration of a Linux instance.\\\",\n \\\"parameters\\\": {\n\n },\n \\\"runtimeConfig\\\": {\n \\\"aws:runShellScript\\\": {\n \\\"properties\\\": [\n {\n \\\"id\\\": \\\"0.aws:runShellScript\\\",\n \\\"runCommand\\\": [\\\"ifconfig\\\"]\n }\n ]\n }\n }\n }\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: aws:ssm:Document\n properties:\n name: test_document\n documentType: Command\n content: |2\n {\n \\\"schemaVersion\\\": \\\"1.2\\\",\n \\\"description\\\": \\\"Check ip configuration of a Linux instance.\\\",\n \\\"parameters\\\": {\n\n },\n \\\"runtimeConfig\\\": {\n \\\"aws:runShellScript\\\": {\n \\\"properties\\\": [\n {\n \\\"id\\\": \\\"0.aws:runShellScript\\\",\n \\\"runCommand\\\": [\\\"ifconfig\\\"]\n }\n ]\n }\n }\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create an ssm document in YAML format\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst foo = new aws.ssm.Document(\"foo\", {\n name: \"test_document\",\n documentFormat: \"YAML\",\n documentType: \"Command\",\n content: `schemaVersion: '1.2'\ndescription: Check ip configuration of a Linux instance.\nparameters: {}\nruntimeConfig:\n 'aws:runShellScript':\n properties:\n - id: '0.aws:runShellScript'\n runCommand:\n - ifconfig\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nfoo = aws.ssm.Document(\"foo\",\n name=\"test_document\",\n document_format=\"YAML\",\n document_type=\"Command\",\n content=\"\"\"schemaVersion: '1.2'\ndescription: Check ip configuration of a Linux instance.\nparameters: {}\nruntimeConfig:\n 'aws:runShellScript':\n properties:\n - id: '0.aws:runShellScript'\n runCommand:\n - ifconfig\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var foo = new Aws.Ssm.Document(\"foo\", new()\n {\n Name = \"test_document\",\n DocumentFormat = \"YAML\",\n DocumentType = \"Command\",\n Content = @\"schemaVersion: '1.2'\ndescription: Check ip configuration of a Linux instance.\nparameters: {}\nruntimeConfig:\n 'aws:runShellScript':\n properties:\n - id: '0.aws:runShellScript'\n runCommand:\n - ifconfig\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ssm.NewDocument(ctx, \"foo\", \u0026ssm.DocumentArgs{\n\t\t\tName: pulumi.String(\"test_document\"),\n\t\t\tDocumentFormat: pulumi.String(\"YAML\"),\n\t\t\tDocumentType: pulumi.String(\"Command\"),\n\t\t\tContent: pulumi.String(`schemaVersion: '1.2'\ndescription: Check ip configuration of a Linux instance.\nparameters: {}\nruntimeConfig:\n 'aws:runShellScript':\n properties:\n - id: '0.aws:runShellScript'\n runCommand:\n - ifconfig\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ssm.Document;\nimport com.pulumi.aws.ssm.DocumentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var foo = new Document(\"foo\", DocumentArgs.builder()\n .name(\"test_document\")\n .documentFormat(\"YAML\")\n .documentType(\"Command\")\n .content(\"\"\"\nschemaVersion: '1.2'\ndescription: Check ip configuration of a Linux instance.\nparameters: {}\nruntimeConfig:\n 'aws:runShellScript':\n properties:\n - id: '0.aws:runShellScript'\n runCommand:\n - ifconfig\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: aws:ssm:Document\n properties:\n name: test_document\n documentFormat: YAML\n documentType: Command\n content: |\n schemaVersion: '1.2'\n description: Check ip configuration of a Linux instance.\n parameters: {}\n runtimeConfig:\n 'aws:runShellScript':\n properties:\n - id: '0.aws:runShellScript'\n runCommand:\n - ifconfig\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n* `name` - (String) Name of the SSM document.\n\n#### Optional\n\n* `account_id` (String) AWS Account where this resource is managed.\n\n* `region` (String) Region where this resource is managed.\n\nUsing `pulumi import`, import SSM Documents using the name. For example:\n\nconsole\n\n% pulumi import aws_ssm_document.example example\n\nThe `attachments_source` argument does not have an SSM API method for reading the attachment information detail after creation. If the argument is set in the Pulumi program on an imported resource, Pulumi will always show a difference. To workaround this behavior, either omit the argument from the Pulumi program or use `ignore_changes` to hide the difference. For example:\n\nterraform\n\nresource \"aws_ssm_document\" \"test\" {\n\n name = \"test_document\"\n\n document_type = \"Package\"\n\n attachments_source {\n\n key = \"SourceUrl\"\n\n values = [\"s3://${aws_s3_bucket.object_bucket.bucket}/test.zip\"]\n\n }\n\n # There is no AWS SSM API for reading attachments_source info directly\n\n lifecycle {\n\n ignore_changes = [attachments_source]\n\n }\n\n}\n\n", "properties": { "arn": { "type": "string", @@ -415784,7 +415784,7 @@ } }, "aws:timestreamquery/scheduledQuery:ScheduledQuery": { - "description": "Resource for managing an AWS Timestream Query Scheduled Query.\n\n## Example Usage\n\n### Basic Usage\n\nBefore creating a scheduled query, you must have a source database and table with ingested data. Below is a multi-step example, providing an opportunity for data ingestion.\n\nIf your infrastructure is already set up—including the source database and table with data, results database and table, error report S3 bucket, SNS topic, and IAM role—you can create a scheduled query as follows:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.timestreamquery.ScheduledQuery(\"example\", {\n executionRoleArn: exampleAwsIamRole.arn,\n name: exampleAwsTimestreamwriteTable.tableName,\n queryString: `SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n\\x09ROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n\\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n\\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n\\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\nFROM exampledatabase.exampletable\nWHERE measure_name = 'metrics' AND time \u003e ago(2h)\nGROUP BY region, hostname, az, BIN(time, 15s)\nORDER BY binned_timestamp ASC\nLIMIT 5\n`,\n errorReportConfiguration: {\n s3Configuration: {\n bucketName: exampleAwsS3Bucket.bucket,\n },\n },\n notificationConfiguration: {\n snsConfiguration: {\n topicArn: exampleAwsSnsTopic.arn,\n },\n },\n scheduleConfiguration: {\n scheduleExpression: \"rate(1 hour)\",\n },\n targetConfiguration: {\n timestreamConfiguration: {\n databaseName: results.databaseName,\n tableName: resultsAwsTimestreamwriteTable.tableName,\n timeColumn: \"binned_timestamp\",\n dimensionMappings: [\n {\n dimensionValueType: \"VARCHAR\",\n name: \"az\",\n },\n {\n dimensionValueType: \"VARCHAR\",\n name: \"region\",\n },\n {\n dimensionValueType: \"VARCHAR\",\n name: \"hostname\",\n },\n ],\n multiMeasureMappings: {\n targetMultiMeasureName: \"multi-metrics\",\n multiMeasureAttributeMappings: [\n {\n measureValueType: \"DOUBLE\",\n sourceColumn: \"avg_cpu_utilization\",\n },\n {\n measureValueType: \"DOUBLE\",\n sourceColumn: \"p90_cpu_utilization\",\n },\n {\n measureValueType: \"DOUBLE\",\n sourceColumn: \"p95_cpu_utilization\",\n },\n {\n measureValueType: \"DOUBLE\",\n sourceColumn: \"p99_cpu_utilization\",\n },\n ],\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.timestreamquery.ScheduledQuery(\"example\",\n execution_role_arn=example_aws_iam_role[\"arn\"],\n name=example_aws_timestreamwrite_table[\"tableName\"],\n query_string=\"\"\"SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n\\x09ROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n\\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n\\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n\\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\nFROM exampledatabase.exampletable\nWHERE measure_name = 'metrics' AND time \u003e ago(2h)\nGROUP BY region, hostname, az, BIN(time, 15s)\nORDER BY binned_timestamp ASC\nLIMIT 5\n\"\"\",\n error_report_configuration={\n \"s3_configuration\": {\n \"bucket_name\": example_aws_s3_bucket[\"bucket\"],\n },\n },\n notification_configuration={\n \"sns_configuration\": {\n \"topic_arn\": example_aws_sns_topic[\"arn\"],\n },\n },\n schedule_configuration={\n \"schedule_expression\": \"rate(1 hour)\",\n },\n target_configuration={\n \"timestream_configuration\": {\n \"database_name\": results[\"databaseName\"],\n \"table_name\": results_aws_timestreamwrite_table[\"tableName\"],\n \"time_column\": \"binned_timestamp\",\n \"dimension_mappings\": [\n {\n \"dimension_value_type\": \"VARCHAR\",\n \"name\": \"az\",\n },\n {\n \"dimension_value_type\": \"VARCHAR\",\n \"name\": \"region\",\n },\n {\n \"dimension_value_type\": \"VARCHAR\",\n \"name\": \"hostname\",\n },\n ],\n \"multi_measure_mappings\": {\n \"target_multi_measure_name\": \"multi-metrics\",\n \"multi_measure_attribute_mappings\": [\n {\n \"measure_value_type\": \"DOUBLE\",\n \"source_column\": \"avg_cpu_utilization\",\n },\n {\n \"measure_value_type\": \"DOUBLE\",\n \"source_column\": \"p90_cpu_utilization\",\n },\n {\n \"measure_value_type\": \"DOUBLE\",\n \"source_column\": \"p95_cpu_utilization\",\n },\n {\n \"measure_value_type\": \"DOUBLE\",\n \"source_column\": \"p99_cpu_utilization\",\n },\n ],\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.TimestreamQuery.ScheduledQuery(\"example\", new()\n {\n ExecutionRoleArn = exampleAwsIamRole.Arn,\n Name = exampleAwsTimestreamwriteTable.TableName,\n QueryString = @\"SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\nFROM exampledatabase.exampletable\nWHERE measure_name = 'metrics' AND time \u003e ago(2h)\nGROUP BY region, hostname, az, BIN(time, 15s)\nORDER BY binned_timestamp ASC\nLIMIT 5\n\",\n ErrorReportConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryErrorReportConfigurationArgs\n {\n S3Configuration = new Aws.TimestreamQuery.Inputs.ScheduledQueryErrorReportConfigurationS3ConfigurationArgs\n {\n BucketName = exampleAwsS3Bucket.Bucket,\n },\n },\n NotificationConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryNotificationConfigurationArgs\n {\n SnsConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryNotificationConfigurationSnsConfigurationArgs\n {\n TopicArn = exampleAwsSnsTopic.Arn,\n },\n },\n ScheduleConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryScheduleConfigurationArgs\n {\n ScheduleExpression = \"rate(1 hour)\",\n },\n TargetConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationArgs\n {\n TimestreamConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationArgs\n {\n DatabaseName = results.DatabaseName,\n TableName = resultsAwsTimestreamwriteTable.TableName,\n TimeColumn = \"binned_timestamp\",\n DimensionMappings = new[]\n {\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs\n {\n DimensionValueType = \"VARCHAR\",\n Name = \"az\",\n },\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs\n {\n DimensionValueType = \"VARCHAR\",\n Name = \"region\",\n },\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs\n {\n DimensionValueType = \"VARCHAR\",\n Name = \"hostname\",\n },\n },\n MultiMeasureMappings = new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsArgs\n {\n TargetMultiMeasureName = \"multi-metrics\",\n MultiMeasureAttributeMappings = new[]\n {\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs\n {\n MeasureValueType = \"DOUBLE\",\n SourceColumn = \"avg_cpu_utilization\",\n },\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs\n {\n MeasureValueType = \"DOUBLE\",\n SourceColumn = \"p90_cpu_utilization\",\n },\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs\n {\n MeasureValueType = \"DOUBLE\",\n SourceColumn = \"p95_cpu_utilization\",\n },\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs\n {\n MeasureValueType = \"DOUBLE\",\n SourceColumn = \"p99_cpu_utilization\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/timestreamquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := timestreamquery.NewScheduledQuery(ctx, \"example\", \u0026timestreamquery.ScheduledQueryArgs{\n\t\t\tExecutionRoleArn: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tName: pulumi.Any(exampleAwsTimestreamwriteTable.TableName),\n\t\t\tQueryString: pulumi.String(`SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\nFROM exampledatabase.exampletable\nWHERE measure_name = 'metrics' AND time \u003e ago(2h)\nGROUP BY region, hostname, az, BIN(time, 15s)\nORDER BY binned_timestamp ASC\nLIMIT 5\n`),\n\t\t\tErrorReportConfiguration: \u0026timestreamquery.ScheduledQueryErrorReportConfigurationArgs{\n\t\t\t\tS3Configuration: \u0026timestreamquery.ScheduledQueryErrorReportConfigurationS3ConfigurationArgs{\n\t\t\t\t\tBucketName: pulumi.Any(exampleAwsS3Bucket.Bucket),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNotificationConfiguration: \u0026timestreamquery.ScheduledQueryNotificationConfigurationArgs{\n\t\t\t\tSnsConfiguration: \u0026timestreamquery.ScheduledQueryNotificationConfigurationSnsConfigurationArgs{\n\t\t\t\t\tTopicArn: pulumi.Any(exampleAwsSnsTopic.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t\tScheduleConfiguration: \u0026timestreamquery.ScheduledQueryScheduleConfigurationArgs{\n\t\t\t\tScheduleExpression: pulumi.String(\"rate(1 hour)\"),\n\t\t\t},\n\t\t\tTargetConfiguration: \u0026timestreamquery.ScheduledQueryTargetConfigurationArgs{\n\t\t\t\tTimestreamConfiguration: \u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationArgs{\n\t\t\t\t\tDatabaseName: pulumi.Any(results.DatabaseName),\n\t\t\t\t\tTableName: pulumi.Any(resultsAwsTimestreamwriteTable.TableName),\n\t\t\t\t\tTimeColumn: pulumi.String(\"binned_timestamp\"),\n\t\t\t\t\tDimensionMappings: timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArray{\n\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs{\n\t\t\t\t\t\t\tDimensionValueType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\tName: pulumi.String(\"az\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs{\n\t\t\t\t\t\t\tDimensionValueType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\tName: pulumi.String(\"region\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs{\n\t\t\t\t\t\t\tDimensionValueType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\tName: pulumi.String(\"hostname\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMultiMeasureMappings: \u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsArgs{\n\t\t\t\t\t\tTargetMultiMeasureName: pulumi.String(\"multi-metrics\"),\n\t\t\t\t\t\tMultiMeasureAttributeMappings: timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArray{\n\t\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs{\n\t\t\t\t\t\t\t\tMeasureValueType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t\t\t\tSourceColumn: pulumi.String(\"avg_cpu_utilization\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs{\n\t\t\t\t\t\t\t\tMeasureValueType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t\t\t\tSourceColumn: pulumi.String(\"p90_cpu_utilization\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs{\n\t\t\t\t\t\t\t\tMeasureValueType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t\t\t\tSourceColumn: pulumi.String(\"p95_cpu_utilization\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs{\n\t\t\t\t\t\t\t\tMeasureValueType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t\t\t\tSourceColumn: pulumi.String(\"p99_cpu_utilization\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.timestreamquery.ScheduledQuery;\nimport com.pulumi.aws.timestreamquery.ScheduledQueryArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryErrorReportConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryErrorReportConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryNotificationConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryNotificationConfigurationSnsConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryScheduleConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryTargetConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ScheduledQuery(\"example\", ScheduledQueryArgs.builder()\n .executionRoleArn(exampleAwsIamRole.arn())\n .name(exampleAwsTimestreamwriteTable.tableName())\n .queryString(\"\"\"\nSELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\nFROM exampledatabase.exampletable\nWHERE measure_name = 'metrics' AND time \u003e ago(2h)\nGROUP BY region, hostname, az, BIN(time, 15s)\nORDER BY binned_timestamp ASC\nLIMIT 5\n \"\"\")\n .errorReportConfiguration(ScheduledQueryErrorReportConfigurationArgs.builder()\n .s3Configuration(ScheduledQueryErrorReportConfigurationS3ConfigurationArgs.builder()\n .bucketName(exampleAwsS3Bucket.bucket())\n .build())\n .build())\n .notificationConfiguration(ScheduledQueryNotificationConfigurationArgs.builder()\n .snsConfiguration(ScheduledQueryNotificationConfigurationSnsConfigurationArgs.builder()\n .topicArn(exampleAwsSnsTopic.arn())\n .build())\n .build())\n .scheduleConfiguration(ScheduledQueryScheduleConfigurationArgs.builder()\n .scheduleExpression(\"rate(1 hour)\")\n .build())\n .targetConfiguration(ScheduledQueryTargetConfigurationArgs.builder()\n .timestreamConfiguration(ScheduledQueryTargetConfigurationTimestreamConfigurationArgs.builder()\n .databaseName(results.databaseName())\n .tableName(resultsAwsTimestreamwriteTable.tableName())\n .timeColumn(\"binned_timestamp\")\n .dimensionMappings( \n ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs.builder()\n .dimensionValueType(\"VARCHAR\")\n .name(\"az\")\n .build(),\n ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs.builder()\n .dimensionValueType(\"VARCHAR\")\n .name(\"region\")\n .build(),\n ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs.builder()\n .dimensionValueType(\"VARCHAR\")\n .name(\"hostname\")\n .build())\n .multiMeasureMappings(ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsArgs.builder()\n .targetMultiMeasureName(\"multi-metrics\")\n .multiMeasureAttributeMappings( \n ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs.builder()\n .measureValueType(\"DOUBLE\")\n .sourceColumn(\"avg_cpu_utilization\")\n .build(),\n ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs.builder()\n .measureValueType(\"DOUBLE\")\n .sourceColumn(\"p90_cpu_utilization\")\n .build(),\n ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs.builder()\n .measureValueType(\"DOUBLE\")\n .sourceColumn(\"p95_cpu_utilization\")\n .build(),\n ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs.builder()\n .measureValueType(\"DOUBLE\")\n .sourceColumn(\"p99_cpu_utilization\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:timestreamquery:ScheduledQuery\n properties:\n executionRoleArn: ${exampleAwsIamRole.arn}\n name: ${exampleAwsTimestreamwriteTable.tableName}\n queryString: |\n SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n \tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\n FROM exampledatabase.exampletable\n WHERE measure_name = 'metrics' AND time \u003e ago(2h)\n GROUP BY region, hostname, az, BIN(time, 15s)\n ORDER BY binned_timestamp ASC\n LIMIT 5\n errorReportConfiguration:\n s3Configuration:\n bucketName: ${exampleAwsS3Bucket.bucket}\n notificationConfiguration:\n snsConfiguration:\n topicArn: ${exampleAwsSnsTopic.arn}\n scheduleConfiguration:\n scheduleExpression: rate(1 hour)\n targetConfiguration:\n timestreamConfiguration:\n databaseName: ${results.databaseName}\n tableName: ${resultsAwsTimestreamwriteTable.tableName}\n timeColumn: binned_timestamp\n dimensionMappings:\n - dimensionValueType: VARCHAR\n name: az\n - dimensionValueType: VARCHAR\n name: region\n - dimensionValueType: VARCHAR\n name: hostname\n multiMeasureMappings:\n targetMultiMeasureName: multi-metrics\n multiMeasureAttributeMappings:\n - measureValueType: DOUBLE\n sourceColumn: avg_cpu_utilization\n - measureValueType: DOUBLE\n sourceColumn: p90_cpu_utilization\n - measureValueType: DOUBLE\n sourceColumn: p95_cpu_utilization\n - measureValueType: DOUBLE\n sourceColumn: p99_cpu_utilization\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Multi-step Example\n\nTo ingest data before creating a scheduled query, this example provides multiple steps:\n\n1. Create the prerequisite infrastructure\n2. Ingest data\n3. Create the scheduled query\n\n### Step 1. Create the prerequisite infrastructure\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.s3.Bucket(\"test\", {\n bucket: \"example\",\n forceDestroy: true,\n});\nconst testTopic = new aws.sns.Topic(\"test\", {name: \"example\"});\nconst testQueue = new aws.sqs.Queue(\"test\", {\n name: \"example\",\n sqsManagedSseEnabled: true,\n});\nconst testTopicSubscription = new aws.sns.TopicSubscription(\"test\", {\n topic: testTopic.arn,\n protocol: \"sqs\",\n endpoint: testQueue.arn,\n});\nconst testQueuePolicy = new aws.sqs.QueuePolicy(\"test\", {\n queueUrl: testQueue.id,\n policy: pulumi.jsonStringify({\n Version: \"2012-10-17\",\n Statement: [{\n Effect: \"Allow\",\n Principal: {\n AWS: \"*\",\n },\n Action: [\"sqs:SendMessage\"],\n Resource: testQueue.arn,\n Condition: {\n ArnEquals: {\n \"aws:SourceArn\": testTopic.arn,\n },\n },\n }],\n }),\n});\nconst testRole = new aws.iam.Role(\"test\", {\n name: \"example\",\n assumeRolePolicy: JSON.stringify({\n Version: \"2012-10-17\",\n Statement: [{\n Effect: \"Allow\",\n Principal: {\n Service: \"timestream.amazonaws.com\",\n },\n Action: \"sts:AssumeRole\",\n }],\n }),\n tags: {\n Name: \"example\",\n },\n});\nconst testRolePolicy = new aws.iam.RolePolicy(\"test\", {\n name: \"example\",\n role: testRole.id,\n policy: JSON.stringify({\n Version: \"2012-10-17\",\n Statement: [{\n Action: [\n \"kms:Decrypt\",\n \"sns:Publish\",\n \"timestream:describeEndpoints\",\n \"timestream:Select\",\n \"timestream:SelectValues\",\n \"timestream:WriteRecords\",\n \"s3:PutObject\",\n ],\n Resource: \"*\",\n Effect: \"Allow\",\n }],\n }),\n});\nconst testDatabase = new aws.timestreamwrite.Database(\"test\", {databaseName: \"exampledatabase\"});\nconst testTable = new aws.timestreamwrite.Table(\"test\", {\n databaseName: testDatabase.databaseName,\n tableName: \"exampletable\",\n magneticStoreWriteProperties: {\n enableMagneticStoreWrites: true,\n },\n retentionProperties: {\n magneticStoreRetentionPeriodInDays: 1,\n memoryStoreRetentionPeriodInHours: 1,\n },\n});\nconst results = new aws.timestreamwrite.Database(\"results\", {databaseName: \"exampledatabase-results\"});\nconst resultsTable = new aws.timestreamwrite.Table(\"results\", {\n databaseName: results.databaseName,\n tableName: \"exampletable-results\",\n magneticStoreWriteProperties: {\n enableMagneticStoreWrites: true,\n },\n retentionProperties: {\n magneticStoreRetentionPeriodInDays: 1,\n memoryStoreRetentionPeriodInHours: 1,\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\ntest = aws.s3.Bucket(\"test\",\n bucket=\"example\",\n force_destroy=True)\ntest_topic = aws.sns.Topic(\"test\", name=\"example\")\ntest_queue = aws.sqs.Queue(\"test\",\n name=\"example\",\n sqs_managed_sse_enabled=True)\ntest_topic_subscription = aws.sns.TopicSubscription(\"test\",\n topic=test_topic.arn,\n protocol=\"sqs\",\n endpoint=test_queue.arn)\ntest_queue_policy = aws.sqs.QueuePolicy(\"test\",\n queue_url=test_queue.id,\n policy=pulumi.Output.json_dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"*\",\n },\n \"Action\": [\"sqs:SendMessage\"],\n \"Resource\": test_queue.arn,\n \"Condition\": {\n \"ArnEquals\": {\n \"aws:SourceArn\": test_topic.arn,\n },\n },\n }],\n }))\ntest_role = aws.iam.Role(\"test\",\n name=\"example\",\n assume_role_policy=json.dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"Service\": \"timestream.amazonaws.com\",\n },\n \"Action\": \"sts:AssumeRole\",\n }],\n }),\n tags={\n \"Name\": \"example\",\n })\ntest_role_policy = aws.iam.RolePolicy(\"test\",\n name=\"example\",\n role=test_role.id,\n policy=json.dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Action\": [\n \"kms:Decrypt\",\n \"sns:Publish\",\n \"timestream:describeEndpoints\",\n \"timestream:Select\",\n \"timestream:SelectValues\",\n \"timestream:WriteRecords\",\n \"s3:PutObject\",\n ],\n \"Resource\": \"*\",\n \"Effect\": \"Allow\",\n }],\n }))\ntest_database = aws.timestreamwrite.Database(\"test\", database_name=\"exampledatabase\")\ntest_table = aws.timestreamwrite.Table(\"test\",\n database_name=test_database.database_name,\n table_name=\"exampletable\",\n magnetic_store_write_properties={\n \"enable_magnetic_store_writes\": True,\n },\n retention_properties={\n \"magnetic_store_retention_period_in_days\": 1,\n \"memory_store_retention_period_in_hours\": 1,\n })\nresults = aws.timestreamwrite.Database(\"results\", database_name=\"exampledatabase-results\")\nresults_table = aws.timestreamwrite.Table(\"results\",\n database_name=results.database_name,\n table_name=\"exampletable-results\",\n magnetic_store_write_properties={\n \"enable_magnetic_store_writes\": True,\n },\n retention_properties={\n \"magnetic_store_retention_period_in_days\": 1,\n \"memory_store_retention_period_in_hours\": 1,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Aws.S3.Bucket(\"test\", new()\n {\n BucketName = \"example\",\n ForceDestroy = true,\n });\n\n var testTopic = new Aws.Sns.Topic(\"test\", new()\n {\n Name = \"example\",\n });\n\n var testQueue = new Aws.Sqs.Queue(\"test\", new()\n {\n Name = \"example\",\n SqsManagedSseEnabled = true,\n });\n\n var testTopicSubscription = new Aws.Sns.TopicSubscription(\"test\", new()\n {\n Topic = testTopic.Arn,\n Protocol = \"sqs\",\n Endpoint = testQueue.Arn,\n });\n\n var testQueuePolicy = new Aws.Sqs.QueuePolicy(\"test\", new()\n {\n QueueUrl = testQueue.Id,\n Policy = Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n {\n [\"Version\"] = \"2012-10-17\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Effect\"] = \"Allow\",\n [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"AWS\"] = \"*\",\n },\n [\"Action\"] = new[]\n {\n \"sqs:SendMessage\",\n },\n [\"Resource\"] = testQueue.Arn,\n [\"Condition\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"ArnEquals\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"aws:SourceArn\"] = testTopic.Arn,\n },\n },\n },\n },\n })),\n });\n\n var testRole = new Aws.Iam.Role(\"test\", new()\n {\n Name = \"example\",\n AssumeRolePolicy = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"Version\"] = \"2012-10-17\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Effect\"] = \"Allow\",\n [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"Service\"] = \"timestream.amazonaws.com\",\n },\n [\"Action\"] = \"sts:AssumeRole\",\n },\n },\n }),\n Tags = \n {\n { \"Name\", \"example\" },\n },\n });\n\n var testRolePolicy = new Aws.Iam.RolePolicy(\"test\", new()\n {\n Name = \"example\",\n Role = testRole.Id,\n Policy = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"Version\"] = \"2012-10-17\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Action\"] = new[]\n {\n \"kms:Decrypt\",\n \"sns:Publish\",\n \"timestream:describeEndpoints\",\n \"timestream:Select\",\n \"timestream:SelectValues\",\n \"timestream:WriteRecords\",\n \"s3:PutObject\",\n },\n [\"Resource\"] = \"*\",\n [\"Effect\"] = \"Allow\",\n },\n },\n }),\n });\n\n var testDatabase = new Aws.TimestreamWrite.Database(\"test\", new()\n {\n DatabaseName = \"exampledatabase\",\n });\n\n var testTable = new Aws.TimestreamWrite.Table(\"test\", new()\n {\n DatabaseName = testDatabase.DatabaseName,\n TableName = \"exampletable\",\n MagneticStoreWriteProperties = new Aws.TimestreamWrite.Inputs.TableMagneticStoreWritePropertiesArgs\n {\n EnableMagneticStoreWrites = true,\n },\n RetentionProperties = new Aws.TimestreamWrite.Inputs.TableRetentionPropertiesArgs\n {\n MagneticStoreRetentionPeriodInDays = 1,\n MemoryStoreRetentionPeriodInHours = 1,\n },\n });\n\n var results = new Aws.TimestreamWrite.Database(\"results\", new()\n {\n DatabaseName = \"exampledatabase-results\",\n });\n\n var resultsTable = new Aws.TimestreamWrite.Table(\"results\", new()\n {\n DatabaseName = results.DatabaseName,\n TableName = \"exampletable-results\",\n MagneticStoreWriteProperties = new Aws.TimestreamWrite.Inputs.TableMagneticStoreWritePropertiesArgs\n {\n EnableMagneticStoreWrites = true,\n },\n RetentionProperties = new Aws.TimestreamWrite.Inputs.TableRetentionPropertiesArgs\n {\n MagneticStoreRetentionPeriodInDays = 1,\n MemoryStoreRetentionPeriodInHours = 1,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/s3\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sqs\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/timestreamwrite\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := s3.NewBucket(ctx, \"test\", \u0026s3.BucketArgs{\n\t\t\tBucket: pulumi.String(\"example\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTopic, err := sns.NewTopic(ctx, \"test\", \u0026sns.TopicArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestQueue, err := sqs.NewQueue(ctx, \"test\", \u0026sqs.QueueArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tSqsManagedSseEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sns.NewTopicSubscription(ctx, \"test\", \u0026sns.TopicSubscriptionArgs{\n\t\t\tTopic: testTopic.Arn,\n\t\t\tProtocol: pulumi.String(\"sqs\"),\n\t\t\tEndpoint: testQueue.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sqs.NewQueuePolicy(ctx, \"test\", \u0026sqs.QueuePolicyArgs{\n\t\t\tQueueUrl: testQueue.ID(),\n\t\t\tPolicy: pulumi.All(testQueue.Arn, testTopic.Arn).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\ttestQueueArn := _args[0].(string)\n\t\t\t\ttestTopicArn := _args[1].(string)\n\t\t\t\tvar _zero string\n\t\t\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\"Version\": \"2012-10-17\",\n\t\t\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"AWS\": \"*\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\t\t\"sqs:SendMessage\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Resource\": testQueueArn,\n\t\t\t\t\t\t\t\"Condition\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"ArnEquals\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"aws:SourceArn\": testTopicArn,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn _zero, err\n\t\t\t\t}\n\t\t\t\tjson0 := string(tmpJSON0)\n\t\t\t\treturn json0, nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"Version\": \"2012-10-17\",\n\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\"Service\": \"timestream.amazonaws.com\",\n\t\t\t\t\t},\n\t\t\t\t\t\"Action\": \"sts:AssumeRole\",\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\ttestRole, err := iam.NewRole(ctx, \"test\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tAssumeRolePolicy: pulumi.String(json1),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"example\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON2, err := json.Marshal(map[string]interface{}{\n\t\t\t\"Version\": \"2012-10-17\",\n\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\"kms:Decrypt\",\n\t\t\t\t\t\t\"sns:Publish\",\n\t\t\t\t\t\t\"timestream:describeEndpoints\",\n\t\t\t\t\t\t\"timestream:Select\",\n\t\t\t\t\t\t\"timestream:SelectValues\",\n\t\t\t\t\t\t\"timestream:WriteRecords\",\n\t\t\t\t\t\t\"s3:PutObject\",\n\t\t\t\t\t},\n\t\t\t\t\t\"Resource\": \"*\",\n\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson2 := string(tmpJSON2)\n\t\t_, err = iam.NewRolePolicy(ctx, \"test\", \u0026iam.RolePolicyArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tRole: testRole.ID(),\n\t\t\tPolicy: pulumi.String(json2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestDatabase, err := timestreamwrite.NewDatabase(ctx, \"test\", \u0026timestreamwrite.DatabaseArgs{\n\t\t\tDatabaseName: pulumi.String(\"exampledatabase\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = timestreamwrite.NewTable(ctx, \"test\", \u0026timestreamwrite.TableArgs{\n\t\t\tDatabaseName: testDatabase.DatabaseName,\n\t\t\tTableName: pulumi.String(\"exampletable\"),\n\t\t\tMagneticStoreWriteProperties: \u0026timestreamwrite.TableMagneticStoreWritePropertiesArgs{\n\t\t\t\tEnableMagneticStoreWrites: pulumi.Bool(true),\n\t\t\t},\n\t\t\tRetentionProperties: \u0026timestreamwrite.TableRetentionPropertiesArgs{\n\t\t\t\tMagneticStoreRetentionPeriodInDays: pulumi.Int(1),\n\t\t\t\tMemoryStoreRetentionPeriodInHours: pulumi.Int(1),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tresults, err := timestreamwrite.NewDatabase(ctx, \"results\", \u0026timestreamwrite.DatabaseArgs{\n\t\t\tDatabaseName: pulumi.String(\"exampledatabase-results\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = timestreamwrite.NewTable(ctx, \"results\", \u0026timestreamwrite.TableArgs{\n\t\t\tDatabaseName: results.DatabaseName,\n\t\t\tTableName: pulumi.String(\"exampletable-results\"),\n\t\t\tMagneticStoreWriteProperties: \u0026timestreamwrite.TableMagneticStoreWritePropertiesArgs{\n\t\t\t\tEnableMagneticStoreWrites: pulumi.Bool(true),\n\t\t\t},\n\t\t\tRetentionProperties: \u0026timestreamwrite.TableRetentionPropertiesArgs{\n\t\t\t\tMagneticStoreRetentionPeriodInDays: pulumi.Int(1),\n\t\t\t\tMemoryStoreRetentionPeriodInHours: pulumi.Int(1),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.s3.Bucket;\nimport com.pulumi.aws.s3.BucketArgs;\nimport com.pulumi.aws.sns.Topic;\nimport com.pulumi.aws.sns.TopicArgs;\nimport com.pulumi.aws.sqs.Queue;\nimport com.pulumi.aws.sqs.QueueArgs;\nimport com.pulumi.aws.sns.TopicSubscription;\nimport com.pulumi.aws.sns.TopicSubscriptionArgs;\nimport com.pulumi.aws.sqs.QueuePolicy;\nimport com.pulumi.aws.sqs.QueuePolicyArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport com.pulumi.aws.timestreamwrite.Database;\nimport com.pulumi.aws.timestreamwrite.DatabaseArgs;\nimport com.pulumi.aws.timestreamwrite.Table;\nimport com.pulumi.aws.timestreamwrite.TableArgs;\nimport com.pulumi.aws.timestreamwrite.inputs.TableMagneticStoreWritePropertiesArgs;\nimport com.pulumi.aws.timestreamwrite.inputs.TableRetentionPropertiesArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Bucket(\"test\", BucketArgs.builder()\n .bucket(\"example\")\n .forceDestroy(true)\n .build());\n\n var testTopic = new Topic(\"testTopic\", TopicArgs.builder()\n .name(\"example\")\n .build());\n\n var testQueue = new Queue(\"testQueue\", QueueArgs.builder()\n .name(\"example\")\n .sqsManagedSseEnabled(true)\n .build());\n\n var testTopicSubscription = new TopicSubscription(\"testTopicSubscription\", TopicSubscriptionArgs.builder()\n .topic(testTopic.arn())\n .protocol(\"sqs\")\n .endpoint(testQueue.arn())\n .build());\n\n var testQueuePolicy = new QueuePolicy(\"testQueuePolicy\", QueuePolicyArgs.builder()\n .queueUrl(testQueue.id())\n .policy(Output.tuple(testQueue.arn(), testTopic.arn()).applyValue(values -\u003e {\n var testQueueArn = values.t1;\n var testTopicArn = values.t2;\n return serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Principal\", jsonObject(\n jsonProperty(\"AWS\", \"*\")\n )),\n jsonProperty(\"Action\", jsonArray(\"sqs:SendMessage\")),\n jsonProperty(\"Resource\", testQueueArn),\n jsonProperty(\"Condition\", jsonObject(\n jsonProperty(\"ArnEquals\", jsonObject(\n jsonProperty(\"aws:SourceArn\", testTopicArn)\n ))\n ))\n )))\n ));\n }))\n .build());\n\n var testRole = new Role(\"testRole\", RoleArgs.builder()\n .name(\"example\")\n .assumeRolePolicy(serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Principal\", jsonObject(\n jsonProperty(\"Service\", \"timestream.amazonaws.com\")\n )),\n jsonProperty(\"Action\", \"sts:AssumeRole\")\n )))\n )))\n .tags(Map.of(\"Name\", \"example\"))\n .build());\n\n var testRolePolicy = new RolePolicy(\"testRolePolicy\", RolePolicyArgs.builder()\n .name(\"example\")\n .role(testRole.id())\n .policy(serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Action\", jsonArray(\n \"kms:Decrypt\", \n \"sns:Publish\", \n \"timestream:describeEndpoints\", \n \"timestream:Select\", \n \"timestream:SelectValues\", \n \"timestream:WriteRecords\", \n \"s3:PutObject\"\n )),\n jsonProperty(\"Resource\", \"*\"),\n jsonProperty(\"Effect\", \"Allow\")\n )))\n )))\n .build());\n\n var testDatabase = new Database(\"testDatabase\", DatabaseArgs.builder()\n .databaseName(\"exampledatabase\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .databaseName(testDatabase.databaseName())\n .tableName(\"exampletable\")\n .magneticStoreWriteProperties(TableMagneticStoreWritePropertiesArgs.builder()\n .enableMagneticStoreWrites(true)\n .build())\n .retentionProperties(TableRetentionPropertiesArgs.builder()\n .magneticStoreRetentionPeriodInDays(1)\n .memoryStoreRetentionPeriodInHours(1)\n .build())\n .build());\n\n var results = new Database(\"results\", DatabaseArgs.builder()\n .databaseName(\"exampledatabase-results\")\n .build());\n\n var resultsTable = new Table(\"resultsTable\", TableArgs.builder()\n .databaseName(results.databaseName())\n .tableName(\"exampletable-results\")\n .magneticStoreWriteProperties(TableMagneticStoreWritePropertiesArgs.builder()\n .enableMagneticStoreWrites(true)\n .build())\n .retentionProperties(TableRetentionPropertiesArgs.builder()\n .magneticStoreRetentionPeriodInDays(1)\n .memoryStoreRetentionPeriodInHours(1)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:s3:Bucket\n properties:\n bucket: example\n forceDestroy: true\n testTopic:\n type: aws:sns:Topic\n name: test\n properties:\n name: example\n testQueue:\n type: aws:sqs:Queue\n name: test\n properties:\n name: example\n sqsManagedSseEnabled: true\n testTopicSubscription:\n type: aws:sns:TopicSubscription\n name: test\n properties:\n topic: ${testTopic.arn}\n protocol: sqs\n endpoint: ${testQueue.arn}\n testQueuePolicy:\n type: aws:sqs:QueuePolicy\n name: test\n properties:\n queueUrl: ${testQueue.id}\n policy:\n fn::toJSON:\n Version: 2012-10-17\n Statement:\n - Effect: Allow\n Principal:\n AWS: '*'\n Action:\n - sqs:SendMessage\n Resource: ${testQueue.arn}\n Condition:\n ArnEquals:\n aws:SourceArn: ${testTopic.arn}\n testRole:\n type: aws:iam:Role\n name: test\n properties:\n name: example\n assumeRolePolicy:\n fn::toJSON:\n Version: 2012-10-17\n Statement:\n - Effect: Allow\n Principal:\n Service: timestream.amazonaws.com\n Action: sts:AssumeRole\n tags:\n Name: example\n testRolePolicy:\n type: aws:iam:RolePolicy\n name: test\n properties:\n name: example\n role: ${testRole.id}\n policy:\n fn::toJSON:\n Version: 2012-10-17\n Statement:\n - Action:\n - kms:Decrypt\n - sns:Publish\n - timestream:describeEndpoints\n - timestream:Select\n - timestream:SelectValues\n - timestream:WriteRecords\n - s3:PutObject\n Resource: '*'\n Effect: Allow\n testDatabase:\n type: aws:timestreamwrite:Database\n name: test\n properties:\n databaseName: exampledatabase\n testTable:\n type: aws:timestreamwrite:Table\n name: test\n properties:\n databaseName: ${testDatabase.databaseName}\n tableName: exampletable\n magneticStoreWriteProperties:\n enableMagneticStoreWrites: true\n retentionProperties:\n magneticStoreRetentionPeriodInDays: 1\n memoryStoreRetentionPeriodInHours: 1\n results:\n type: aws:timestreamwrite:Database\n properties:\n databaseName: exampledatabase-results\n resultsTable:\n type: aws:timestreamwrite:Table\n name: results\n properties:\n databaseName: ${results.databaseName}\n tableName: exampletable-results\n magneticStoreWriteProperties:\n enableMagneticStoreWrites: true\n retentionProperties:\n magneticStoreRetentionPeriodInDays: 1\n memoryStoreRetentionPeriodInHours: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n#### Step 2. Ingest data\n\nThis is done with Amazon Timestream Write [WriteRecords](https://docs.aws.amazon.com/timestream/latest/developerguide/API_WriteRecords.html).\n\n### Step 3. Create the scheduled query\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.timestreamquery.ScheduledQuery(\"example\", {\n executionRoleArn: exampleAwsIamRole.arn,\n name: exampleAwsTimestreamwriteTable.tableName,\n queryString: `SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n\\x09ROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n\\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n\\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n\\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\nFROM exampledatabase.exampletable\nWHERE measure_name = 'metrics' AND time \u003e ago(2h)\nGROUP BY region, hostname, az, BIN(time, 15s)\nORDER BY binned_timestamp ASC\nLIMIT 5\n`,\n errorReportConfiguration: {\n s3Configuration: {\n bucketName: exampleAwsS3Bucket.bucket,\n },\n },\n notificationConfiguration: {\n snsConfiguration: {\n topicArn: exampleAwsSnsTopic.arn,\n },\n },\n scheduleConfiguration: {\n scheduleExpression: \"rate(1 hour)\",\n },\n targetConfiguration: {\n timestreamConfiguration: {\n databaseName: results.databaseName,\n tableName: resultsAwsTimestreamwriteTable.tableName,\n timeColumn: \"binned_timestamp\",\n dimensionMappings: [\n {\n dimensionValueType: \"VARCHAR\",\n name: \"az\",\n },\n {\n dimensionValueType: \"VARCHAR\",\n name: \"region\",\n },\n {\n dimensionValueType: \"VARCHAR\",\n name: \"hostname\",\n },\n ],\n multiMeasureMappings: {\n targetMultiMeasureName: \"multi-metrics\",\n multiMeasureAttributeMappings: [\n {\n measureValueType: \"DOUBLE\",\n sourceColumn: \"avg_cpu_utilization\",\n },\n {\n measureValueType: \"DOUBLE\",\n sourceColumn: \"p90_cpu_utilization\",\n },\n {\n measureValueType: \"DOUBLE\",\n sourceColumn: \"p95_cpu_utilization\",\n },\n {\n measureValueType: \"DOUBLE\",\n sourceColumn: \"p99_cpu_utilization\",\n },\n ],\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.timestreamquery.ScheduledQuery(\"example\",\n execution_role_arn=example_aws_iam_role[\"arn\"],\n name=example_aws_timestreamwrite_table[\"tableName\"],\n query_string=\"\"\"SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n\\x09ROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n\\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n\\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n\\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\nFROM exampledatabase.exampletable\nWHERE measure_name = 'metrics' AND time \u003e ago(2h)\nGROUP BY region, hostname, az, BIN(time, 15s)\nORDER BY binned_timestamp ASC\nLIMIT 5\n\"\"\",\n error_report_configuration={\n \"s3_configuration\": {\n \"bucket_name\": example_aws_s3_bucket[\"bucket\"],\n },\n },\n notification_configuration={\n \"sns_configuration\": {\n \"topic_arn\": example_aws_sns_topic[\"arn\"],\n },\n },\n schedule_configuration={\n \"schedule_expression\": \"rate(1 hour)\",\n },\n target_configuration={\n \"timestream_configuration\": {\n \"database_name\": results[\"databaseName\"],\n \"table_name\": results_aws_timestreamwrite_table[\"tableName\"],\n \"time_column\": \"binned_timestamp\",\n \"dimension_mappings\": [\n {\n \"dimension_value_type\": \"VARCHAR\",\n \"name\": \"az\",\n },\n {\n \"dimension_value_type\": \"VARCHAR\",\n \"name\": \"region\",\n },\n {\n \"dimension_value_type\": \"VARCHAR\",\n \"name\": \"hostname\",\n },\n ],\n \"multi_measure_mappings\": {\n \"target_multi_measure_name\": \"multi-metrics\",\n \"multi_measure_attribute_mappings\": [\n {\n \"measure_value_type\": \"DOUBLE\",\n \"source_column\": \"avg_cpu_utilization\",\n },\n {\n \"measure_value_type\": \"DOUBLE\",\n \"source_column\": \"p90_cpu_utilization\",\n },\n {\n \"measure_value_type\": \"DOUBLE\",\n \"source_column\": \"p95_cpu_utilization\",\n },\n {\n \"measure_value_type\": \"DOUBLE\",\n \"source_column\": \"p99_cpu_utilization\",\n },\n ],\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.TimestreamQuery.ScheduledQuery(\"example\", new()\n {\n ExecutionRoleArn = exampleAwsIamRole.Arn,\n Name = exampleAwsTimestreamwriteTable.TableName,\n QueryString = @\"SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\nFROM exampledatabase.exampletable\nWHERE measure_name = 'metrics' AND time \u003e ago(2h)\nGROUP BY region, hostname, az, BIN(time, 15s)\nORDER BY binned_timestamp ASC\nLIMIT 5\n\",\n ErrorReportConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryErrorReportConfigurationArgs\n {\n S3Configuration = new Aws.TimestreamQuery.Inputs.ScheduledQueryErrorReportConfigurationS3ConfigurationArgs\n {\n BucketName = exampleAwsS3Bucket.Bucket,\n },\n },\n NotificationConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryNotificationConfigurationArgs\n {\n SnsConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryNotificationConfigurationSnsConfigurationArgs\n {\n TopicArn = exampleAwsSnsTopic.Arn,\n },\n },\n ScheduleConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryScheduleConfigurationArgs\n {\n ScheduleExpression = \"rate(1 hour)\",\n },\n TargetConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationArgs\n {\n TimestreamConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationArgs\n {\n DatabaseName = results.DatabaseName,\n TableName = resultsAwsTimestreamwriteTable.TableName,\n TimeColumn = \"binned_timestamp\",\n DimensionMappings = new[]\n {\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs\n {\n DimensionValueType = \"VARCHAR\",\n Name = \"az\",\n },\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs\n {\n DimensionValueType = \"VARCHAR\",\n Name = \"region\",\n },\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs\n {\n DimensionValueType = \"VARCHAR\",\n Name = \"hostname\",\n },\n },\n MultiMeasureMappings = new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsArgs\n {\n TargetMultiMeasureName = \"multi-metrics\",\n MultiMeasureAttributeMappings = new[]\n {\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs\n {\n MeasureValueType = \"DOUBLE\",\n SourceColumn = \"avg_cpu_utilization\",\n },\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs\n {\n MeasureValueType = \"DOUBLE\",\n SourceColumn = \"p90_cpu_utilization\",\n },\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs\n {\n MeasureValueType = \"DOUBLE\",\n SourceColumn = \"p95_cpu_utilization\",\n },\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs\n {\n MeasureValueType = \"DOUBLE\",\n SourceColumn = \"p99_cpu_utilization\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/timestreamquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := timestreamquery.NewScheduledQuery(ctx, \"example\", \u0026timestreamquery.ScheduledQueryArgs{\n\t\t\tExecutionRoleArn: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tName: pulumi.Any(exampleAwsTimestreamwriteTable.TableName),\n\t\t\tQueryString: pulumi.String(`SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\nFROM exampledatabase.exampletable\nWHERE measure_name = 'metrics' AND time \u003e ago(2h)\nGROUP BY region, hostname, az, BIN(time, 15s)\nORDER BY binned_timestamp ASC\nLIMIT 5\n`),\n\t\t\tErrorReportConfiguration: \u0026timestreamquery.ScheduledQueryErrorReportConfigurationArgs{\n\t\t\t\tS3Configuration: \u0026timestreamquery.ScheduledQueryErrorReportConfigurationS3ConfigurationArgs{\n\t\t\t\t\tBucketName: pulumi.Any(exampleAwsS3Bucket.Bucket),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNotificationConfiguration: \u0026timestreamquery.ScheduledQueryNotificationConfigurationArgs{\n\t\t\t\tSnsConfiguration: \u0026timestreamquery.ScheduledQueryNotificationConfigurationSnsConfigurationArgs{\n\t\t\t\t\tTopicArn: pulumi.Any(exampleAwsSnsTopic.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t\tScheduleConfiguration: \u0026timestreamquery.ScheduledQueryScheduleConfigurationArgs{\n\t\t\t\tScheduleExpression: pulumi.String(\"rate(1 hour)\"),\n\t\t\t},\n\t\t\tTargetConfiguration: \u0026timestreamquery.ScheduledQueryTargetConfigurationArgs{\n\t\t\t\tTimestreamConfiguration: \u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationArgs{\n\t\t\t\t\tDatabaseName: pulumi.Any(results.DatabaseName),\n\t\t\t\t\tTableName: pulumi.Any(resultsAwsTimestreamwriteTable.TableName),\n\t\t\t\t\tTimeColumn: pulumi.String(\"binned_timestamp\"),\n\t\t\t\t\tDimensionMappings: timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArray{\n\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs{\n\t\t\t\t\t\t\tDimensionValueType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\tName: pulumi.String(\"az\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs{\n\t\t\t\t\t\t\tDimensionValueType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\tName: pulumi.String(\"region\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs{\n\t\t\t\t\t\t\tDimensionValueType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\tName: pulumi.String(\"hostname\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMultiMeasureMappings: \u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsArgs{\n\t\t\t\t\t\tTargetMultiMeasureName: pulumi.String(\"multi-metrics\"),\n\t\t\t\t\t\tMultiMeasureAttributeMappings: timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArray{\n\t\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs{\n\t\t\t\t\t\t\t\tMeasureValueType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t\t\t\tSourceColumn: pulumi.String(\"avg_cpu_utilization\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs{\n\t\t\t\t\t\t\t\tMeasureValueType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t\t\t\tSourceColumn: pulumi.String(\"p90_cpu_utilization\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs{\n\t\t\t\t\t\t\t\tMeasureValueType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t\t\t\tSourceColumn: pulumi.String(\"p95_cpu_utilization\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs{\n\t\t\t\t\t\t\t\tMeasureValueType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t\t\t\tSourceColumn: pulumi.String(\"p99_cpu_utilization\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.timestreamquery.ScheduledQuery;\nimport com.pulumi.aws.timestreamquery.ScheduledQueryArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryErrorReportConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryErrorReportConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryNotificationConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryNotificationConfigurationSnsConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryScheduleConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryTargetConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ScheduledQuery(\"example\", ScheduledQueryArgs.builder()\n .executionRoleArn(exampleAwsIamRole.arn())\n .name(exampleAwsTimestreamwriteTable.tableName())\n .queryString(\"\"\"\nSELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\nFROM exampledatabase.exampletable\nWHERE measure_name = 'metrics' AND time \u003e ago(2h)\nGROUP BY region, hostname, az, BIN(time, 15s)\nORDER BY binned_timestamp ASC\nLIMIT 5\n \"\"\")\n .errorReportConfiguration(ScheduledQueryErrorReportConfigurationArgs.builder()\n .s3Configuration(ScheduledQueryErrorReportConfigurationS3ConfigurationArgs.builder()\n .bucketName(exampleAwsS3Bucket.bucket())\n .build())\n .build())\n .notificationConfiguration(ScheduledQueryNotificationConfigurationArgs.builder()\n .snsConfiguration(ScheduledQueryNotificationConfigurationSnsConfigurationArgs.builder()\n .topicArn(exampleAwsSnsTopic.arn())\n .build())\n .build())\n .scheduleConfiguration(ScheduledQueryScheduleConfigurationArgs.builder()\n .scheduleExpression(\"rate(1 hour)\")\n .build())\n .targetConfiguration(ScheduledQueryTargetConfigurationArgs.builder()\n .timestreamConfiguration(ScheduledQueryTargetConfigurationTimestreamConfigurationArgs.builder()\n .databaseName(results.databaseName())\n .tableName(resultsAwsTimestreamwriteTable.tableName())\n .timeColumn(\"binned_timestamp\")\n .dimensionMappings( \n ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs.builder()\n .dimensionValueType(\"VARCHAR\")\n .name(\"az\")\n .build(),\n ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs.builder()\n .dimensionValueType(\"VARCHAR\")\n .name(\"region\")\n .build(),\n ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs.builder()\n .dimensionValueType(\"VARCHAR\")\n .name(\"hostname\")\n .build())\n .multiMeasureMappings(ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsArgs.builder()\n .targetMultiMeasureName(\"multi-metrics\")\n .multiMeasureAttributeMappings( \n ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs.builder()\n .measureValueType(\"DOUBLE\")\n .sourceColumn(\"avg_cpu_utilization\")\n .build(),\n ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs.builder()\n .measureValueType(\"DOUBLE\")\n .sourceColumn(\"p90_cpu_utilization\")\n .build(),\n ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs.builder()\n .measureValueType(\"DOUBLE\")\n .sourceColumn(\"p95_cpu_utilization\")\n .build(),\n ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs.builder()\n .measureValueType(\"DOUBLE\")\n .sourceColumn(\"p99_cpu_utilization\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:timestreamquery:ScheduledQuery\n properties:\n executionRoleArn: ${exampleAwsIamRole.arn}\n name: ${exampleAwsTimestreamwriteTable.tableName}\n queryString: |\n SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n \tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\n FROM exampledatabase.exampletable\n WHERE measure_name = 'metrics' AND time \u003e ago(2h)\n GROUP BY region, hostname, az, BIN(time, 15s)\n ORDER BY binned_timestamp ASC\n LIMIT 5\n errorReportConfiguration:\n s3Configuration:\n bucketName: ${exampleAwsS3Bucket.bucket}\n notificationConfiguration:\n snsConfiguration:\n topicArn: ${exampleAwsSnsTopic.arn}\n scheduleConfiguration:\n scheduleExpression: rate(1 hour)\n targetConfiguration:\n timestreamConfiguration:\n databaseName: ${results.databaseName}\n tableName: ${resultsAwsTimestreamwriteTable.tableName}\n timeColumn: binned_timestamp\n dimensionMappings:\n - dimensionValueType: VARCHAR\n name: az\n - dimensionValueType: VARCHAR\n name: region\n - dimensionValueType: VARCHAR\n name: hostname\n multiMeasureMappings:\n targetMultiMeasureName: multi-metrics\n multiMeasureAttributeMappings:\n - measureValueType: DOUBLE\n sourceColumn: avg_cpu_utilization\n - measureValueType: DOUBLE\n sourceColumn: p90_cpu_utilization\n - measureValueType: DOUBLE\n sourceColumn: p95_cpu_utilization\n - measureValueType: DOUBLE\n sourceColumn: p99_cpu_utilization\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Timestream Query Scheduled Query using the `arn`. For example:\n\n```sh\n$ pulumi import aws:timestreamquery/scheduledQuery:ScheduledQuery example arn:aws:timestream:us-west-2:012345678901:scheduled-query/tf-acc-test-7774188528604787105-e13659544fe66c8d\n```\n", + "description": "Resource for managing an AWS Timestream Query Scheduled Query.\n\n## Example Usage\n\n### Basic Usage\n\nBefore creating a scheduled query, you must have a source database and table with ingested data. Below is a multi-step example, providing an opportunity for data ingestion.\n\nIf your infrastructure is already set up—including the source database and table with data, results database and table, error report S3 bucket, SNS topic, and IAM role—you can create a scheduled query as follows:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.timestreamquery.ScheduledQuery(\"example\", {\n executionRoleArn: exampleAwsIamRole.arn,\n name: exampleAwsTimestreamwriteTable.tableName,\n queryString: `SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n\\\\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n\\\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n\\\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n\\\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\nFROM exampledatabase.exampletable\nWHERE measure_name = 'metrics' AND time \u003e ago(2h)\nGROUP BY region, hostname, az, BIN(time, 15s)\nORDER BY binned_timestamp ASC\nLIMIT 5\n`,\n errorReportConfiguration: {\n s3Configuration: {\n bucketName: exampleAwsS3Bucket.bucket,\n },\n },\n notificationConfiguration: {\n snsConfiguration: {\n topicArn: exampleAwsSnsTopic.arn,\n },\n },\n scheduleConfiguration: {\n scheduleExpression: \"rate(1 hour)\",\n },\n targetConfiguration: {\n timestreamConfiguration: {\n databaseName: results.databaseName,\n tableName: resultsAwsTimestreamwriteTable.tableName,\n timeColumn: \"binned_timestamp\",\n dimensionMappings: [\n {\n dimensionValueType: \"VARCHAR\",\n name: \"az\",\n },\n {\n dimensionValueType: \"VARCHAR\",\n name: \"region\",\n },\n {\n dimensionValueType: \"VARCHAR\",\n name: \"hostname\",\n },\n ],\n multiMeasureMappings: {\n targetMultiMeasureName: \"multi-metrics\",\n multiMeasureAttributeMappings: [\n {\n measureValueType: \"DOUBLE\",\n sourceColumn: \"avg_cpu_utilization\",\n },\n {\n measureValueType: \"DOUBLE\",\n sourceColumn: \"p90_cpu_utilization\",\n },\n {\n measureValueType: \"DOUBLE\",\n sourceColumn: \"p95_cpu_utilization\",\n },\n {\n measureValueType: \"DOUBLE\",\n sourceColumn: \"p99_cpu_utilization\",\n },\n ],\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.timestreamquery.ScheduledQuery(\"example\",\n execution_role_arn=example_aws_iam_role[\"arn\"],\n name=example_aws_timestreamwrite_table[\"tableName\"],\n query_string=\"\"\"SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n\\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\nFROM exampledatabase.exampletable\nWHERE measure_name = 'metrics' AND time \u003e ago(2h)\nGROUP BY region, hostname, az, BIN(time, 15s)\nORDER BY binned_timestamp ASC\nLIMIT 5\n\"\"\",\n error_report_configuration={\n \"s3_configuration\": {\n \"bucket_name\": example_aws_s3_bucket[\"bucket\"],\n },\n },\n notification_configuration={\n \"sns_configuration\": {\n \"topic_arn\": example_aws_sns_topic[\"arn\"],\n },\n },\n schedule_configuration={\n \"schedule_expression\": \"rate(1 hour)\",\n },\n target_configuration={\n \"timestream_configuration\": {\n \"database_name\": results[\"databaseName\"],\n \"table_name\": results_aws_timestreamwrite_table[\"tableName\"],\n \"time_column\": \"binned_timestamp\",\n \"dimension_mappings\": [\n {\n \"dimension_value_type\": \"VARCHAR\",\n \"name\": \"az\",\n },\n {\n \"dimension_value_type\": \"VARCHAR\",\n \"name\": \"region\",\n },\n {\n \"dimension_value_type\": \"VARCHAR\",\n \"name\": \"hostname\",\n },\n ],\n \"multi_measure_mappings\": {\n \"target_multi_measure_name\": \"multi-metrics\",\n \"multi_measure_attribute_mappings\": [\n {\n \"measure_value_type\": \"DOUBLE\",\n \"source_column\": \"avg_cpu_utilization\",\n },\n {\n \"measure_value_type\": \"DOUBLE\",\n \"source_column\": \"p90_cpu_utilization\",\n },\n {\n \"measure_value_type\": \"DOUBLE\",\n \"source_column\": \"p95_cpu_utilization\",\n },\n {\n \"measure_value_type\": \"DOUBLE\",\n \"source_column\": \"p99_cpu_utilization\",\n },\n ],\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.TimestreamQuery.ScheduledQuery(\"example\", new()\n {\n ExecutionRoleArn = exampleAwsIamRole.Arn,\n Name = exampleAwsTimestreamwriteTable.TableName,\n QueryString = @\"SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n\\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\nFROM exampledatabase.exampletable\nWHERE measure_name = 'metrics' AND time \u003e ago(2h)\nGROUP BY region, hostname, az, BIN(time, 15s)\nORDER BY binned_timestamp ASC\nLIMIT 5\n\",\n ErrorReportConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryErrorReportConfigurationArgs\n {\n S3Configuration = new Aws.TimestreamQuery.Inputs.ScheduledQueryErrorReportConfigurationS3ConfigurationArgs\n {\n BucketName = exampleAwsS3Bucket.Bucket,\n },\n },\n NotificationConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryNotificationConfigurationArgs\n {\n SnsConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryNotificationConfigurationSnsConfigurationArgs\n {\n TopicArn = exampleAwsSnsTopic.Arn,\n },\n },\n ScheduleConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryScheduleConfigurationArgs\n {\n ScheduleExpression = \"rate(1 hour)\",\n },\n TargetConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationArgs\n {\n TimestreamConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationArgs\n {\n DatabaseName = results.DatabaseName,\n TableName = resultsAwsTimestreamwriteTable.TableName,\n TimeColumn = \"binned_timestamp\",\n DimensionMappings = new[]\n {\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs\n {\n DimensionValueType = \"VARCHAR\",\n Name = \"az\",\n },\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs\n {\n DimensionValueType = \"VARCHAR\",\n Name = \"region\",\n },\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs\n {\n DimensionValueType = \"VARCHAR\",\n Name = \"hostname\",\n },\n },\n MultiMeasureMappings = new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsArgs\n {\n TargetMultiMeasureName = \"multi-metrics\",\n MultiMeasureAttributeMappings = new[]\n {\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs\n {\n MeasureValueType = \"DOUBLE\",\n SourceColumn = \"avg_cpu_utilization\",\n },\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs\n {\n MeasureValueType = \"DOUBLE\",\n SourceColumn = \"p90_cpu_utilization\",\n },\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs\n {\n MeasureValueType = \"DOUBLE\",\n SourceColumn = \"p95_cpu_utilization\",\n },\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs\n {\n MeasureValueType = \"DOUBLE\",\n SourceColumn = \"p99_cpu_utilization\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/timestreamquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := timestreamquery.NewScheduledQuery(ctx, \"example\", \u0026timestreamquery.ScheduledQueryArgs{\n\t\t\tExecutionRoleArn: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tName: pulumi.Any(exampleAwsTimestreamwriteTable.TableName),\n\t\t\tQueryString: pulumi.String(`SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n\\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\nFROM exampledatabase.exampletable\nWHERE measure_name = 'metrics' AND time \u003e ago(2h)\nGROUP BY region, hostname, az, BIN(time, 15s)\nORDER BY binned_timestamp ASC\nLIMIT 5\n`),\n\t\t\tErrorReportConfiguration: \u0026timestreamquery.ScheduledQueryErrorReportConfigurationArgs{\n\t\t\t\tS3Configuration: \u0026timestreamquery.ScheduledQueryErrorReportConfigurationS3ConfigurationArgs{\n\t\t\t\t\tBucketName: pulumi.Any(exampleAwsS3Bucket.Bucket),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNotificationConfiguration: \u0026timestreamquery.ScheduledQueryNotificationConfigurationArgs{\n\t\t\t\tSnsConfiguration: \u0026timestreamquery.ScheduledQueryNotificationConfigurationSnsConfigurationArgs{\n\t\t\t\t\tTopicArn: pulumi.Any(exampleAwsSnsTopic.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t\tScheduleConfiguration: \u0026timestreamquery.ScheduledQueryScheduleConfigurationArgs{\n\t\t\t\tScheduleExpression: pulumi.String(\"rate(1 hour)\"),\n\t\t\t},\n\t\t\tTargetConfiguration: \u0026timestreamquery.ScheduledQueryTargetConfigurationArgs{\n\t\t\t\tTimestreamConfiguration: \u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationArgs{\n\t\t\t\t\tDatabaseName: pulumi.Any(results.DatabaseName),\n\t\t\t\t\tTableName: pulumi.Any(resultsAwsTimestreamwriteTable.TableName),\n\t\t\t\t\tTimeColumn: pulumi.String(\"binned_timestamp\"),\n\t\t\t\t\tDimensionMappings: timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArray{\n\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs{\n\t\t\t\t\t\t\tDimensionValueType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\tName: pulumi.String(\"az\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs{\n\t\t\t\t\t\t\tDimensionValueType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\tName: pulumi.String(\"region\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs{\n\t\t\t\t\t\t\tDimensionValueType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\tName: pulumi.String(\"hostname\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMultiMeasureMappings: \u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsArgs{\n\t\t\t\t\t\tTargetMultiMeasureName: pulumi.String(\"multi-metrics\"),\n\t\t\t\t\t\tMultiMeasureAttributeMappings: timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArray{\n\t\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs{\n\t\t\t\t\t\t\t\tMeasureValueType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t\t\t\tSourceColumn: pulumi.String(\"avg_cpu_utilization\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs{\n\t\t\t\t\t\t\t\tMeasureValueType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t\t\t\tSourceColumn: pulumi.String(\"p90_cpu_utilization\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs{\n\t\t\t\t\t\t\t\tMeasureValueType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t\t\t\tSourceColumn: pulumi.String(\"p95_cpu_utilization\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs{\n\t\t\t\t\t\t\t\tMeasureValueType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t\t\t\tSourceColumn: pulumi.String(\"p99_cpu_utilization\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.timestreamquery.ScheduledQuery;\nimport com.pulumi.aws.timestreamquery.ScheduledQueryArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryErrorReportConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryErrorReportConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryNotificationConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryNotificationConfigurationSnsConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryScheduleConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryTargetConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ScheduledQuery(\"example\", ScheduledQueryArgs.builder()\n .executionRoleArn(exampleAwsIamRole.arn())\n .name(exampleAwsTimestreamwriteTable.tableName())\n .queryString(\"\"\"\nSELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n\\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\nFROM exampledatabase.exampletable\nWHERE measure_name = 'metrics' AND time \u003e ago(2h)\nGROUP BY region, hostname, az, BIN(time, 15s)\nORDER BY binned_timestamp ASC\nLIMIT 5\n \"\"\")\n .errorReportConfiguration(ScheduledQueryErrorReportConfigurationArgs.builder()\n .s3Configuration(ScheduledQueryErrorReportConfigurationS3ConfigurationArgs.builder()\n .bucketName(exampleAwsS3Bucket.bucket())\n .build())\n .build())\n .notificationConfiguration(ScheduledQueryNotificationConfigurationArgs.builder()\n .snsConfiguration(ScheduledQueryNotificationConfigurationSnsConfigurationArgs.builder()\n .topicArn(exampleAwsSnsTopic.arn())\n .build())\n .build())\n .scheduleConfiguration(ScheduledQueryScheduleConfigurationArgs.builder()\n .scheduleExpression(\"rate(1 hour)\")\n .build())\n .targetConfiguration(ScheduledQueryTargetConfigurationArgs.builder()\n .timestreamConfiguration(ScheduledQueryTargetConfigurationTimestreamConfigurationArgs.builder()\n .databaseName(results.databaseName())\n .tableName(resultsAwsTimestreamwriteTable.tableName())\n .timeColumn(\"binned_timestamp\")\n .dimensionMappings( \n ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs.builder()\n .dimensionValueType(\"VARCHAR\")\n .name(\"az\")\n .build(),\n ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs.builder()\n .dimensionValueType(\"VARCHAR\")\n .name(\"region\")\n .build(),\n ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs.builder()\n .dimensionValueType(\"VARCHAR\")\n .name(\"hostname\")\n .build())\n .multiMeasureMappings(ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsArgs.builder()\n .targetMultiMeasureName(\"multi-metrics\")\n .multiMeasureAttributeMappings( \n ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs.builder()\n .measureValueType(\"DOUBLE\")\n .sourceColumn(\"avg_cpu_utilization\")\n .build(),\n ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs.builder()\n .measureValueType(\"DOUBLE\")\n .sourceColumn(\"p90_cpu_utilization\")\n .build(),\n ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs.builder()\n .measureValueType(\"DOUBLE\")\n .sourceColumn(\"p95_cpu_utilization\")\n .build(),\n ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs.builder()\n .measureValueType(\"DOUBLE\")\n .sourceColumn(\"p99_cpu_utilization\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:timestreamquery:ScheduledQuery\n properties:\n executionRoleArn: ${exampleAwsIamRole.arn}\n name: ${exampleAwsTimestreamwriteTable.tableName}\n queryString: |\n SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n \\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\n FROM exampledatabase.exampletable\n WHERE measure_name = 'metrics' AND time \u003e ago(2h)\n GROUP BY region, hostname, az, BIN(time, 15s)\n ORDER BY binned_timestamp ASC\n LIMIT 5\n errorReportConfiguration:\n s3Configuration:\n bucketName: ${exampleAwsS3Bucket.bucket}\n notificationConfiguration:\n snsConfiguration:\n topicArn: ${exampleAwsSnsTopic.arn}\n scheduleConfiguration:\n scheduleExpression: rate(1 hour)\n targetConfiguration:\n timestreamConfiguration:\n databaseName: ${results.databaseName}\n tableName: ${resultsAwsTimestreamwriteTable.tableName}\n timeColumn: binned_timestamp\n dimensionMappings:\n - dimensionValueType: VARCHAR\n name: az\n - dimensionValueType: VARCHAR\n name: region\n - dimensionValueType: VARCHAR\n name: hostname\n multiMeasureMappings:\n targetMultiMeasureName: multi-metrics\n multiMeasureAttributeMappings:\n - measureValueType: DOUBLE\n sourceColumn: avg_cpu_utilization\n - measureValueType: DOUBLE\n sourceColumn: p90_cpu_utilization\n - measureValueType: DOUBLE\n sourceColumn: p95_cpu_utilization\n - measureValueType: DOUBLE\n sourceColumn: p99_cpu_utilization\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Multi-step Example\n\nTo ingest data before creating a scheduled query, this example provides multiple steps:\n\n1. Create the prerequisite infrastructure\n2. Ingest data\n3. Create the scheduled query\n\n### Step 1. Create the prerequisite infrastructure\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.s3.Bucket(\"test\", {\n bucket: \"example\",\n forceDestroy: true,\n});\nconst testTopic = new aws.sns.Topic(\"test\", {name: \"example\"});\nconst testQueue = new aws.sqs.Queue(\"test\", {\n name: \"example\",\n sqsManagedSseEnabled: true,\n});\nconst testTopicSubscription = new aws.sns.TopicSubscription(\"test\", {\n topic: testTopic.arn,\n protocol: \"sqs\",\n endpoint: testQueue.arn,\n});\nconst testQueuePolicy = new aws.sqs.QueuePolicy(\"test\", {\n queueUrl: testQueue.id,\n policy: pulumi.jsonStringify({\n Version: \"2012-10-17\",\n Statement: [{\n Effect: \"Allow\",\n Principal: {\n AWS: \"*\",\n },\n Action: [\"sqs:SendMessage\"],\n Resource: testQueue.arn,\n Condition: {\n ArnEquals: {\n \"aws:SourceArn\": testTopic.arn,\n },\n },\n }],\n }),\n});\nconst testRole = new aws.iam.Role(\"test\", {\n name: \"example\",\n assumeRolePolicy: JSON.stringify({\n Version: \"2012-10-17\",\n Statement: [{\n Effect: \"Allow\",\n Principal: {\n Service: \"timestream.amazonaws.com\",\n },\n Action: \"sts:AssumeRole\",\n }],\n }),\n tags: {\n Name: \"example\",\n },\n});\nconst testRolePolicy = new aws.iam.RolePolicy(\"test\", {\n name: \"example\",\n role: testRole.id,\n policy: JSON.stringify({\n Version: \"2012-10-17\",\n Statement: [{\n Action: [\n \"kms:Decrypt\",\n \"sns:Publish\",\n \"timestream:describeEndpoints\",\n \"timestream:Select\",\n \"timestream:SelectValues\",\n \"timestream:WriteRecords\",\n \"s3:PutObject\",\n ],\n Resource: \"*\",\n Effect: \"Allow\",\n }],\n }),\n});\nconst testDatabase = new aws.timestreamwrite.Database(\"test\", {databaseName: \"exampledatabase\"});\nconst testTable = new aws.timestreamwrite.Table(\"test\", {\n databaseName: testDatabase.databaseName,\n tableName: \"exampletable\",\n magneticStoreWriteProperties: {\n enableMagneticStoreWrites: true,\n },\n retentionProperties: {\n magneticStoreRetentionPeriodInDays: 1,\n memoryStoreRetentionPeriodInHours: 1,\n },\n});\nconst results = new aws.timestreamwrite.Database(\"results\", {databaseName: \"exampledatabase-results\"});\nconst resultsTable = new aws.timestreamwrite.Table(\"results\", {\n databaseName: results.databaseName,\n tableName: \"exampletable-results\",\n magneticStoreWriteProperties: {\n enableMagneticStoreWrites: true,\n },\n retentionProperties: {\n magneticStoreRetentionPeriodInDays: 1,\n memoryStoreRetentionPeriodInHours: 1,\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\ntest = aws.s3.Bucket(\"test\",\n bucket=\"example\",\n force_destroy=True)\ntest_topic = aws.sns.Topic(\"test\", name=\"example\")\ntest_queue = aws.sqs.Queue(\"test\",\n name=\"example\",\n sqs_managed_sse_enabled=True)\ntest_topic_subscription = aws.sns.TopicSubscription(\"test\",\n topic=test_topic.arn,\n protocol=\"sqs\",\n endpoint=test_queue.arn)\ntest_queue_policy = aws.sqs.QueuePolicy(\"test\",\n queue_url=test_queue.id,\n policy=pulumi.Output.json_dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"*\",\n },\n \"Action\": [\"sqs:SendMessage\"],\n \"Resource\": test_queue.arn,\n \"Condition\": {\n \"ArnEquals\": {\n \"aws:SourceArn\": test_topic.arn,\n },\n },\n }],\n }))\ntest_role = aws.iam.Role(\"test\",\n name=\"example\",\n assume_role_policy=json.dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"Service\": \"timestream.amazonaws.com\",\n },\n \"Action\": \"sts:AssumeRole\",\n }],\n }),\n tags={\n \"Name\": \"example\",\n })\ntest_role_policy = aws.iam.RolePolicy(\"test\",\n name=\"example\",\n role=test_role.id,\n policy=json.dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Action\": [\n \"kms:Decrypt\",\n \"sns:Publish\",\n \"timestream:describeEndpoints\",\n \"timestream:Select\",\n \"timestream:SelectValues\",\n \"timestream:WriteRecords\",\n \"s3:PutObject\",\n ],\n \"Resource\": \"*\",\n \"Effect\": \"Allow\",\n }],\n }))\ntest_database = aws.timestreamwrite.Database(\"test\", database_name=\"exampledatabase\")\ntest_table = aws.timestreamwrite.Table(\"test\",\n database_name=test_database.database_name,\n table_name=\"exampletable\",\n magnetic_store_write_properties={\n \"enable_magnetic_store_writes\": True,\n },\n retention_properties={\n \"magnetic_store_retention_period_in_days\": 1,\n \"memory_store_retention_period_in_hours\": 1,\n })\nresults = aws.timestreamwrite.Database(\"results\", database_name=\"exampledatabase-results\")\nresults_table = aws.timestreamwrite.Table(\"results\",\n database_name=results.database_name,\n table_name=\"exampletable-results\",\n magnetic_store_write_properties={\n \"enable_magnetic_store_writes\": True,\n },\n retention_properties={\n \"magnetic_store_retention_period_in_days\": 1,\n \"memory_store_retention_period_in_hours\": 1,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Aws.S3.Bucket(\"test\", new()\n {\n BucketName = \"example\",\n ForceDestroy = true,\n });\n\n var testTopic = new Aws.Sns.Topic(\"test\", new()\n {\n Name = \"example\",\n });\n\n var testQueue = new Aws.Sqs.Queue(\"test\", new()\n {\n Name = \"example\",\n SqsManagedSseEnabled = true,\n });\n\n var testTopicSubscription = new Aws.Sns.TopicSubscription(\"test\", new()\n {\n Topic = testTopic.Arn,\n Protocol = \"sqs\",\n Endpoint = testQueue.Arn,\n });\n\n var testQueuePolicy = new Aws.Sqs.QueuePolicy(\"test\", new()\n {\n QueueUrl = testQueue.Id,\n Policy = Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n {\n [\"Version\"] = \"2012-10-17\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Effect\"] = \"Allow\",\n [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"AWS\"] = \"*\",\n },\n [\"Action\"] = new[]\n {\n \"sqs:SendMessage\",\n },\n [\"Resource\"] = testQueue.Arn,\n [\"Condition\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"ArnEquals\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"aws:SourceArn\"] = testTopic.Arn,\n },\n },\n },\n },\n })),\n });\n\n var testRole = new Aws.Iam.Role(\"test\", new()\n {\n Name = \"example\",\n AssumeRolePolicy = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"Version\"] = \"2012-10-17\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Effect\"] = \"Allow\",\n [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"Service\"] = \"timestream.amazonaws.com\",\n },\n [\"Action\"] = \"sts:AssumeRole\",\n },\n },\n }),\n Tags = \n {\n { \"Name\", \"example\" },\n },\n });\n\n var testRolePolicy = new Aws.Iam.RolePolicy(\"test\", new()\n {\n Name = \"example\",\n Role = testRole.Id,\n Policy = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"Version\"] = \"2012-10-17\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Action\"] = new[]\n {\n \"kms:Decrypt\",\n \"sns:Publish\",\n \"timestream:describeEndpoints\",\n \"timestream:Select\",\n \"timestream:SelectValues\",\n \"timestream:WriteRecords\",\n \"s3:PutObject\",\n },\n [\"Resource\"] = \"*\",\n [\"Effect\"] = \"Allow\",\n },\n },\n }),\n });\n\n var testDatabase = new Aws.TimestreamWrite.Database(\"test\", new()\n {\n DatabaseName = \"exampledatabase\",\n });\n\n var testTable = new Aws.TimestreamWrite.Table(\"test\", new()\n {\n DatabaseName = testDatabase.DatabaseName,\n TableName = \"exampletable\",\n MagneticStoreWriteProperties = new Aws.TimestreamWrite.Inputs.TableMagneticStoreWritePropertiesArgs\n {\n EnableMagneticStoreWrites = true,\n },\n RetentionProperties = new Aws.TimestreamWrite.Inputs.TableRetentionPropertiesArgs\n {\n MagneticStoreRetentionPeriodInDays = 1,\n MemoryStoreRetentionPeriodInHours = 1,\n },\n });\n\n var results = new Aws.TimestreamWrite.Database(\"results\", new()\n {\n DatabaseName = \"exampledatabase-results\",\n });\n\n var resultsTable = new Aws.TimestreamWrite.Table(\"results\", new()\n {\n DatabaseName = results.DatabaseName,\n TableName = \"exampletable-results\",\n MagneticStoreWriteProperties = new Aws.TimestreamWrite.Inputs.TableMagneticStoreWritePropertiesArgs\n {\n EnableMagneticStoreWrites = true,\n },\n RetentionProperties = new Aws.TimestreamWrite.Inputs.TableRetentionPropertiesArgs\n {\n MagneticStoreRetentionPeriodInDays = 1,\n MemoryStoreRetentionPeriodInHours = 1,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/s3\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sqs\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/timestreamwrite\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := s3.NewBucket(ctx, \"test\", \u0026s3.BucketArgs{\n\t\t\tBucket: pulumi.String(\"example\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTopic, err := sns.NewTopic(ctx, \"test\", \u0026sns.TopicArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestQueue, err := sqs.NewQueue(ctx, \"test\", \u0026sqs.QueueArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tSqsManagedSseEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sns.NewTopicSubscription(ctx, \"test\", \u0026sns.TopicSubscriptionArgs{\n\t\t\tTopic: testTopic.Arn,\n\t\t\tProtocol: pulumi.String(\"sqs\"),\n\t\t\tEndpoint: testQueue.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sqs.NewQueuePolicy(ctx, \"test\", \u0026sqs.QueuePolicyArgs{\n\t\t\tQueueUrl: testQueue.ID(),\n\t\t\tPolicy: pulumi.All(testQueue.Arn, testTopic.Arn).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\ttestQueueArn := _args[0].(string)\n\t\t\t\ttestTopicArn := _args[1].(string)\n\t\t\t\tvar _zero string\n\t\t\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\"Version\": \"2012-10-17\",\n\t\t\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"AWS\": \"*\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\t\t\"sqs:SendMessage\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Resource\": testQueueArn,\n\t\t\t\t\t\t\t\"Condition\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"ArnEquals\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"aws:SourceArn\": testTopicArn,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn _zero, err\n\t\t\t\t}\n\t\t\t\tjson0 := string(tmpJSON0)\n\t\t\t\treturn json0, nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"Version\": \"2012-10-17\",\n\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\"Service\": \"timestream.amazonaws.com\",\n\t\t\t\t\t},\n\t\t\t\t\t\"Action\": \"sts:AssumeRole\",\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\ttestRole, err := iam.NewRole(ctx, \"test\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tAssumeRolePolicy: pulumi.String(json1),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"example\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON2, err := json.Marshal(map[string]interface{}{\n\t\t\t\"Version\": \"2012-10-17\",\n\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\"kms:Decrypt\",\n\t\t\t\t\t\t\"sns:Publish\",\n\t\t\t\t\t\t\"timestream:describeEndpoints\",\n\t\t\t\t\t\t\"timestream:Select\",\n\t\t\t\t\t\t\"timestream:SelectValues\",\n\t\t\t\t\t\t\"timestream:WriteRecords\",\n\t\t\t\t\t\t\"s3:PutObject\",\n\t\t\t\t\t},\n\t\t\t\t\t\"Resource\": \"*\",\n\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson2 := string(tmpJSON2)\n\t\t_, err = iam.NewRolePolicy(ctx, \"test\", \u0026iam.RolePolicyArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tRole: testRole.ID(),\n\t\t\tPolicy: pulumi.String(json2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestDatabase, err := timestreamwrite.NewDatabase(ctx, \"test\", \u0026timestreamwrite.DatabaseArgs{\n\t\t\tDatabaseName: pulumi.String(\"exampledatabase\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = timestreamwrite.NewTable(ctx, \"test\", \u0026timestreamwrite.TableArgs{\n\t\t\tDatabaseName: testDatabase.DatabaseName,\n\t\t\tTableName: pulumi.String(\"exampletable\"),\n\t\t\tMagneticStoreWriteProperties: \u0026timestreamwrite.TableMagneticStoreWritePropertiesArgs{\n\t\t\t\tEnableMagneticStoreWrites: pulumi.Bool(true),\n\t\t\t},\n\t\t\tRetentionProperties: \u0026timestreamwrite.TableRetentionPropertiesArgs{\n\t\t\t\tMagneticStoreRetentionPeriodInDays: pulumi.Int(1),\n\t\t\t\tMemoryStoreRetentionPeriodInHours: pulumi.Int(1),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tresults, err := timestreamwrite.NewDatabase(ctx, \"results\", \u0026timestreamwrite.DatabaseArgs{\n\t\t\tDatabaseName: pulumi.String(\"exampledatabase-results\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = timestreamwrite.NewTable(ctx, \"results\", \u0026timestreamwrite.TableArgs{\n\t\t\tDatabaseName: results.DatabaseName,\n\t\t\tTableName: pulumi.String(\"exampletable-results\"),\n\t\t\tMagneticStoreWriteProperties: \u0026timestreamwrite.TableMagneticStoreWritePropertiesArgs{\n\t\t\t\tEnableMagneticStoreWrites: pulumi.Bool(true),\n\t\t\t},\n\t\t\tRetentionProperties: \u0026timestreamwrite.TableRetentionPropertiesArgs{\n\t\t\t\tMagneticStoreRetentionPeriodInDays: pulumi.Int(1),\n\t\t\t\tMemoryStoreRetentionPeriodInHours: pulumi.Int(1),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.s3.Bucket;\nimport com.pulumi.aws.s3.BucketArgs;\nimport com.pulumi.aws.sns.Topic;\nimport com.pulumi.aws.sns.TopicArgs;\nimport com.pulumi.aws.sqs.Queue;\nimport com.pulumi.aws.sqs.QueueArgs;\nimport com.pulumi.aws.sns.TopicSubscription;\nimport com.pulumi.aws.sns.TopicSubscriptionArgs;\nimport com.pulumi.aws.sqs.QueuePolicy;\nimport com.pulumi.aws.sqs.QueuePolicyArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport com.pulumi.aws.timestreamwrite.Database;\nimport com.pulumi.aws.timestreamwrite.DatabaseArgs;\nimport com.pulumi.aws.timestreamwrite.Table;\nimport com.pulumi.aws.timestreamwrite.TableArgs;\nimport com.pulumi.aws.timestreamwrite.inputs.TableMagneticStoreWritePropertiesArgs;\nimport com.pulumi.aws.timestreamwrite.inputs.TableRetentionPropertiesArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Bucket(\"test\", BucketArgs.builder()\n .bucket(\"example\")\n .forceDestroy(true)\n .build());\n\n var testTopic = new Topic(\"testTopic\", TopicArgs.builder()\n .name(\"example\")\n .build());\n\n var testQueue = new Queue(\"testQueue\", QueueArgs.builder()\n .name(\"example\")\n .sqsManagedSseEnabled(true)\n .build());\n\n var testTopicSubscription = new TopicSubscription(\"testTopicSubscription\", TopicSubscriptionArgs.builder()\n .topic(testTopic.arn())\n .protocol(\"sqs\")\n .endpoint(testQueue.arn())\n .build());\n\n var testQueuePolicy = new QueuePolicy(\"testQueuePolicy\", QueuePolicyArgs.builder()\n .queueUrl(testQueue.id())\n .policy(Output.tuple(testQueue.arn(), testTopic.arn()).applyValue(values -\u003e {\n var testQueueArn = values.t1;\n var testTopicArn = values.t2;\n return serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Principal\", jsonObject(\n jsonProperty(\"AWS\", \"*\")\n )),\n jsonProperty(\"Action\", jsonArray(\"sqs:SendMessage\")),\n jsonProperty(\"Resource\", testQueueArn),\n jsonProperty(\"Condition\", jsonObject(\n jsonProperty(\"ArnEquals\", jsonObject(\n jsonProperty(\"aws:SourceArn\", testTopicArn)\n ))\n ))\n )))\n ));\n }))\n .build());\n\n var testRole = new Role(\"testRole\", RoleArgs.builder()\n .name(\"example\")\n .assumeRolePolicy(serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Principal\", jsonObject(\n jsonProperty(\"Service\", \"timestream.amazonaws.com\")\n )),\n jsonProperty(\"Action\", \"sts:AssumeRole\")\n )))\n )))\n .tags(Map.of(\"Name\", \"example\"))\n .build());\n\n var testRolePolicy = new RolePolicy(\"testRolePolicy\", RolePolicyArgs.builder()\n .name(\"example\")\n .role(testRole.id())\n .policy(serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Action\", jsonArray(\n \"kms:Decrypt\", \n \"sns:Publish\", \n \"timestream:describeEndpoints\", \n \"timestream:Select\", \n \"timestream:SelectValues\", \n \"timestream:WriteRecords\", \n \"s3:PutObject\"\n )),\n jsonProperty(\"Resource\", \"*\"),\n jsonProperty(\"Effect\", \"Allow\")\n )))\n )))\n .build());\n\n var testDatabase = new Database(\"testDatabase\", DatabaseArgs.builder()\n .databaseName(\"exampledatabase\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .databaseName(testDatabase.databaseName())\n .tableName(\"exampletable\")\n .magneticStoreWriteProperties(TableMagneticStoreWritePropertiesArgs.builder()\n .enableMagneticStoreWrites(true)\n .build())\n .retentionProperties(TableRetentionPropertiesArgs.builder()\n .magneticStoreRetentionPeriodInDays(1)\n .memoryStoreRetentionPeriodInHours(1)\n .build())\n .build());\n\n var results = new Database(\"results\", DatabaseArgs.builder()\n .databaseName(\"exampledatabase-results\")\n .build());\n\n var resultsTable = new Table(\"resultsTable\", TableArgs.builder()\n .databaseName(results.databaseName())\n .tableName(\"exampletable-results\")\n .magneticStoreWriteProperties(TableMagneticStoreWritePropertiesArgs.builder()\n .enableMagneticStoreWrites(true)\n .build())\n .retentionProperties(TableRetentionPropertiesArgs.builder()\n .magneticStoreRetentionPeriodInDays(1)\n .memoryStoreRetentionPeriodInHours(1)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:s3:Bucket\n properties:\n bucket: example\n forceDestroy: true\n testTopic:\n type: aws:sns:Topic\n name: test\n properties:\n name: example\n testQueue:\n type: aws:sqs:Queue\n name: test\n properties:\n name: example\n sqsManagedSseEnabled: true\n testTopicSubscription:\n type: aws:sns:TopicSubscription\n name: test\n properties:\n topic: ${testTopic.arn}\n protocol: sqs\n endpoint: ${testQueue.arn}\n testQueuePolicy:\n type: aws:sqs:QueuePolicy\n name: test\n properties:\n queueUrl: ${testQueue.id}\n policy:\n fn::toJSON:\n Version: 2012-10-17\n Statement:\n - Effect: Allow\n Principal:\n AWS: '*'\n Action:\n - sqs:SendMessage\n Resource: ${testQueue.arn}\n Condition:\n ArnEquals:\n aws:SourceArn: ${testTopic.arn}\n testRole:\n type: aws:iam:Role\n name: test\n properties:\n name: example\n assumeRolePolicy:\n fn::toJSON:\n Version: 2012-10-17\n Statement:\n - Effect: Allow\n Principal:\n Service: timestream.amazonaws.com\n Action: sts:AssumeRole\n tags:\n Name: example\n testRolePolicy:\n type: aws:iam:RolePolicy\n name: test\n properties:\n name: example\n role: ${testRole.id}\n policy:\n fn::toJSON:\n Version: 2012-10-17\n Statement:\n - Action:\n - kms:Decrypt\n - sns:Publish\n - timestream:describeEndpoints\n - timestream:Select\n - timestream:SelectValues\n - timestream:WriteRecords\n - s3:PutObject\n Resource: '*'\n Effect: Allow\n testDatabase:\n type: aws:timestreamwrite:Database\n name: test\n properties:\n databaseName: exampledatabase\n testTable:\n type: aws:timestreamwrite:Table\n name: test\n properties:\n databaseName: ${testDatabase.databaseName}\n tableName: exampletable\n magneticStoreWriteProperties:\n enableMagneticStoreWrites: true\n retentionProperties:\n magneticStoreRetentionPeriodInDays: 1\n memoryStoreRetentionPeriodInHours: 1\n results:\n type: aws:timestreamwrite:Database\n properties:\n databaseName: exampledatabase-results\n resultsTable:\n type: aws:timestreamwrite:Table\n name: results\n properties:\n databaseName: ${results.databaseName}\n tableName: exampletable-results\n magneticStoreWriteProperties:\n enableMagneticStoreWrites: true\n retentionProperties:\n magneticStoreRetentionPeriodInDays: 1\n memoryStoreRetentionPeriodInHours: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n#### Step 2. Ingest data\n\nThis is done with Amazon Timestream Write [WriteRecords](https://docs.aws.amazon.com/timestream/latest/developerguide/API_WriteRecords.html).\n\n### Step 3. Create the scheduled query\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.timestreamquery.ScheduledQuery(\"example\", {\n executionRoleArn: exampleAwsIamRole.arn,\n name: exampleAwsTimestreamwriteTable.tableName,\n queryString: `SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n\\\\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n\\\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n\\\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n\\\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\nFROM exampledatabase.exampletable\nWHERE measure_name = 'metrics' AND time \u003e ago(2h)\nGROUP BY region, hostname, az, BIN(time, 15s)\nORDER BY binned_timestamp ASC\nLIMIT 5\n`,\n errorReportConfiguration: {\n s3Configuration: {\n bucketName: exampleAwsS3Bucket.bucket,\n },\n },\n notificationConfiguration: {\n snsConfiguration: {\n topicArn: exampleAwsSnsTopic.arn,\n },\n },\n scheduleConfiguration: {\n scheduleExpression: \"rate(1 hour)\",\n },\n targetConfiguration: {\n timestreamConfiguration: {\n databaseName: results.databaseName,\n tableName: resultsAwsTimestreamwriteTable.tableName,\n timeColumn: \"binned_timestamp\",\n dimensionMappings: [\n {\n dimensionValueType: \"VARCHAR\",\n name: \"az\",\n },\n {\n dimensionValueType: \"VARCHAR\",\n name: \"region\",\n },\n {\n dimensionValueType: \"VARCHAR\",\n name: \"hostname\",\n },\n ],\n multiMeasureMappings: {\n targetMultiMeasureName: \"multi-metrics\",\n multiMeasureAttributeMappings: [\n {\n measureValueType: \"DOUBLE\",\n sourceColumn: \"avg_cpu_utilization\",\n },\n {\n measureValueType: \"DOUBLE\",\n sourceColumn: \"p90_cpu_utilization\",\n },\n {\n measureValueType: \"DOUBLE\",\n sourceColumn: \"p95_cpu_utilization\",\n },\n {\n measureValueType: \"DOUBLE\",\n sourceColumn: \"p99_cpu_utilization\",\n },\n ],\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.timestreamquery.ScheduledQuery(\"example\",\n execution_role_arn=example_aws_iam_role[\"arn\"],\n name=example_aws_timestreamwrite_table[\"tableName\"],\n query_string=\"\"\"SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n\\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\nFROM exampledatabase.exampletable\nWHERE measure_name = 'metrics' AND time \u003e ago(2h)\nGROUP BY region, hostname, az, BIN(time, 15s)\nORDER BY binned_timestamp ASC\nLIMIT 5\n\"\"\",\n error_report_configuration={\n \"s3_configuration\": {\n \"bucket_name\": example_aws_s3_bucket[\"bucket\"],\n },\n },\n notification_configuration={\n \"sns_configuration\": {\n \"topic_arn\": example_aws_sns_topic[\"arn\"],\n },\n },\n schedule_configuration={\n \"schedule_expression\": \"rate(1 hour)\",\n },\n target_configuration={\n \"timestream_configuration\": {\n \"database_name\": results[\"databaseName\"],\n \"table_name\": results_aws_timestreamwrite_table[\"tableName\"],\n \"time_column\": \"binned_timestamp\",\n \"dimension_mappings\": [\n {\n \"dimension_value_type\": \"VARCHAR\",\n \"name\": \"az\",\n },\n {\n \"dimension_value_type\": \"VARCHAR\",\n \"name\": \"region\",\n },\n {\n \"dimension_value_type\": \"VARCHAR\",\n \"name\": \"hostname\",\n },\n ],\n \"multi_measure_mappings\": {\n \"target_multi_measure_name\": \"multi-metrics\",\n \"multi_measure_attribute_mappings\": [\n {\n \"measure_value_type\": \"DOUBLE\",\n \"source_column\": \"avg_cpu_utilization\",\n },\n {\n \"measure_value_type\": \"DOUBLE\",\n \"source_column\": \"p90_cpu_utilization\",\n },\n {\n \"measure_value_type\": \"DOUBLE\",\n \"source_column\": \"p95_cpu_utilization\",\n },\n {\n \"measure_value_type\": \"DOUBLE\",\n \"source_column\": \"p99_cpu_utilization\",\n },\n ],\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.TimestreamQuery.ScheduledQuery(\"example\", new()\n {\n ExecutionRoleArn = exampleAwsIamRole.Arn,\n Name = exampleAwsTimestreamwriteTable.TableName,\n QueryString = @\"SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n\\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\nFROM exampledatabase.exampletable\nWHERE measure_name = 'metrics' AND time \u003e ago(2h)\nGROUP BY region, hostname, az, BIN(time, 15s)\nORDER BY binned_timestamp ASC\nLIMIT 5\n\",\n ErrorReportConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryErrorReportConfigurationArgs\n {\n S3Configuration = new Aws.TimestreamQuery.Inputs.ScheduledQueryErrorReportConfigurationS3ConfigurationArgs\n {\n BucketName = exampleAwsS3Bucket.Bucket,\n },\n },\n NotificationConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryNotificationConfigurationArgs\n {\n SnsConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryNotificationConfigurationSnsConfigurationArgs\n {\n TopicArn = exampleAwsSnsTopic.Arn,\n },\n },\n ScheduleConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryScheduleConfigurationArgs\n {\n ScheduleExpression = \"rate(1 hour)\",\n },\n TargetConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationArgs\n {\n TimestreamConfiguration = new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationArgs\n {\n DatabaseName = results.DatabaseName,\n TableName = resultsAwsTimestreamwriteTable.TableName,\n TimeColumn = \"binned_timestamp\",\n DimensionMappings = new[]\n {\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs\n {\n DimensionValueType = \"VARCHAR\",\n Name = \"az\",\n },\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs\n {\n DimensionValueType = \"VARCHAR\",\n Name = \"region\",\n },\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs\n {\n DimensionValueType = \"VARCHAR\",\n Name = \"hostname\",\n },\n },\n MultiMeasureMappings = new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsArgs\n {\n TargetMultiMeasureName = \"multi-metrics\",\n MultiMeasureAttributeMappings = new[]\n {\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs\n {\n MeasureValueType = \"DOUBLE\",\n SourceColumn = \"avg_cpu_utilization\",\n },\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs\n {\n MeasureValueType = \"DOUBLE\",\n SourceColumn = \"p90_cpu_utilization\",\n },\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs\n {\n MeasureValueType = \"DOUBLE\",\n SourceColumn = \"p95_cpu_utilization\",\n },\n new Aws.TimestreamQuery.Inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs\n {\n MeasureValueType = \"DOUBLE\",\n SourceColumn = \"p99_cpu_utilization\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/timestreamquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := timestreamquery.NewScheduledQuery(ctx, \"example\", \u0026timestreamquery.ScheduledQueryArgs{\n\t\t\tExecutionRoleArn: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tName: pulumi.Any(exampleAwsTimestreamwriteTable.TableName),\n\t\t\tQueryString: pulumi.String(`SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n\\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\nFROM exampledatabase.exampletable\nWHERE measure_name = 'metrics' AND time \u003e ago(2h)\nGROUP BY region, hostname, az, BIN(time, 15s)\nORDER BY binned_timestamp ASC\nLIMIT 5\n`),\n\t\t\tErrorReportConfiguration: \u0026timestreamquery.ScheduledQueryErrorReportConfigurationArgs{\n\t\t\t\tS3Configuration: \u0026timestreamquery.ScheduledQueryErrorReportConfigurationS3ConfigurationArgs{\n\t\t\t\t\tBucketName: pulumi.Any(exampleAwsS3Bucket.Bucket),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNotificationConfiguration: \u0026timestreamquery.ScheduledQueryNotificationConfigurationArgs{\n\t\t\t\tSnsConfiguration: \u0026timestreamquery.ScheduledQueryNotificationConfigurationSnsConfigurationArgs{\n\t\t\t\t\tTopicArn: pulumi.Any(exampleAwsSnsTopic.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t\tScheduleConfiguration: \u0026timestreamquery.ScheduledQueryScheduleConfigurationArgs{\n\t\t\t\tScheduleExpression: pulumi.String(\"rate(1 hour)\"),\n\t\t\t},\n\t\t\tTargetConfiguration: \u0026timestreamquery.ScheduledQueryTargetConfigurationArgs{\n\t\t\t\tTimestreamConfiguration: \u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationArgs{\n\t\t\t\t\tDatabaseName: pulumi.Any(results.DatabaseName),\n\t\t\t\t\tTableName: pulumi.Any(resultsAwsTimestreamwriteTable.TableName),\n\t\t\t\t\tTimeColumn: pulumi.String(\"binned_timestamp\"),\n\t\t\t\t\tDimensionMappings: timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArray{\n\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs{\n\t\t\t\t\t\t\tDimensionValueType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\tName: pulumi.String(\"az\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs{\n\t\t\t\t\t\t\tDimensionValueType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\tName: pulumi.String(\"region\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs{\n\t\t\t\t\t\t\tDimensionValueType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\tName: pulumi.String(\"hostname\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMultiMeasureMappings: \u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsArgs{\n\t\t\t\t\t\tTargetMultiMeasureName: pulumi.String(\"multi-metrics\"),\n\t\t\t\t\t\tMultiMeasureAttributeMappings: timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArray{\n\t\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs{\n\t\t\t\t\t\t\t\tMeasureValueType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t\t\t\tSourceColumn: pulumi.String(\"avg_cpu_utilization\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs{\n\t\t\t\t\t\t\t\tMeasureValueType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t\t\t\tSourceColumn: pulumi.String(\"p90_cpu_utilization\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs{\n\t\t\t\t\t\t\t\tMeasureValueType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t\t\t\tSourceColumn: pulumi.String(\"p95_cpu_utilization\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026timestreamquery.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs{\n\t\t\t\t\t\t\t\tMeasureValueType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t\t\t\tSourceColumn: pulumi.String(\"p99_cpu_utilization\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.timestreamquery.ScheduledQuery;\nimport com.pulumi.aws.timestreamquery.ScheduledQueryArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryErrorReportConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryErrorReportConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryNotificationConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryNotificationConfigurationSnsConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryScheduleConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryTargetConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationArgs;\nimport com.pulumi.aws.timestreamquery.inputs.ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ScheduledQuery(\"example\", ScheduledQueryArgs.builder()\n .executionRoleArn(exampleAwsIamRole.arn())\n .name(exampleAwsTimestreamwriteTable.tableName())\n .queryString(\"\"\"\nSELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n\\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n\\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\nFROM exampledatabase.exampletable\nWHERE measure_name = 'metrics' AND time \u003e ago(2h)\nGROUP BY region, hostname, az, BIN(time, 15s)\nORDER BY binned_timestamp ASC\nLIMIT 5\n \"\"\")\n .errorReportConfiguration(ScheduledQueryErrorReportConfigurationArgs.builder()\n .s3Configuration(ScheduledQueryErrorReportConfigurationS3ConfigurationArgs.builder()\n .bucketName(exampleAwsS3Bucket.bucket())\n .build())\n .build())\n .notificationConfiguration(ScheduledQueryNotificationConfigurationArgs.builder()\n .snsConfiguration(ScheduledQueryNotificationConfigurationSnsConfigurationArgs.builder()\n .topicArn(exampleAwsSnsTopic.arn())\n .build())\n .build())\n .scheduleConfiguration(ScheduledQueryScheduleConfigurationArgs.builder()\n .scheduleExpression(\"rate(1 hour)\")\n .build())\n .targetConfiguration(ScheduledQueryTargetConfigurationArgs.builder()\n .timestreamConfiguration(ScheduledQueryTargetConfigurationTimestreamConfigurationArgs.builder()\n .databaseName(results.databaseName())\n .tableName(resultsAwsTimestreamwriteTable.tableName())\n .timeColumn(\"binned_timestamp\")\n .dimensionMappings( \n ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs.builder()\n .dimensionValueType(\"VARCHAR\")\n .name(\"az\")\n .build(),\n ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs.builder()\n .dimensionValueType(\"VARCHAR\")\n .name(\"region\")\n .build(),\n ScheduledQueryTargetConfigurationTimestreamConfigurationDimensionMappingArgs.builder()\n .dimensionValueType(\"VARCHAR\")\n .name(\"hostname\")\n .build())\n .multiMeasureMappings(ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsArgs.builder()\n .targetMultiMeasureName(\"multi-metrics\")\n .multiMeasureAttributeMappings( \n ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs.builder()\n .measureValueType(\"DOUBLE\")\n .sourceColumn(\"avg_cpu_utilization\")\n .build(),\n ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs.builder()\n .measureValueType(\"DOUBLE\")\n .sourceColumn(\"p90_cpu_utilization\")\n .build(),\n ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs.builder()\n .measureValueType(\"DOUBLE\")\n .sourceColumn(\"p95_cpu_utilization\")\n .build(),\n ScheduledQueryTargetConfigurationTimestreamConfigurationMultiMeasureMappingsMultiMeasureAttributeMappingArgs.builder()\n .measureValueType(\"DOUBLE\")\n .sourceColumn(\"p99_cpu_utilization\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:timestreamquery:ScheduledQuery\n properties:\n executionRoleArn: ${exampleAwsIamRole.arn}\n name: ${exampleAwsTimestreamwriteTable.tableName}\n queryString: |\n SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,\n \\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization,\n \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization,\n \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization,\n \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization\n FROM exampledatabase.exampletable\n WHERE measure_name = 'metrics' AND time \u003e ago(2h)\n GROUP BY region, hostname, az, BIN(time, 15s)\n ORDER BY binned_timestamp ASC\n LIMIT 5\n errorReportConfiguration:\n s3Configuration:\n bucketName: ${exampleAwsS3Bucket.bucket}\n notificationConfiguration:\n snsConfiguration:\n topicArn: ${exampleAwsSnsTopic.arn}\n scheduleConfiguration:\n scheduleExpression: rate(1 hour)\n targetConfiguration:\n timestreamConfiguration:\n databaseName: ${results.databaseName}\n tableName: ${resultsAwsTimestreamwriteTable.tableName}\n timeColumn: binned_timestamp\n dimensionMappings:\n - dimensionValueType: VARCHAR\n name: az\n - dimensionValueType: VARCHAR\n name: region\n - dimensionValueType: VARCHAR\n name: hostname\n multiMeasureMappings:\n targetMultiMeasureName: multi-metrics\n multiMeasureAttributeMappings:\n - measureValueType: DOUBLE\n sourceColumn: avg_cpu_utilization\n - measureValueType: DOUBLE\n sourceColumn: p90_cpu_utilization\n - measureValueType: DOUBLE\n sourceColumn: p95_cpu_utilization\n - measureValueType: DOUBLE\n sourceColumn: p99_cpu_utilization\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Timestream Query Scheduled Query using the `arn`. For example:\n\n```sh\n$ pulumi import aws:timestreamquery/scheduledQuery:ScheduledQuery example arn:aws:timestream:us-west-2:012345678901:scheduled-query/tf-acc-test-7774188528604787105-e13659544fe66c8d\n```\n", "properties": { "arn": { "type": "string", @@ -418202,7 +418202,7 @@ } }, "aws:transfer/sshKey:SshKey": { - "description": "Provides a AWS Transfer User SSH Key resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\nimport * as tls from \"@pulumi/tls\";\n\nconst examplePrivateKey = new tls.index.PrivateKey(\"example\", {\n algorithm: \"RSA\",\n rsaBits: 4096,\n});\nconst exampleServer = new aws.transfer.Server(\"example\", {\n identityProviderType: \"SERVICE_MANAGED\",\n tags: {\n NAME: \"tf-acc-test-transfer-server\",\n },\n});\nconst assumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"transfer.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst exampleRole = new aws.iam.Role(\"example\", {\n name: \"tf-test-transfer-user-iam-role\",\n assumeRolePolicy: assumeRole.then(assumeRole =\u003e assumeRole.json),\n});\nconst exampleUser = new aws.transfer.User(\"example\", {\n serverId: exampleServer.id,\n userName: \"tftestuser\",\n role: exampleRole.arn,\n tags: {\n NAME: \"tftestuser\",\n },\n});\nconst exampleSshKey = new aws.transfer.SshKey(\"example\", {\n serverId: exampleServer.id,\n userName: exampleUser.userName,\n body: std.trimspace({\n input: examplePrivateKey.publicKeyOpenssh,\n }).then(invoke =\u003e invoke.result),\n});\nconst example = aws.iam.getPolicyDocument({\n statements: [{\n sid: \"AllowFullAccesstoS3\",\n effect: \"Allow\",\n actions: [\"s3:*\"],\n resources: [\"*\"],\n }],\n});\nconst exampleRolePolicy = new aws.iam.RolePolicy(\"example\", {\n name: \"tf-test-transfer-user-iam-policy\",\n role: exampleRole.id,\n policy: example.then(example =\u003e example.json),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\nimport pulumi_tls as tls\n\nexample_private_key = tls.index.PrivateKey(\"example\",\n algorithm=RSA,\n rsa_bits=4096)\nexample_server = aws.transfer.Server(\"example\",\n identity_provider_type=\"SERVICE_MANAGED\",\n tags={\n \"NAME\": \"tf-acc-test-transfer-server\",\n })\nassume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"transfer.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nexample_role = aws.iam.Role(\"example\",\n name=\"tf-test-transfer-user-iam-role\",\n assume_role_policy=assume_role.json)\nexample_user = aws.transfer.User(\"example\",\n server_id=example_server.id,\n user_name=\"tftestuser\",\n role=example_role.arn,\n tags={\n \"NAME\": \"tftestuser\",\n })\nexample_ssh_key = aws.transfer.SshKey(\"example\",\n server_id=example_server.id,\n user_name=example_user.user_name,\n body=std.trimspace(input=example_private_key[\"publicKeyOpenssh\"]).result)\nexample = aws.iam.get_policy_document(statements=[{\n \"sid\": \"AllowFullAccesstoS3\",\n \"effect\": \"Allow\",\n \"actions\": [\"s3:*\"],\n \"resources\": [\"*\"],\n}])\nexample_role_policy = aws.iam.RolePolicy(\"example\",\n name=\"tf-test-transfer-user-iam-policy\",\n role=example_role.id,\n policy=example.json)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\nusing Tls = Pulumi.Tls;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var examplePrivateKey = new Tls.Index.PrivateKey(\"example\", new()\n {\n Algorithm = \"RSA\",\n RsaBits = 4096,\n });\n\n var exampleServer = new Aws.Transfer.Server(\"example\", new()\n {\n IdentityProviderType = \"SERVICE_MANAGED\",\n Tags = \n {\n { \"NAME\", \"tf-acc-test-transfer-server\" },\n },\n });\n\n var assumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"transfer.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var exampleRole = new Aws.Iam.Role(\"example\", new()\n {\n Name = \"tf-test-transfer-user-iam-role\",\n AssumeRolePolicy = assumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var exampleUser = new Aws.Transfer.User(\"example\", new()\n {\n ServerId = exampleServer.Id,\n UserName = \"tftestuser\",\n Role = exampleRole.Arn,\n Tags = \n {\n { \"NAME\", \"tftestuser\" },\n },\n });\n\n var exampleSshKey = new Aws.Transfer.SshKey(\"example\", new()\n {\n ServerId = exampleServer.Id,\n UserName = exampleUser.UserName,\n Body = Std.Trimspace.Invoke(new()\n {\n Input = examplePrivateKey.PublicKeyOpenssh,\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var example = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Sid = \"AllowFullAccesstoS3\",\n Effect = \"Allow\",\n Actions = new[]\n {\n \"s3:*\",\n },\n Resources = new[]\n {\n \"*\",\n },\n },\n },\n });\n\n var exampleRolePolicy = new Aws.Iam.RolePolicy(\"example\", new()\n {\n Name = \"tf-test-transfer-user-iam-policy\",\n Role = exampleRole.Id,\n Policy = example.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/transfer\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi-tls/sdk/v4/go/tls\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texamplePrivateKey, err := tls.NewPrivateKey(ctx, \"example\", \u0026tls.PrivateKeyArgs{\n\t\t\tAlgorithm: \"RSA\",\n\t\t\tRsaBits: 4096,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleServer, err := transfer.NewServer(ctx, \"example\", \u0026transfer.ServerArgs{\n\t\t\tIdentityProviderType: pulumi.String(\"SERVICE_MANAGED\"),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"NAME\": pulumi.String(\"tf-acc-test-transfer-server\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tassumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"transfer.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleRole, err := iam.NewRole(ctx, \"example\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"tf-test-transfer-user-iam-role\"),\n\t\t\tAssumeRolePolicy: pulumi.String(assumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleUser, err := transfer.NewUser(ctx, \"example\", \u0026transfer.UserArgs{\n\t\t\tServerId: exampleServer.ID(),\n\t\t\tUserName: pulumi.String(\"tftestuser\"),\n\t\t\tRole: exampleRole.Arn,\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"NAME\": pulumi.String(\"tftestuser\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeTrimspace, err := std.Trimspace(ctx, \u0026std.TrimspaceArgs{\n\t\t\tInput: examplePrivateKey.PublicKeyOpenssh,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = transfer.NewSshKey(ctx, \"example\", \u0026transfer.SshKeyArgs{\n\t\t\tServerId: exampleServer.ID(),\n\t\t\tUserName: exampleUser.UserName,\n\t\t\tBody: pulumi.String(invokeTrimspace.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tSid: pulumi.StringRef(\"AllowFullAccesstoS3\"),\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"s3:*\",\n\t\t\t\t\t},\n\t\t\t\t\tResources: []string{\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewRolePolicy(ctx, \"example\", \u0026iam.RolePolicyArgs{\n\t\t\tName: pulumi.String(\"tf-test-transfer-user-iam-policy\"),\n\t\t\tRole: exampleRole.ID(),\n\t\t\tPolicy: pulumi.String(example.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.tls.privateKey;\nimport com.pulumi.tls.privateKeyArgs;\nimport com.pulumi.aws.transfer.Server;\nimport com.pulumi.aws.transfer.ServerArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.transfer.User;\nimport com.pulumi.aws.transfer.UserArgs;\nimport com.pulumi.aws.transfer.SshKey;\nimport com.pulumi.aws.transfer.SshKeyArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.TrimspaceArgs;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var examplePrivateKey = new PrivateKey(\"examplePrivateKey\", PrivateKeyArgs.builder()\n .algorithm(\"RSA\")\n .rsaBits(4096)\n .build());\n\n var exampleServer = new Server(\"exampleServer\", ServerArgs.builder()\n .identityProviderType(\"SERVICE_MANAGED\")\n .tags(Map.of(\"NAME\", \"tf-acc-test-transfer-server\"))\n .build());\n\n final var assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"transfer.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var exampleRole = new Role(\"exampleRole\", RoleArgs.builder()\n .name(\"tf-test-transfer-user-iam-role\")\n .assumeRolePolicy(assumeRole.json())\n .build());\n\n var exampleUser = new User(\"exampleUser\", UserArgs.builder()\n .serverId(exampleServer.id())\n .userName(\"tftestuser\")\n .role(exampleRole.arn())\n .tags(Map.of(\"NAME\", \"tftestuser\"))\n .build());\n\n var exampleSshKey = new SshKey(\"exampleSshKey\", SshKeyArgs.builder()\n .serverId(exampleServer.id())\n .userName(exampleUser.userName())\n .body(StdFunctions.trimspace(TrimspaceArgs.builder()\n .input(examplePrivateKey.publicKeyOpenssh())\n .build()).result())\n .build());\n\n final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .sid(\"AllowFullAccesstoS3\")\n .effect(\"Allow\")\n .actions(\"s3:*\")\n .resources(\"*\")\n .build())\n .build());\n\n var exampleRolePolicy = new RolePolicy(\"exampleRolePolicy\", RolePolicyArgs.builder()\n .name(\"tf-test-transfer-user-iam-policy\")\n .role(exampleRole.id())\n .policy(example.json())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n examplePrivateKey:\n type: tls:privateKey\n name: example\n properties:\n algorithm: RSA\n rsaBits: 4096\n exampleSshKey:\n type: aws:transfer:SshKey\n name: example\n properties:\n serverId: ${exampleServer.id}\n userName: ${exampleUser.userName}\n body:\n fn::invoke:\n function: std:trimspace\n arguments:\n input: ${examplePrivateKey.publicKeyOpenssh}\n return: result\n exampleServer:\n type: aws:transfer:Server\n name: example\n properties:\n identityProviderType: SERVICE_MANAGED\n tags:\n NAME: tf-acc-test-transfer-server\n exampleUser:\n type: aws:transfer:User\n name: example\n properties:\n serverId: ${exampleServer.id}\n userName: tftestuser\n role: ${exampleRole.arn}\n tags:\n NAME: tftestuser\n exampleRole:\n type: aws:iam:Role\n name: example\n properties:\n name: tf-test-transfer-user-iam-role\n assumeRolePolicy: ${assumeRole.json}\n exampleRolePolicy:\n type: aws:iam:RolePolicy\n name: example\n properties:\n name: tf-test-transfer-user-iam-policy\n role: ${exampleRole.id}\n policy: ${example.json}\nvariables:\n assumeRole:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - transfer.amazonaws.com\n actions:\n - sts:AssumeRole\n example:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - sid: AllowFullAccesstoS3\n effect: Allow\n actions:\n - s3:*\n resources:\n - '*'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Transfer SSH Public Key using the `server_id` and `user_name` and `ssh_public_key_id` separated by `/`. For example:\n\n```sh\n$ pulumi import aws:transfer/sshKey:SshKey bar s-12345678/test-username/key-12345\n```\n", + "description": "Provides a AWS Transfer User SSH Key resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\nimport * as tls from \"@pulumi/tls\";\n\nconst examplePrivateKey = new tls.PrivateKey(\"example\", {\n algorithm: \"RSA\",\n rsaBits: 4096,\n});\nconst exampleServer = new aws.transfer.Server(\"example\", {\n identityProviderType: \"SERVICE_MANAGED\",\n tags: {\n NAME: \"tf-acc-test-transfer-server\",\n },\n});\nconst assumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"transfer.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst exampleRole = new aws.iam.Role(\"example\", {\n name: \"tf-test-transfer-user-iam-role\",\n assumeRolePolicy: assumeRole.then(assumeRole =\u003e assumeRole.json),\n});\nconst exampleUser = new aws.transfer.User(\"example\", {\n serverId: exampleServer.id,\n userName: \"tftestuser\",\n role: exampleRole.arn,\n tags: {\n NAME: \"tftestuser\",\n },\n});\nconst exampleSshKey = new aws.transfer.SshKey(\"example\", {\n serverId: exampleServer.id,\n userName: exampleUser.userName,\n body: std.trimspaceOutput({\n input: examplePrivateKey.publicKeyOpenssh,\n }).apply(invoke =\u003e invoke.result),\n});\nconst example = aws.iam.getPolicyDocument({\n statements: [{\n sid: \"AllowFullAccesstoS3\",\n effect: \"Allow\",\n actions: [\"s3:*\"],\n resources: [\"*\"],\n }],\n});\nconst exampleRolePolicy = new aws.iam.RolePolicy(\"example\", {\n name: \"tf-test-transfer-user-iam-policy\",\n role: exampleRole.id,\n policy: example.then(example =\u003e example.json),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\nimport pulumi_tls as tls\n\nexample_private_key = tls.PrivateKey(\"example\",\n algorithm=\"RSA\",\n rsa_bits=4096)\nexample_server = aws.transfer.Server(\"example\",\n identity_provider_type=\"SERVICE_MANAGED\",\n tags={\n \"NAME\": \"tf-acc-test-transfer-server\",\n })\nassume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"transfer.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nexample_role = aws.iam.Role(\"example\",\n name=\"tf-test-transfer-user-iam-role\",\n assume_role_policy=assume_role.json)\nexample_user = aws.transfer.User(\"example\",\n server_id=example_server.id,\n user_name=\"tftestuser\",\n role=example_role.arn,\n tags={\n \"NAME\": \"tftestuser\",\n })\nexample_ssh_key = aws.transfer.SshKey(\"example\",\n server_id=example_server.id,\n user_name=example_user.user_name,\n body=std.trimspace_output(input=example_private_key.public_key_openssh).apply(lambda invoke: invoke.result))\nexample = aws.iam.get_policy_document(statements=[{\n \"sid\": \"AllowFullAccesstoS3\",\n \"effect\": \"Allow\",\n \"actions\": [\"s3:*\"],\n \"resources\": [\"*\"],\n}])\nexample_role_policy = aws.iam.RolePolicy(\"example\",\n name=\"tf-test-transfer-user-iam-policy\",\n role=example_role.id,\n policy=example.json)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\nusing Tls = Pulumi.Tls;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var examplePrivateKey = new Tls.PrivateKey(\"example\", new()\n {\n Algorithm = \"RSA\",\n RsaBits = 4096,\n });\n\n var exampleServer = new Aws.Transfer.Server(\"example\", new()\n {\n IdentityProviderType = \"SERVICE_MANAGED\",\n Tags = \n {\n { \"NAME\", \"tf-acc-test-transfer-server\" },\n },\n });\n\n var assumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"transfer.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var exampleRole = new Aws.Iam.Role(\"example\", new()\n {\n Name = \"tf-test-transfer-user-iam-role\",\n AssumeRolePolicy = assumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var exampleUser = new Aws.Transfer.User(\"example\", new()\n {\n ServerId = exampleServer.Id,\n UserName = \"tftestuser\",\n Role = exampleRole.Arn,\n Tags = \n {\n { \"NAME\", \"tftestuser\" },\n },\n });\n\n var exampleSshKey = new Aws.Transfer.SshKey(\"example\", new()\n {\n ServerId = exampleServer.Id,\n UserName = exampleUser.UserName,\n Body = Std.Trimspace.Invoke(new()\n {\n Input = examplePrivateKey.PublicKeyOpenssh,\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var example = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Sid = \"AllowFullAccesstoS3\",\n Effect = \"Allow\",\n Actions = new[]\n {\n \"s3:*\",\n },\n Resources = new[]\n {\n \"*\",\n },\n },\n },\n });\n\n var exampleRolePolicy = new Aws.Iam.RolePolicy(\"example\", new()\n {\n Name = \"tf-test-transfer-user-iam-policy\",\n Role = exampleRole.Id,\n Policy = example.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/transfer\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi-tls/sdk/v5/go/tls\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texamplePrivateKey, err := tls.NewPrivateKey(ctx, \"example\", \u0026tls.PrivateKeyArgs{\n\t\t\tAlgorithm: pulumi.String(\"RSA\"),\n\t\t\tRsaBits: pulumi.Int(4096),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleServer, err := transfer.NewServer(ctx, \"example\", \u0026transfer.ServerArgs{\n\t\t\tIdentityProviderType: pulumi.String(\"SERVICE_MANAGED\"),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"NAME\": pulumi.String(\"tf-acc-test-transfer-server\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tassumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"transfer.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleRole, err := iam.NewRole(ctx, \"example\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"tf-test-transfer-user-iam-role\"),\n\t\t\tAssumeRolePolicy: pulumi.String(assumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleUser, err := transfer.NewUser(ctx, \"example\", \u0026transfer.UserArgs{\n\t\t\tServerId: exampleServer.ID(),\n\t\t\tUserName: pulumi.String(\"tftestuser\"),\n\t\t\tRole: exampleRole.Arn,\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"NAME\": pulumi.String(\"tftestuser\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = transfer.NewSshKey(ctx, \"example\", \u0026transfer.SshKeyArgs{\n\t\t\tServerId: exampleServer.ID(),\n\t\t\tUserName: exampleUser.UserName,\n\t\t\tBody: pulumi.String(std.TrimspaceOutput(ctx, std.TrimspaceOutputArgs{\n\t\t\t\tInput: examplePrivateKey.PublicKeyOpenssh,\n\t\t\t}, nil).ApplyT(func(invoke std.TrimspaceResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tSid: pulumi.StringRef(\"AllowFullAccesstoS3\"),\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"s3:*\",\n\t\t\t\t\t},\n\t\t\t\t\tResources: []string{\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewRolePolicy(ctx, \"example\", \u0026iam.RolePolicyArgs{\n\t\t\tName: pulumi.String(\"tf-test-transfer-user-iam-policy\"),\n\t\t\tRole: exampleRole.ID(),\n\t\t\tPolicy: pulumi.String(example.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.tls.PrivateKey;\nimport com.pulumi.tls.PrivateKeyArgs;\nimport com.pulumi.aws.transfer.Server;\nimport com.pulumi.aws.transfer.ServerArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.transfer.User;\nimport com.pulumi.aws.transfer.UserArgs;\nimport com.pulumi.aws.transfer.SshKey;\nimport com.pulumi.aws.transfer.SshKeyArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.TrimspaceArgs;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var examplePrivateKey = new PrivateKey(\"examplePrivateKey\", PrivateKeyArgs.builder()\n .algorithm(\"RSA\")\n .rsaBits(4096)\n .build());\n\n var exampleServer = new Server(\"exampleServer\", ServerArgs.builder()\n .identityProviderType(\"SERVICE_MANAGED\")\n .tags(Map.of(\"NAME\", \"tf-acc-test-transfer-server\"))\n .build());\n\n final var assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"transfer.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var exampleRole = new Role(\"exampleRole\", RoleArgs.builder()\n .name(\"tf-test-transfer-user-iam-role\")\n .assumeRolePolicy(assumeRole.json())\n .build());\n\n var exampleUser = new User(\"exampleUser\", UserArgs.builder()\n .serverId(exampleServer.id())\n .userName(\"tftestuser\")\n .role(exampleRole.arn())\n .tags(Map.of(\"NAME\", \"tftestuser\"))\n .build());\n\n var exampleSshKey = new SshKey(\"exampleSshKey\", SshKeyArgs.builder()\n .serverId(exampleServer.id())\n .userName(exampleUser.userName())\n .body(StdFunctions.trimspace(TrimspaceArgs.builder()\n .input(examplePrivateKey.publicKeyOpenssh())\n .build()).applyValue(_invoke -\u003e _invoke.result()))\n .build());\n\n final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .sid(\"AllowFullAccesstoS3\")\n .effect(\"Allow\")\n .actions(\"s3:*\")\n .resources(\"*\")\n .build())\n .build());\n\n var exampleRolePolicy = new RolePolicy(\"exampleRolePolicy\", RolePolicyArgs.builder()\n .name(\"tf-test-transfer-user-iam-policy\")\n .role(exampleRole.id())\n .policy(example.json())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n examplePrivateKey:\n type: tls:PrivateKey\n name: example\n properties:\n algorithm: RSA\n rsaBits: 4096\n exampleSshKey:\n type: aws:transfer:SshKey\n name: example\n properties:\n serverId: ${exampleServer.id}\n userName: ${exampleUser.userName}\n body:\n fn::invoke:\n function: std:trimspace\n arguments:\n input: ${examplePrivateKey.publicKeyOpenssh}\n return: result\n exampleServer:\n type: aws:transfer:Server\n name: example\n properties:\n identityProviderType: SERVICE_MANAGED\n tags:\n NAME: tf-acc-test-transfer-server\n exampleUser:\n type: aws:transfer:User\n name: example\n properties:\n serverId: ${exampleServer.id}\n userName: tftestuser\n role: ${exampleRole.arn}\n tags:\n NAME: tftestuser\n exampleRole:\n type: aws:iam:Role\n name: example\n properties:\n name: tf-test-transfer-user-iam-role\n assumeRolePolicy: ${assumeRole.json}\n exampleRolePolicy:\n type: aws:iam:RolePolicy\n name: example\n properties:\n name: tf-test-transfer-user-iam-policy\n role: ${exampleRole.id}\n policy: ${example.json}\nvariables:\n assumeRole:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - transfer.amazonaws.com\n actions:\n - sts:AssumeRole\n example:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - sid: AllowFullAccesstoS3\n effect: Allow\n actions:\n - s3:*\n resources:\n - '*'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Transfer SSH Public Key using the `server_id` and `user_name` and `ssh_public_key_id` separated by `/`. For example:\n\n```sh\n$ pulumi import aws:transfer/sshKey:SshKey bar s-12345678/test-username/key-12345\n```\n", "properties": { "body": { "type": "string", @@ -420656,7 +420656,7 @@ } }, "aws:vpc/routeServerPeer:RouteServerPeer": { - "description": "Provides a resource for managing a VPC (Virtual Private Cloud) Route Server Peer.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.vpc.RouteServerPeer(\"test\", {\n routeServerEndpointId: example.routeServerEndpointId,\n peerAddress: \"10.0.1.250\",\n bgpOptions: {\n peerAsn: 65200,\n },\n tags: {\n Name: \"Appliance 1\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.vpc.RouteServerPeer(\"test\",\n route_server_endpoint_id=example[\"routeServerEndpointId\"],\n peer_address=\"10.0.1.250\",\n bgp_options={\n \"peer_asn\": 65200,\n },\n tags={\n \"Name\": \"Appliance 1\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Aws.Vpc.RouteServerPeer(\"test\", new()\n {\n RouteServerEndpointId = example.RouteServerEndpointId,\n PeerAddress = \"10.0.1.250\",\n BgpOptions = new Aws.Vpc.Inputs.RouteServerPeerBgpOptionsArgs\n {\n PeerAsn = 65200,\n },\n Tags = \n {\n { \"Name\", \"Appliance 1\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/vpc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vpc.NewRouteServerPeer(ctx, \"test\", \u0026vpc.RouteServerPeerArgs{\n\t\t\tRouteServerEndpointId: pulumi.Any(example.RouteServerEndpointId),\n\t\t\tPeerAddress: pulumi.String(\"10.0.1.250\"),\n\t\t\tBgpOptions: \u0026vpc.RouteServerPeerBgpOptionsArgs{\n\t\t\t\tPeerAsn: pulumi.Int(65200),\n\t\t\t},\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"Appliance 1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.vpc.RouteServerPeer;\nimport com.pulumi.aws.vpc.RouteServerPeerArgs;\nimport com.pulumi.aws.vpc.inputs.RouteServerPeerBgpOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new RouteServerPeer(\"test\", RouteServerPeerArgs.builder()\n .routeServerEndpointId(example.routeServerEndpointId())\n .peerAddress(\"10.0.1.250\")\n .bgpOptions(RouteServerPeerBgpOptionsArgs.builder()\n .peerAsn(65200)\n .build())\n .tags(Map.of(\"Name\", \"Appliance 1\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:vpc:RouteServerPeer\n properties:\n routeServerEndpointId: ${example.routeServerEndpointId}\n peerAddress: 10.0.1.250\n bgpOptions:\n peerAsn: 65200\n tags:\n Name: Appliance 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Complete Configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.vpc.RouteServer(\"test\", {\n amazonSideAsn: 4294967294,\n tags: {\n Name: \"Test\",\n },\n});\nconst testVpcRouteServerAssociation = new aws.index.VpcRouteServerAssociation(\"test\", {\n routeServerId: test.routeServerId,\n vpcId: testAwsVpc.id,\n});\nconst testRouteServerEndpoint = new aws.vpc.RouteServerEndpoint(\"test\", {\n routeServerId: test.routeServerId,\n subnetId: testAwsSubnet.id,\n tags: {\n Name: \"Test Endpoint\",\n },\n}, {\n dependsOn: [testVpcRouteServerAssociation],\n});\nconst testRouteServerPropagation = new aws.vpc.RouteServerPropagation(\"test\", {\n routeServerId: test.routeServerId,\n routeTableId: testAwsRouteTable.id,\n}, {\n dependsOn: [testVpcRouteServerAssociation],\n});\nconst testRouteServerPeer = new aws.vpc.RouteServerPeer(\"test\", {\n routeServerEndpointId: testRouteServerEndpoint.routeServerEndpointId,\n peerAddress: \"10.0.1.250\",\n bgpOptions: {\n peerAsn: 65000,\n peerLivenessDetection: \"bgp-keepalive\",\n },\n tags: {\n Name: \"Test Appliance\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.vpc.RouteServer(\"test\",\n amazon_side_asn=4294967294,\n tags={\n \"Name\": \"Test\",\n })\ntest_vpc_route_server_association = aws.index.VpcRouteServerAssociation(\"test\",\n route_server_id=test.route_server_id,\n vpc_id=test_aws_vpc.id)\ntest_route_server_endpoint = aws.vpc.RouteServerEndpoint(\"test\",\n route_server_id=test.route_server_id,\n subnet_id=test_aws_subnet[\"id\"],\n tags={\n \"Name\": \"Test Endpoint\",\n },\n opts = pulumi.ResourceOptions(depends_on=[test_vpc_route_server_association]))\ntest_route_server_propagation = aws.vpc.RouteServerPropagation(\"test\",\n route_server_id=test.route_server_id,\n route_table_id=test_aws_route_table[\"id\"],\n opts = pulumi.ResourceOptions(depends_on=[test_vpc_route_server_association]))\ntest_route_server_peer = aws.vpc.RouteServerPeer(\"test\",\n route_server_endpoint_id=test_route_server_endpoint.route_server_endpoint_id,\n peer_address=\"10.0.1.250\",\n bgp_options={\n \"peer_asn\": 65000,\n \"peer_liveness_detection\": \"bgp-keepalive\",\n },\n tags={\n \"Name\": \"Test Appliance\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Aws.Vpc.RouteServer(\"test\", new()\n {\n AmazonSideAsn = 4294967294,\n Tags = \n {\n { \"Name\", \"Test\" },\n },\n });\n\n var testVpcRouteServerAssociation = new Aws.Index.VpcRouteServerAssociation(\"test\", new()\n {\n RouteServerId = test.RouteServerId,\n VpcId = testAwsVpc.Id,\n });\n\n var testRouteServerEndpoint = new Aws.Vpc.RouteServerEndpoint(\"test\", new()\n {\n RouteServerId = test.RouteServerId,\n SubnetId = testAwsSubnet.Id,\n Tags = \n {\n { \"Name\", \"Test Endpoint\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n testVpcRouteServerAssociation,\n },\n });\n\n var testRouteServerPropagation = new Aws.Vpc.RouteServerPropagation(\"test\", new()\n {\n RouteServerId = test.RouteServerId,\n RouteTableId = testAwsRouteTable.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n testVpcRouteServerAssociation,\n },\n });\n\n var testRouteServerPeer = new Aws.Vpc.RouteServerPeer(\"test\", new()\n {\n RouteServerEndpointId = testRouteServerEndpoint.RouteServerEndpointId,\n PeerAddress = \"10.0.1.250\",\n BgpOptions = new Aws.Vpc.Inputs.RouteServerPeerBgpOptionsArgs\n {\n PeerAsn = 65000,\n PeerLivenessDetection = \"bgp-keepalive\",\n },\n Tags = \n {\n { \"Name\", \"Test Appliance\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/vpc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := vpc.NewRouteServer(ctx, \"test\", \u0026vpc.RouteServerArgs{\n\t\t\tAmazonSideAsn: pulumi.Int(4294967294),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"Test\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestVpcRouteServerAssociation, err := aws.NewVpcRouteServerAssociation(ctx, \"test\", \u0026aws.VpcRouteServerAssociationArgs{\n\t\t\tRouteServerId: test.RouteServerId,\n\t\t\tVpcId: testAwsVpc.Id,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestRouteServerEndpoint, err := vpc.NewRouteServerEndpoint(ctx, \"test\", \u0026vpc.RouteServerEndpointArgs{\n\t\t\tRouteServerId: test.RouteServerId,\n\t\t\tSubnetId: pulumi.Any(testAwsSubnet.Id),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"Test Endpoint\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\ttestVpcRouteServerAssociation,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vpc.NewRouteServerPropagation(ctx, \"test\", \u0026vpc.RouteServerPropagationArgs{\n\t\t\tRouteServerId: test.RouteServerId,\n\t\t\tRouteTableId: pulumi.Any(testAwsRouteTable.Id),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\ttestVpcRouteServerAssociation,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vpc.NewRouteServerPeer(ctx, \"test\", \u0026vpc.RouteServerPeerArgs{\n\t\t\tRouteServerEndpointId: testRouteServerEndpoint.RouteServerEndpointId,\n\t\t\tPeerAddress: pulumi.String(\"10.0.1.250\"),\n\t\t\tBgpOptions: \u0026vpc.RouteServerPeerBgpOptionsArgs{\n\t\t\t\tPeerAsn: pulumi.Int(65000),\n\t\t\t\tPeerLivenessDetection: pulumi.String(\"bgp-keepalive\"),\n\t\t\t},\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"Test Appliance\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.vpc.RouteServer;\nimport com.pulumi.aws.vpc.RouteServerArgs;\nimport com.pulumi.aws.vpcRouteServerAssociation;\nimport com.pulumi.aws.vpcRouteServerAssociationArgs;\nimport com.pulumi.aws.vpc.RouteServerEndpoint;\nimport com.pulumi.aws.vpc.RouteServerEndpointArgs;\nimport com.pulumi.aws.vpc.RouteServerPropagation;\nimport com.pulumi.aws.vpc.RouteServerPropagationArgs;\nimport com.pulumi.aws.vpc.RouteServerPeer;\nimport com.pulumi.aws.vpc.RouteServerPeerArgs;\nimport com.pulumi.aws.vpc.inputs.RouteServerPeerBgpOptionsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new RouteServer(\"test\", RouteServerArgs.builder()\n .amazonSideAsn(4294967294)\n .tags(Map.of(\"Name\", \"Test\"))\n .build());\n\n var testVpcRouteServerAssociation = new VpcRouteServerAssociation(\"testVpcRouteServerAssociation\", VpcRouteServerAssociationArgs.builder()\n .routeServerId(test.routeServerId())\n .vpcId(testAwsVpc.id())\n .build());\n\n var testRouteServerEndpoint = new RouteServerEndpoint(\"testRouteServerEndpoint\", RouteServerEndpointArgs.builder()\n .routeServerId(test.routeServerId())\n .subnetId(testAwsSubnet.id())\n .tags(Map.of(\"Name\", \"Test Endpoint\"))\n .build(), CustomResourceOptions.builder()\n .dependsOn(testVpcRouteServerAssociation)\n .build());\n\n var testRouteServerPropagation = new RouteServerPropagation(\"testRouteServerPropagation\", RouteServerPropagationArgs.builder()\n .routeServerId(test.routeServerId())\n .routeTableId(testAwsRouteTable.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(testVpcRouteServerAssociation)\n .build());\n\n var testRouteServerPeer = new RouteServerPeer(\"testRouteServerPeer\", RouteServerPeerArgs.builder()\n .routeServerEndpointId(testRouteServerEndpoint.routeServerEndpointId())\n .peerAddress(\"10.0.1.250\")\n .bgpOptions(RouteServerPeerBgpOptionsArgs.builder()\n .peerAsn(65000)\n .peerLivenessDetection(\"bgp-keepalive\")\n .build())\n .tags(Map.of(\"Name\", \"Test Appliance\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:vpc:RouteServer\n properties:\n amazonSideAsn: 4.294967294e+09\n tags:\n Name: Test\n testVpcRouteServerAssociation:\n type: aws:vpcRouteServerAssociation\n name: test\n properties:\n routeServerId: ${test.routeServerId}\n vpcId: ${testAwsVpc.id}\n testRouteServerEndpoint:\n type: aws:vpc:RouteServerEndpoint\n name: test\n properties:\n routeServerId: ${test.routeServerId}\n subnetId: ${testAwsSubnet.id}\n tags:\n Name: Test Endpoint\n options:\n dependsOn:\n - ${testVpcRouteServerAssociation}\n testRouteServerPropagation:\n type: aws:vpc:RouteServerPropagation\n name: test\n properties:\n routeServerId: ${test.routeServerId}\n routeTableId: ${testAwsRouteTable.id}\n options:\n dependsOn:\n - ${testVpcRouteServerAssociation}\n testRouteServerPeer:\n type: aws:vpc:RouteServerPeer\n name: test\n properties:\n routeServerEndpointId: ${testRouteServerEndpoint.routeServerEndpointId}\n peerAddress: 10.0.1.250\n bgpOptions:\n peerAsn: 65000\n peerLivenessDetection: bgp-keepalive\n tags:\n Name: Test Appliance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import VPC (Virtual Private Cloud) Route Server using the `route_server_peer_id`. For example:\n\n```sh\n$ pulumi import aws:vpc/routeServerPeer:RouteServerPeer example rsp-12345678\n```\n", + "description": "Provides a resource for managing a VPC (Virtual Private Cloud) Route Server Peer.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.vpc.RouteServerPeer(\"test\", {\n routeServerEndpointId: example.routeServerEndpointId,\n peerAddress: \"10.0.1.250\",\n bgpOptions: {\n peerAsn: 65200,\n },\n tags: {\n Name: \"Appliance 1\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.vpc.RouteServerPeer(\"test\",\n route_server_endpoint_id=example[\"routeServerEndpointId\"],\n peer_address=\"10.0.1.250\",\n bgp_options={\n \"peer_asn\": 65200,\n },\n tags={\n \"Name\": \"Appliance 1\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Aws.Vpc.RouteServerPeer(\"test\", new()\n {\n RouteServerEndpointId = example.RouteServerEndpointId,\n PeerAddress = \"10.0.1.250\",\n BgpOptions = new Aws.Vpc.Inputs.RouteServerPeerBgpOptionsArgs\n {\n PeerAsn = 65200,\n },\n Tags = \n {\n { \"Name\", \"Appliance 1\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/vpc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vpc.NewRouteServerPeer(ctx, \"test\", \u0026vpc.RouteServerPeerArgs{\n\t\t\tRouteServerEndpointId: pulumi.Any(example.RouteServerEndpointId),\n\t\t\tPeerAddress: pulumi.String(\"10.0.1.250\"),\n\t\t\tBgpOptions: \u0026vpc.RouteServerPeerBgpOptionsArgs{\n\t\t\t\tPeerAsn: pulumi.Int(65200),\n\t\t\t},\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"Appliance 1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.vpc.RouteServerPeer;\nimport com.pulumi.aws.vpc.RouteServerPeerArgs;\nimport com.pulumi.aws.vpc.inputs.RouteServerPeerBgpOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new RouteServerPeer(\"test\", RouteServerPeerArgs.builder()\n .routeServerEndpointId(example.routeServerEndpointId())\n .peerAddress(\"10.0.1.250\")\n .bgpOptions(RouteServerPeerBgpOptionsArgs.builder()\n .peerAsn(65200)\n .build())\n .tags(Map.of(\"Name\", \"Appliance 1\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:vpc:RouteServerPeer\n properties:\n routeServerEndpointId: ${example.routeServerEndpointId}\n peerAddress: 10.0.1.250\n bgpOptions:\n peerAsn: 65200\n tags:\n Name: Appliance 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Complete Configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.vpc.RouteServer(\"test\", {\n amazonSideAsn: 4294967294,\n tags: {\n Name: \"Test\",\n },\n});\nconst testVpcRouteServerAssociation = new aws.index.VpcRouteServerAssociation(\"test\", {\n routeServerId: test.routeServerId,\n vpcId: testAwsVpc.id,\n});\nconst testRouteServerEndpoint = new aws.vpc.RouteServerEndpoint(\"test\", {\n routeServerId: test.routeServerId,\n subnetId: testAwsSubnet.id,\n tags: {\n Name: \"Test Endpoint\",\n },\n}, {\n dependsOn: [testVpcRouteServerAssociation],\n});\nconst testRouteServerPropagation = new aws.vpc.RouteServerPropagation(\"test\", {\n routeServerId: test.routeServerId,\n routeTableId: testAwsRouteTable.id,\n}, {\n dependsOn: [testVpcRouteServerAssociation],\n});\nconst testRouteServerPeer = new aws.vpc.RouteServerPeer(\"test\", {\n routeServerEndpointId: testRouteServerEndpoint.routeServerEndpointId,\n peerAddress: \"10.0.1.250\",\n bgpOptions: {\n peerAsn: 65000,\n peerLivenessDetection: \"bgp-keepalive\",\n },\n tags: {\n Name: \"Test Appliance\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.vpc.RouteServer(\"test\",\n amazon_side_asn=4294967294,\n tags={\n \"Name\": \"Test\",\n })\ntest_vpc_route_server_association = aws.index.VpcRouteServerAssociation(\"test\",\n route_server_id=test.route_server_id,\n vpc_id=test_aws_vpc.id)\ntest_route_server_endpoint = aws.vpc.RouteServerEndpoint(\"test\",\n route_server_id=test.route_server_id,\n subnet_id=test_aws_subnet[\"id\"],\n tags={\n \"Name\": \"Test Endpoint\",\n },\n opts = pulumi.ResourceOptions(depends_on=[test_vpc_route_server_association]))\ntest_route_server_propagation = aws.vpc.RouteServerPropagation(\"test\",\n route_server_id=test.route_server_id,\n route_table_id=test_aws_route_table[\"id\"],\n opts = pulumi.ResourceOptions(depends_on=[test_vpc_route_server_association]))\ntest_route_server_peer = aws.vpc.RouteServerPeer(\"test\",\n route_server_endpoint_id=test_route_server_endpoint.route_server_endpoint_id,\n peer_address=\"10.0.1.250\",\n bgp_options={\n \"peer_asn\": 65000,\n \"peer_liveness_detection\": \"bgp-keepalive\",\n },\n tags={\n \"Name\": \"Test Appliance\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Aws.Vpc.RouteServer(\"test\", new()\n {\n AmazonSideAsn = 4294967294,\n Tags = \n {\n { \"Name\", \"Test\" },\n },\n });\n\n var testVpcRouteServerAssociation = new Aws.Index.VpcRouteServerAssociation(\"test\", new()\n {\n RouteServerId = test.RouteServerId,\n VpcId = testAwsVpc.Id,\n });\n\n var testRouteServerEndpoint = new Aws.Vpc.RouteServerEndpoint(\"test\", new()\n {\n RouteServerId = test.RouteServerId,\n SubnetId = testAwsSubnet.Id,\n Tags = \n {\n { \"Name\", \"Test Endpoint\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n testVpcRouteServerAssociation,\n },\n });\n\n var testRouteServerPropagation = new Aws.Vpc.RouteServerPropagation(\"test\", new()\n {\n RouteServerId = test.RouteServerId,\n RouteTableId = testAwsRouteTable.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n testVpcRouteServerAssociation,\n },\n });\n\n var testRouteServerPeer = new Aws.Vpc.RouteServerPeer(\"test\", new()\n {\n RouteServerEndpointId = testRouteServerEndpoint.RouteServerEndpointId,\n PeerAddress = \"10.0.1.250\",\n BgpOptions = new Aws.Vpc.Inputs.RouteServerPeerBgpOptionsArgs\n {\n PeerAsn = 65000,\n PeerLivenessDetection = \"bgp-keepalive\",\n },\n Tags = \n {\n { \"Name\", \"Test Appliance\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/vpc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := vpc.NewRouteServer(ctx, \"test\", \u0026vpc.RouteServerArgs{\n\t\t\tAmazonSideAsn: pulumi.Int(4294967294),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"Test\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestVpcRouteServerAssociation, err := aws.NewVpcRouteServerAssociation(ctx, \"test\", \u0026aws.VpcRouteServerAssociationArgs{\n\t\t\tRouteServerId: test.RouteServerId,\n\t\t\tVpcId: testAwsVpc.Id,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestRouteServerEndpoint, err := vpc.NewRouteServerEndpoint(ctx, \"test\", \u0026vpc.RouteServerEndpointArgs{\n\t\t\tRouteServerId: test.RouteServerId,\n\t\t\tSubnetId: pulumi.Any(testAwsSubnet.Id),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"Test Endpoint\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\ttestVpcRouteServerAssociation,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vpc.NewRouteServerPropagation(ctx, \"test\", \u0026vpc.RouteServerPropagationArgs{\n\t\t\tRouteServerId: test.RouteServerId,\n\t\t\tRouteTableId: pulumi.Any(testAwsRouteTable.Id),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\ttestVpcRouteServerAssociation,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vpc.NewRouteServerPeer(ctx, \"test\", \u0026vpc.RouteServerPeerArgs{\n\t\t\tRouteServerEndpointId: testRouteServerEndpoint.RouteServerEndpointId,\n\t\t\tPeerAddress: pulumi.String(\"10.0.1.250\"),\n\t\t\tBgpOptions: \u0026vpc.RouteServerPeerBgpOptionsArgs{\n\t\t\t\tPeerAsn: pulumi.Int(65000),\n\t\t\t\tPeerLivenessDetection: pulumi.String(\"bgp-keepalive\"),\n\t\t\t},\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"Test Appliance\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.vpc.RouteServer;\nimport com.pulumi.aws.vpc.RouteServerArgs;\nimport com.pulumi.aws.VpcRouteServerAssociation;\nimport com.pulumi.aws.VpcRouteServerAssociationArgs;\nimport com.pulumi.aws.vpc.RouteServerEndpoint;\nimport com.pulumi.aws.vpc.RouteServerEndpointArgs;\nimport com.pulumi.aws.vpc.RouteServerPropagation;\nimport com.pulumi.aws.vpc.RouteServerPropagationArgs;\nimport com.pulumi.aws.vpc.RouteServerPeer;\nimport com.pulumi.aws.vpc.RouteServerPeerArgs;\nimport com.pulumi.aws.vpc.inputs.RouteServerPeerBgpOptionsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new RouteServer(\"test\", RouteServerArgs.builder()\n .amazonSideAsn(4294967294)\n .tags(Map.of(\"Name\", \"Test\"))\n .build());\n\n var testVpcRouteServerAssociation = new VpcRouteServerAssociation(\"testVpcRouteServerAssociation\", VpcRouteServerAssociationArgs.builder()\n .routeServerId(test.routeServerId())\n .vpcId(testAwsVpc.id())\n .build());\n\n var testRouteServerEndpoint = new RouteServerEndpoint(\"testRouteServerEndpoint\", RouteServerEndpointArgs.builder()\n .routeServerId(test.routeServerId())\n .subnetId(testAwsSubnet.id())\n .tags(Map.of(\"Name\", \"Test Endpoint\"))\n .build(), CustomResourceOptions.builder()\n .dependsOn(testVpcRouteServerAssociation)\n .build());\n\n var testRouteServerPropagation = new RouteServerPropagation(\"testRouteServerPropagation\", RouteServerPropagationArgs.builder()\n .routeServerId(test.routeServerId())\n .routeTableId(testAwsRouteTable.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(testVpcRouteServerAssociation)\n .build());\n\n var testRouteServerPeer = new RouteServerPeer(\"testRouteServerPeer\", RouteServerPeerArgs.builder()\n .routeServerEndpointId(testRouteServerEndpoint.routeServerEndpointId())\n .peerAddress(\"10.0.1.250\")\n .bgpOptions(RouteServerPeerBgpOptionsArgs.builder()\n .peerAsn(65000)\n .peerLivenessDetection(\"bgp-keepalive\")\n .build())\n .tags(Map.of(\"Name\", \"Test Appliance\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:vpc:RouteServer\n properties:\n amazonSideAsn: 4.294967294e+09\n tags:\n Name: Test\n testVpcRouteServerAssociation:\n type: aws:VpcRouteServerAssociation\n name: test\n properties:\n routeServerId: ${test.routeServerId}\n vpcId: ${testAwsVpc.id}\n testRouteServerEndpoint:\n type: aws:vpc:RouteServerEndpoint\n name: test\n properties:\n routeServerId: ${test.routeServerId}\n subnetId: ${testAwsSubnet.id}\n tags:\n Name: Test Endpoint\n options:\n dependsOn:\n - ${testVpcRouteServerAssociation}\n testRouteServerPropagation:\n type: aws:vpc:RouteServerPropagation\n name: test\n properties:\n routeServerId: ${test.routeServerId}\n routeTableId: ${testAwsRouteTable.id}\n options:\n dependsOn:\n - ${testVpcRouteServerAssociation}\n testRouteServerPeer:\n type: aws:vpc:RouteServerPeer\n name: test\n properties:\n routeServerEndpointId: ${testRouteServerEndpoint.routeServerEndpointId}\n peerAddress: 10.0.1.250\n bgpOptions:\n peerAsn: 65000\n peerLivenessDetection: bgp-keepalive\n tags:\n Name: Test Appliance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import VPC (Virtual Private Cloud) Route Server using the `route_server_peer_id`. For example:\n\n```sh\n$ pulumi import aws:vpc/routeServerPeer:RouteServerPeer example rsp-12345678\n```\n", "properties": { "arn": { "type": "string", @@ -442315,7 +442315,7 @@ } }, "aws:dynamodb/getTableItem:getTableItem": { - "description": "Data source for retrieving a value from an AWS DynamoDB table.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = aws.dynamodb.getTableItem({\n tableName: example.name,\n expressionAttributeNames: {\n \"#P\": \"Percentile\",\n },\n projectionExpression: \"#P\",\n key: `{\n\\x09\"hashKey\": {\"S\": \"example\"}\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.dynamodb.get_table_item(table_name=example[\"name\"],\n expression_attribute_names={\n \"#P\": \"Percentile\",\n },\n projection_expression=\"#P\",\n key=\"\"\"{\n\\x09\"hashKey\": {\"S\": \"example\"}\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = Aws.DynamoDB.GetTableItem.Invoke(new()\n {\n TableName = example.Name,\n ExpressionAttributeNames = \n {\n { \"#P\", \"Percentile\" },\n },\n ProjectionExpression = \"#P\",\n Key = @\"{\n\t\"\"hashKey\"\": {\"\"S\"\": \"\"example\"\"}\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/dynamodb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dynamodb.LookupTableItem(ctx, \u0026dynamodb.LookupTableItemArgs{\n\t\t\tTableName: example.Name,\n\t\t\tExpressionAttributeNames: map[string]interface{}{\n\t\t\t\t\"#P\": \"Percentile\",\n\t\t\t},\n\t\t\tProjectionExpression: pulumi.StringRef(\"#P\"),\n\t\t\tKey: \"{\\n\t\\\"hashKey\\\": {\\\"S\\\": \\\"example\\\"}\\n}\\n\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.dynamodb.DynamodbFunctions;\nimport com.pulumi.aws.dynamodb.inputs.GetTableItemArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var test = DynamodbFunctions.getTableItem(GetTableItemArgs.builder()\n .tableName(example.name())\n .expressionAttributeNames(Map.of(\"#P\", \"Percentile\"))\n .projectionExpression(\"#P\")\n .key(\"\"\"\n{\n\t\"hashKey\": {\"S\": \"example\"}\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n test:\n fn::invoke:\n function: aws:dynamodb:getTableItem\n arguments:\n tableName: ${example.name}\n expressionAttributeNames:\n '#P': Percentile\n projectionExpression: '#P'\n key: |\n {\n \t\"hashKey\": {\"S\": \"example\"}\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Data source for retrieving a value from an AWS DynamoDB table.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = aws.dynamodb.getTableItem({\n tableName: example.name,\n expressionAttributeNames: {\n \"#P\": \"Percentile\",\n },\n projectionExpression: \"#P\",\n key: `{\n\\\\t\\\\\"hashKey\\\\\": {\\\\\"S\\\\\": \\\\\"example\\\\\"}\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.dynamodb.get_table_item(table_name=example[\"name\"],\n expression_attribute_names={\n \"#P\": \"Percentile\",\n },\n projection_expression=\"#P\",\n key=\"\"\"{\n\\t\\\"hashKey\\\": {\\\"S\\\": \\\"example\\\"}\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = Aws.DynamoDB.GetTableItem.Invoke(new()\n {\n TableName = example.Name,\n ExpressionAttributeNames = \n {\n { \"#P\", \"Percentile\" },\n },\n ProjectionExpression = \"#P\",\n Key = @\"{\n\\t\\\"\"hashKey\\\"\": {\\\"\"S\\\"\": \\\"\"example\\\"\"}\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/dynamodb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dynamodb.LookupTableItem(ctx, \u0026dynamodb.LookupTableItemArgs{\n\t\t\tTableName: example.Name,\n\t\t\tExpressionAttributeNames: map[string]interface{}{\n\t\t\t\t\"#P\": \"Percentile\",\n\t\t\t},\n\t\t\tProjectionExpression: pulumi.StringRef(\"#P\"),\n\t\t\tKey: \"{\\n\\\\t\\\\\\\"hashKey\\\\\\\": {\\\\\\\"S\\\\\\\": \\\\\\\"example\\\\\\\"}\\n}\\n\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.dynamodb.DynamodbFunctions;\nimport com.pulumi.aws.dynamodb.inputs.GetTableItemArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var test = DynamodbFunctions.getTableItem(GetTableItemArgs.builder()\n .tableName(example.name())\n .expressionAttributeNames(Map.of(\"#P\", \"Percentile\"))\n .projectionExpression(\"#P\")\n .key(\"\"\"\n{\n\\t\\\"hashKey\\\": {\\\"S\\\": \\\"example\\\"}\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n test:\n fn::invoke:\n function: aws:dynamodb:getTableItem\n arguments:\n tableName: ${example.name}\n expressionAttributeNames:\n '#P': Percentile\n projectionExpression: '#P'\n key: |\n {\n \\t\\\"hashKey\\\": {\\\"S\\\": \\\"example\\\"}\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getTableItem.\n", "properties": { @@ -448246,7 +448246,7 @@ } }, "aws:ec2/getSubnets:getSubnets": { - "description": "This resource can be useful for getting back a set of subnet IDs.\n\n", + "description": "This resource can be useful for getting back a set of subnet IDs.\n\n## Example Usage\n\nThe following shows outputting all CIDR blocks for every subnet ID in a VPC.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = aws.ec2.getSubnets({\n filters: [{\n name: \"vpc-id\",\n values: [vpcId],\n }],\n});\nconst exampleGetSubnet = example.then(example =\u003e std.toset({\n input: example.ids,\n})).then(invoke =\u003e .reduce((__obj, [__key, __value]) =\u003e ({ ...__obj, [__key]: aws.ec2.getSubnet({\n id: __value,\n}) })));\nexport const subnetCidrBlocks = exampleGetSubnet.apply(exampleGetSubnet =\u003e Object.values(exampleGetSubnet).map(s =\u003e (s.cidrBlock)));\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.ec2.get_subnets(filters=[{\n \"name\": \"vpc-id\",\n \"values\": [vpc_id],\n}])\nexample_get_subnet = {__key: aws.ec2.get_subnet(id=__value) for __key, __value in std.toset(input=example.ids).result}\npulumi.export(\"subnetCidrBlocks\", [s.cidr_block for s in example_get_subnet])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.Ec2.GetSubnets.Invoke(new()\n {\n Filters = new[]\n {\n new Aws.Ec2.Inputs.GetSubnetsFilterInputArgs\n {\n Name = \"vpc-id\",\n Values = new[]\n {\n vpcId,\n },\n },\n },\n });\n\n var exampleGetSubnet = Std.Toset.Invoke(new()\n {\n Input = example.Apply(getSubnetsResult =\u003e getSubnetsResult.Ids),\n }).Apply(invoke =\u003e );\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"subnetCidrBlocks\"] = exampleGetSubnet.Apply(exampleGetSubnet =\u003e (exampleGetSubnet).Values.Select(s =\u003e \n {\n return s.CidrBlock;\n }).ToList()),\n };\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThe following example retrieves a set of all subnets in a VPC with a custom\ntag of `Tier` set to a value of \"Private\" so that the \u003cspan pulumi-lang-nodejs=\"`aws.ec2.Instance`\" pulumi-lang-dotnet=\"`aws.ec2.Instance`\" pulumi-lang-go=\"`ec2.Instance`\" pulumi-lang-python=\"`ec2.Instance`\" pulumi-lang-yaml=\"`aws.ec2.Instance`\" pulumi-lang-java=\"`aws.ec2.Instance`\"\u003e`aws.ec2.Instance`\u003c/span\u003e resource\ncan loop through the subnets, putting instances across availability zones.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nexport = async () =\u003e {\n const _private = await aws.ec2.getSubnets({\n filters: [{\n name: \"vpc-id\",\n values: [vpcId],\n }],\n tags: {\n Tier: \"Private\",\n },\n });\n const app: aws.ec2.Instance[] = [];\n for (const range of std.toset({\n input: _private.ids,\n }).result.map((v, k) =\u003e ({key: k, value: v}))) {\n app.push(new aws.ec2.Instance(`app-${range.key}`, {\n ami: ami,\n instanceType: aws.ec2.InstanceType.T2_Micro,\n subnetId: range.value,\n }));\n }\n}\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nprivate = aws.ec2.get_subnets(filters=[{\n \"name\": \"vpc-id\",\n \"values\": [vpc_id],\n }],\n tags={\n \"Tier\": \"Private\",\n })\napp = []\nfor range in [{\"key\": k, \"value\": v} for [k, v] in enumerate(std.toset(input=private.ids).result)]:\n app.append(aws.ec2.Instance(f\"app-{range['key']}\",\n ami=ami,\n instance_type=aws.ec2.InstanceType.T2_MICRO,\n subnet_id=range[\"value\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(async() =\u003e \n{\n var @private = await Aws.Ec2.GetSubnets.InvokeAsync(new()\n {\n Filters = new[]\n {\n new Aws.Ec2.Inputs.GetSubnetsFilterInputArgs\n {\n Name = \"vpc-id\",\n Values = new[]\n {\n vpcId,\n },\n },\n },\n Tags = \n {\n { \"Tier\", \"Private\" },\n },\n });\n\n var app = new List\u003cAws.Ec2.Instance\u003e();\n foreach (var range in )\n {\n app.Add(new Aws.Ec2.Instance($\"app-{range.Key}\", new()\n {\n Ami = ami,\n InstanceType = Aws.Ec2.InstanceType.T2_Micro,\n SubnetId = range.Value,\n }));\n }\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nprivate, err := ec2.GetSubnets(ctx, \u0026ec2.GetSubnetsArgs{\nFilters: []ec2.GetSubnetsFilter{\n{\nName: \"vpc-id\",\nValues: interface{}{\nvpcId,\n},\n},\n},\nTags: map[string]interface{}{\n\"Tier\": \"Private\",\n},\n}, nil);\nif err != nil {\nreturn err\n}\nvar app []*ec2.Instance\nfor key0, val0 := range interface{}(std.Toset(ctx, \u0026std.TosetArgs{\nInput: private.Ids,\n}, nil).Result) {\n__res, err := ec2.NewInstance(ctx, fmt.Sprintf(\"app-%v\", key0), \u0026ec2.InstanceArgs{\nAmi: pulumi.Any(ami),\nInstanceType: pulumi.String(ec2.InstanceType_T2_Micro),\nSubnetId: pulumi.Any(val0),\n})\nif err != nil {\nreturn err\n}\napp = append(app, __res)\n}\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.Ec2Functions;\nimport com.pulumi.aws.ec2.inputs.GetSubnetsArgs;\nimport com.pulumi.aws.ec2.Instance;\nimport com.pulumi.aws.ec2.InstanceArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var private = Ec2Functions.getSubnets(GetSubnetsArgs.builder()\n .filters(GetSubnetsFilterArgs.builder()\n .name(\"vpc-id\")\n .values(vpcId)\n .build())\n .tags(Map.of(\"Tier\", \"Private\"))\n .build());\n\n for (var range : KeyedValue.of(com.pulumi.std.StdFunctions(TosetArgs.builder()\n .input(private_.ids())\n .build()).result())) {\n new Instance(\"app-\" + range.key(), InstanceArgs.builder()\n .ami(ami)\n .instanceType(\"t2.micro\")\n .subnetId(range.value())\n .build());\n }\n\n }\n}\n```\n```yaml\nresources:\n app:\n type: aws:ec2:Instance\n properties:\n ami: ${ami}\n instanceType: t2.micro\n subnetId: ${range.value}\n options: {}\nvariables:\n private:\n fn::invoke:\n function: aws:ec2:getSubnets\n arguments:\n filters:\n - name: vpc-id\n values:\n - ${vpcId}\n tags:\n Tier: Private\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getSubnets.\n", "properties": { @@ -452478,7 +452478,7 @@ } }, "aws:ecs/getTaskDefinition:getTaskDefinition": { - "description": "The ECS task definition data source allows access to details of\na specific AWS ECS task definition.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst mongoTaskDefinition = new aws.ecs.TaskDefinition(\"mongo\", {\n family: \"mongodb\",\n containerDefinitions: `[\n {\n \"cpu\": 128,\n \"environment\": [{\n \"name\": \"SECRET\",\n \"value\": \"KEY\"\n }],\n \"essential\": true,\n \"image\": \"mongo:latest\",\n \"memory\": 128,\n \"memoryReservation\": 64,\n \"name\": \"mongodb\"\n }\n]\n`,\n});\n// Simply specify the family to find the latest ACTIVE revision in that family.\nconst mongo = aws.ecs.getTaskDefinitionOutput({\n taskDefinition: mongoTaskDefinition.family,\n});\nconst foo = new aws.ecs.Cluster(\"foo\", {name: \"foo\"});\nconst mongoService = new aws.ecs.Service(\"mongo\", {\n name: \"mongo\",\n cluster: foo.id,\n desiredCount: 2,\n taskDefinition: mongo.apply(mongo =\u003e mongo.arn),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nmongo_task_definition = aws.ecs.TaskDefinition(\"mongo\",\n family=\"mongodb\",\n container_definitions=\"\"\"[\n {\n \"cpu\": 128,\n \"environment\": [{\n \"name\": \"SECRET\",\n \"value\": \"KEY\"\n }],\n \"essential\": true,\n \"image\": \"mongo:latest\",\n \"memory\": 128,\n \"memoryReservation\": 64,\n \"name\": \"mongodb\"\n }\n]\n\"\"\")\n# Simply specify the family to find the latest ACTIVE revision in that family.\nmongo = aws.ecs.get_task_definition_output(task_definition=mongo_task_definition.family)\nfoo = aws.ecs.Cluster(\"foo\", name=\"foo\")\nmongo_service = aws.ecs.Service(\"mongo\",\n name=\"mongo\",\n cluster=foo.id,\n desired_count=2,\n task_definition=mongo.arn)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mongoTaskDefinition = new Aws.Ecs.TaskDefinition(\"mongo\", new()\n {\n Family = \"mongodb\",\n ContainerDefinitions = @\"[\n {\n \"\"cpu\"\": 128,\n \"\"environment\"\": [{\n \"\"name\"\": \"\"SECRET\"\",\n \"\"value\"\": \"\"KEY\"\"\n }],\n \"\"essential\"\": true,\n \"\"image\"\": \"\"mongo:latest\"\",\n \"\"memory\"\": 128,\n \"\"memoryReservation\"\": 64,\n \"\"name\"\": \"\"mongodb\"\"\n }\n]\n\",\n });\n\n // Simply specify the family to find the latest ACTIVE revision in that family.\n var mongo = Aws.Ecs.GetTaskDefinition.Invoke(new()\n {\n TaskDefinition = mongoTaskDefinition.Family,\n });\n\n var foo = new Aws.Ecs.Cluster(\"foo\", new()\n {\n Name = \"foo\",\n });\n\n var mongoService = new Aws.Ecs.Service(\"mongo\", new()\n {\n Name = \"mongo\",\n Cluster = foo.Id,\n DesiredCount = 2,\n TaskDefinition = mongo.Apply(getTaskDefinitionResult =\u003e getTaskDefinitionResult.Arn),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ecs\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmongoTaskDefinition, err := ecs.NewTaskDefinition(ctx, \"mongo\", \u0026ecs.TaskDefinitionArgs{\n\t\t\tFamily: pulumi.String(\"mongodb\"),\n\t\t\tContainerDefinitions: pulumi.String(`[\n {\n \"cpu\": 128,\n \"environment\": [{\n \"name\": \"SECRET\",\n \"value\": \"KEY\"\n }],\n \"essential\": true,\n \"image\": \"mongo:latest\",\n \"memory\": 128,\n \"memoryReservation\": 64,\n \"name\": \"mongodb\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Simply specify the family to find the latest ACTIVE revision in that family.\n\t\tmongo := ecs.LookupTaskDefinitionOutput(ctx, ecs.GetTaskDefinitionOutputArgs{\n\t\t\tTaskDefinition: mongoTaskDefinition.Family,\n\t\t}, nil)\n\t\tfoo, err := ecs.NewCluster(ctx, \"foo\", \u0026ecs.ClusterArgs{\n\t\t\tName: pulumi.String(\"foo\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ecs.NewService(ctx, \"mongo\", \u0026ecs.ServiceArgs{\n\t\t\tName: pulumi.String(\"mongo\"),\n\t\t\tCluster: foo.ID(),\n\t\t\tDesiredCount: pulumi.Int(2),\n\t\t\tTaskDefinition: pulumi.String(mongo.ApplyT(func(mongo ecs.GetTaskDefinitionResult) (*string, error) {\n\t\t\t\treturn \u0026mongo.Arn, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ecs.TaskDefinition;\nimport com.pulumi.aws.ecs.TaskDefinitionArgs;\nimport com.pulumi.aws.ecs.EcsFunctions;\nimport com.pulumi.aws.ecs.inputs.GetTaskDefinitionArgs;\nimport com.pulumi.aws.ecs.Cluster;\nimport com.pulumi.aws.ecs.ClusterArgs;\nimport com.pulumi.aws.ecs.Service;\nimport com.pulumi.aws.ecs.ServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mongoTaskDefinition = new TaskDefinition(\"mongoTaskDefinition\", TaskDefinitionArgs.builder()\n .family(\"mongodb\")\n .containerDefinitions(\"\"\"\n[\n {\n \"cpu\": 128,\n \"environment\": [{\n \"name\": \"SECRET\",\n \"value\": \"KEY\"\n }],\n \"essential\": true,\n \"image\": \"mongo:latest\",\n \"memory\": 128,\n \"memoryReservation\": 64,\n \"name\": \"mongodb\"\n }\n]\n \"\"\")\n .build());\n\n // Simply specify the family to find the latest ACTIVE revision in that family.\n final var mongo = EcsFunctions.getTaskDefinition(GetTaskDefinitionArgs.builder()\n .taskDefinition(mongoTaskDefinition.family())\n .build());\n\n var foo = new Cluster(\"foo\", ClusterArgs.builder()\n .name(\"foo\")\n .build());\n\n var mongoService = new Service(\"mongoService\", ServiceArgs.builder()\n .name(\"mongo\")\n .cluster(foo.id())\n .desiredCount(2)\n .taskDefinition(mongo.applyValue(_mongo -\u003e _mongo.arn()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: aws:ecs:Cluster\n properties:\n name: foo\n mongoTaskDefinition:\n type: aws:ecs:TaskDefinition\n name: mongo\n properties:\n family: mongodb\n containerDefinitions: |\n [\n {\n \"cpu\": 128,\n \"environment\": [{\n \"name\": \"SECRET\",\n \"value\": \"KEY\"\n }],\n \"essential\": true,\n \"image\": \"mongo:latest\",\n \"memory\": 128,\n \"memoryReservation\": 64,\n \"name\": \"mongodb\"\n }\n ]\n mongoService:\n type: aws:ecs:Service\n name: mongo\n properties:\n name: mongo\n cluster: ${foo.id}\n desiredCount: 2 # Track the latest ACTIVE revision\n taskDefinition: ${mongo.arn}\nvariables:\n # Simply specify the family to find the latest ACTIVE revision in that family.\n mongo:\n fn::invoke:\n function: aws:ecs:getTaskDefinition\n arguments:\n taskDefinition: ${mongoTaskDefinition.family}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "The ECS task definition data source allows access to details of\na specific AWS ECS task definition.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst mongoTaskDefinition = new aws.ecs.TaskDefinition(\"mongo\", {\n family: \"mongodb\",\n containerDefinitions: `[\n {\n \\\\\"cpu\\\\\": 128,\n \\\\\"environment\\\\\": [{\n \\\\\"name\\\\\": \\\\\"SECRET\\\\\",\n \\\\\"value\\\\\": \\\\\"KEY\\\\\"\n }],\n \\\\\"essential\\\\\": true,\n \\\\\"image\\\\\": \\\\\"mongo:latest\\\\\",\n \\\\\"memory\\\\\": 128,\n \\\\\"memoryReservation\\\\\": 64,\n \\\\\"name\\\\\": \\\\\"mongodb\\\\\"\n }\n]\n`,\n});\n// Simply specify the family to find the latest ACTIVE revision in that family.\nconst mongo = aws.ecs.getTaskDefinitionOutput({\n taskDefinition: mongoTaskDefinition.family,\n});\nconst foo = new aws.ecs.Cluster(\"foo\", {name: \"foo\"});\nconst mongoService = new aws.ecs.Service(\"mongo\", {\n name: \"mongo\",\n cluster: foo.id,\n desiredCount: 2,\n taskDefinition: mongo.apply(mongo =\u003e mongo.arn),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nmongo_task_definition = aws.ecs.TaskDefinition(\"mongo\",\n family=\"mongodb\",\n container_definitions=\"\"\"[\n {\n \\\"cpu\\\": 128,\n \\\"environment\\\": [{\n \\\"name\\\": \\\"SECRET\\\",\n \\\"value\\\": \\\"KEY\\\"\n }],\n \\\"essential\\\": true,\n \\\"image\\\": \\\"mongo:latest\\\",\n \\\"memory\\\": 128,\n \\\"memoryReservation\\\": 64,\n \\\"name\\\": \\\"mongodb\\\"\n }\n]\n\"\"\")\n# Simply specify the family to find the latest ACTIVE revision in that family.\nmongo = aws.ecs.get_task_definition_output(task_definition=mongo_task_definition.family)\nfoo = aws.ecs.Cluster(\"foo\", name=\"foo\")\nmongo_service = aws.ecs.Service(\"mongo\",\n name=\"mongo\",\n cluster=foo.id,\n desired_count=2,\n task_definition=mongo.arn)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mongoTaskDefinition = new Aws.Ecs.TaskDefinition(\"mongo\", new()\n {\n Family = \"mongodb\",\n ContainerDefinitions = @\"[\n {\n \\\"\"cpu\\\"\": 128,\n \\\"\"environment\\\"\": [{\n \\\"\"name\\\"\": \\\"\"SECRET\\\"\",\n \\\"\"value\\\"\": \\\"\"KEY\\\"\"\n }],\n \\\"\"essential\\\"\": true,\n \\\"\"image\\\"\": \\\"\"mongo:latest\\\"\",\n \\\"\"memory\\\"\": 128,\n \\\"\"memoryReservation\\\"\": 64,\n \\\"\"name\\\"\": \\\"\"mongodb\\\"\"\n }\n]\n\",\n });\n\n // Simply specify the family to find the latest ACTIVE revision in that family.\n var mongo = Aws.Ecs.GetTaskDefinition.Invoke(new()\n {\n TaskDefinition = mongoTaskDefinition.Family,\n });\n\n var foo = new Aws.Ecs.Cluster(\"foo\", new()\n {\n Name = \"foo\",\n });\n\n var mongoService = new Aws.Ecs.Service(\"mongo\", new()\n {\n Name = \"mongo\",\n Cluster = foo.Id,\n DesiredCount = 2,\n TaskDefinition = mongo.Apply(getTaskDefinitionResult =\u003e getTaskDefinitionResult.Arn),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ecs\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmongoTaskDefinition, err := ecs.NewTaskDefinition(ctx, \"mongo\", \u0026ecs.TaskDefinitionArgs{\n\t\t\tFamily: pulumi.String(\"mongodb\"),\n\t\t\tContainerDefinitions: pulumi.String(`[\n {\n \\\"cpu\\\": 128,\n \\\"environment\\\": [{\n \\\"name\\\": \\\"SECRET\\\",\n \\\"value\\\": \\\"KEY\\\"\n }],\n \\\"essential\\\": true,\n \\\"image\\\": \\\"mongo:latest\\\",\n \\\"memory\\\": 128,\n \\\"memoryReservation\\\": 64,\n \\\"name\\\": \\\"mongodb\\\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Simply specify the family to find the latest ACTIVE revision in that family.\n\t\tmongo := ecs.LookupTaskDefinitionOutput(ctx, ecs.GetTaskDefinitionOutputArgs{\n\t\t\tTaskDefinition: mongoTaskDefinition.Family,\n\t\t}, nil)\n\t\tfoo, err := ecs.NewCluster(ctx, \"foo\", \u0026ecs.ClusterArgs{\n\t\t\tName: pulumi.String(\"foo\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ecs.NewService(ctx, \"mongo\", \u0026ecs.ServiceArgs{\n\t\t\tName: pulumi.String(\"mongo\"),\n\t\t\tCluster: foo.ID(),\n\t\t\tDesiredCount: pulumi.Int(2),\n\t\t\tTaskDefinition: pulumi.String(mongo.ApplyT(func(mongo ecs.GetTaskDefinitionResult) (*string, error) {\n\t\t\t\treturn \u0026mongo.Arn, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ecs.TaskDefinition;\nimport com.pulumi.aws.ecs.TaskDefinitionArgs;\nimport com.pulumi.aws.ecs.EcsFunctions;\nimport com.pulumi.aws.ecs.inputs.GetTaskDefinitionArgs;\nimport com.pulumi.aws.ecs.Cluster;\nimport com.pulumi.aws.ecs.ClusterArgs;\nimport com.pulumi.aws.ecs.Service;\nimport com.pulumi.aws.ecs.ServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mongoTaskDefinition = new TaskDefinition(\"mongoTaskDefinition\", TaskDefinitionArgs.builder()\n .family(\"mongodb\")\n .containerDefinitions(\"\"\"\n[\n {\n \\\"cpu\\\": 128,\n \\\"environment\\\": [{\n \\\"name\\\": \\\"SECRET\\\",\n \\\"value\\\": \\\"KEY\\\"\n }],\n \\\"essential\\\": true,\n \\\"image\\\": \\\"mongo:latest\\\",\n \\\"memory\\\": 128,\n \\\"memoryReservation\\\": 64,\n \\\"name\\\": \\\"mongodb\\\"\n }\n]\n \"\"\")\n .build());\n\n // Simply specify the family to find the latest ACTIVE revision in that family.\n final var mongo = EcsFunctions.getTaskDefinition(GetTaskDefinitionArgs.builder()\n .taskDefinition(mongoTaskDefinition.family())\n .build());\n\n var foo = new Cluster(\"foo\", ClusterArgs.builder()\n .name(\"foo\")\n .build());\n\n var mongoService = new Service(\"mongoService\", ServiceArgs.builder()\n .name(\"mongo\")\n .cluster(foo.id())\n .desiredCount(2)\n .taskDefinition(mongo.applyValue(_mongo -\u003e _mongo.arn()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: aws:ecs:Cluster\n properties:\n name: foo\n mongoTaskDefinition:\n type: aws:ecs:TaskDefinition\n name: mongo\n properties:\n family: mongodb\n containerDefinitions: |\n [\n {\n \\\"cpu\\\": 128,\n \\\"environment\\\": [{\n \\\"name\\\": \\\"SECRET\\\",\n \\\"value\\\": \\\"KEY\\\"\n }],\n \\\"essential\\\": true,\n \\\"image\\\": \\\"mongo:latest\\\",\n \\\"memory\\\": 128,\n \\\"memoryReservation\\\": 64,\n \\\"name\\\": \\\"mongodb\\\"\n }\n ]\n mongoService:\n type: aws:ecs:Service\n name: mongo\n properties:\n name: mongo\n cluster: ${foo.id}\n desiredCount: 2 # Track the latest ACTIVE revision\n taskDefinition: ${mongo.arn}\nvariables:\n # Simply specify the family to find the latest ACTIVE revision in that family.\n mongo:\n fn::invoke:\n function: aws:ecs:getTaskDefinition\n arguments:\n taskDefinition: ${mongoTaskDefinition.family}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getTaskDefinition.\n", "properties": { @@ -453820,7 +453820,7 @@ } }, "aws:eks/getClusters:getClusters": { - "description": "Retrieve EKS Clusters list\n\n", + "description": "Retrieve EKS Clusters list\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = aws.eks.getClusters({});\nconst exampleGetCluster = example.then(example =\u003e std.toset({\n input: example.names,\n})).then(invoke =\u003e .reduce((__obj, [__key, __value]) =\u003e ({ ...__obj, [__key]: aws.eks.getCluster({\n name: __value,\n}) })));\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.eks.get_clusters()\nexample_get_cluster = {__key: aws.eks.get_cluster(name=__value) for __key, __value in std.toset(input=example.names).result}\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.Eks.GetClusters.Invoke();\n\n var exampleGetCluster = Std.Toset.Invoke(new()\n {\n Input = example.Apply(getClustersResult =\u003e getClustersResult.Names),\n }).Apply(invoke =\u003e );\n\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getClusters.\n", "properties": { @@ -460647,7 +460647,7 @@ } }, "aws:iot/getEndpoint:getEndpoint": { - "description": "Returns a unique endpoint specific to the AWS account making the call.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n agent:\n type: kubernetes:core/v1:Pod\n properties:\n metadata:\n name: my-device\n spec:\n container:\n - image: gcr.io/my-project/image-name\n name: image-name\n env:\n - name: IOT_ENDPOINT\n value: ${example.endpointAddress}\nvariables:\n example:\n fn::invoke:\n function: aws:iot:getEndpoint\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Returns a unique endpoint specific to the AWS account making the call.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as kubernetes from \"@pulumi/kubernetes\";\n\nconst example = aws.iot.getEndpoint({});\nconst agent = new kubernetes.index.Pod(\"agent\", {\n metadata: [{\n name: \"my-device\",\n }],\n spec: [{\n container: [{\n image: \"gcr.io/my-project/image-name\",\n name: \"image-name\",\n env: [{\n name: \"IOT_ENDPOINT\",\n value: example.endpointAddress,\n }],\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_kubernetes as kubernetes\n\nexample = aws.iot.get_endpoint()\nagent = kubernetes.index.Pod(\"agent\",\n metadata=[{\n name: my-device,\n }],\n spec=[{\n container: [{\n image: gcr.io/my-project/image-name,\n name: image-name,\n env: [{\n name: IOT_ENDPOINT,\n value: example.endpoint_address,\n }],\n }],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Kubernetes = Pulumi.Kubernetes;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.Iot.GetEndpoint.Invoke();\n\n var agent = new Kubernetes.Index.Pod(\"agent\", new()\n {\n Metadata = new[]\n {\n \n {\n { \"name\", \"my-device\" },\n },\n },\n Spec = new[]\n {\n \n {\n { \"container\", new[]\n {\n \n {\n { \"image\", \"gcr.io/my-project/image-name\" },\n { \"name\", \"image-name\" },\n { \"env\", new[]\n {\n \n {\n { \"name\", \"IOT_ENDPOINT\" },\n { \"value\", example.Apply(getEndpointResult =\u003e getEndpointResult.EndpointAddress) },\n },\n } },\n },\n } },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iot\"\n\t\"github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := iot.GetEndpoint(ctx, \u0026iot.GetEndpointArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kubernetes.NewPod(ctx, \"agent\", \u0026kubernetes.PodArgs{\n\t\t\tMetadata: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"name\": \"my-device\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tSpec: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"container\": []map[string]interface{}{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"image\": \"gcr.io/my-project/image-name\",\n\t\t\t\t\t\t\t\"name\": \"image-name\",\n\t\t\t\t\t\t\t\"env\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"name\": \"IOT_ENDPOINT\",\n\t\t\t\t\t\t\t\t\t\"value\": example.EndpointAddress,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.iot.IotFunctions;\nimport com.pulumi.aws.iot.inputs.GetEndpointArgs;\nimport com.pulumi.kubernetes.Pod;\nimport com.pulumi.kubernetes.PodArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = IotFunctions.getEndpoint(GetEndpointArgs.builder()\n .build());\n\n var agent = new Pod(\"agent\", PodArgs.builder()\n .metadata(List.of(Map.of(\"name\", \"my-device\")))\n .spec(List.of(Map.of(\"container\", List.of(Map.ofEntries(\n Map.entry(\"image\", \"gcr.io/my-project/image-name\"),\n Map.entry(\"name\", \"image-name\"),\n Map.entry(\"env\", List.of(Map.ofEntries(\n Map.entry(\"name\", \"IOT_ENDPOINT\"),\n Map.entry(\"value\", example.endpointAddress())\n )))\n )))))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: kubernetes:Pod\n properties:\n metadata:\n - name: my-device\n spec:\n - container:\n - image: gcr.io/my-project/image-name\n name: image-name\n env:\n - name: IOT_ENDPOINT\n value: ${example.endpointAddress}\nvariables:\n example:\n fn::invoke:\n function: aws:iot:getEndpoint\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getEndpoint.\n", "properties": { @@ -460689,7 +460689,7 @@ } }, "aws:iot/getRegistrationCode:getRegistrationCode": { - "description": "Gets a registration code used to register a CA certificate with AWS IoT.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as tls from \"@pulumi/tls\";\n\nconst example = aws.iot.getRegistrationCode({});\nconst verification = new tls.index.PrivateKey(\"verification\", {algorithm: \"RSA\"});\nconst verificationCertRequest = new tls.index.CertRequest(\"verification\", {\n keyAlgorithm: \"RSA\",\n privateKeyPem: verification.privateKeyPem,\n subject: [{\n commonName: example.registrationCode,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_tls as tls\n\nexample = aws.iot.get_registration_code()\nverification = tls.index.PrivateKey(\"verification\", algorithm=RSA)\nverification_cert_request = tls.index.CertRequest(\"verification\",\n key_algorithm=RSA,\n private_key_pem=verification.private_key_pem,\n subject=[{\n commonName: example.registration_code,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Tls = Pulumi.Tls;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.Iot.GetRegistrationCode.Invoke();\n\n var verification = new Tls.Index.PrivateKey(\"verification\", new()\n {\n Algorithm = \"RSA\",\n });\n\n var verificationCertRequest = new Tls.Index.CertRequest(\"verification\", new()\n {\n KeyAlgorithm = \"RSA\",\n PrivateKeyPem = verification.PrivateKeyPem,\n Subject = new[]\n {\n \n {\n { \"commonName\", example.Apply(getRegistrationCodeResult =\u003e getRegistrationCodeResult.RegistrationCode) },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iot\"\n\t\"github.com/pulumi/pulumi-tls/sdk/v4/go/tls\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := iot.GetRegistrationCode(ctx, \u0026iot.GetRegistrationCodeArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tverification, err := tls.NewPrivateKey(ctx, \"verification\", \u0026tls.PrivateKeyArgs{\n\t\t\tAlgorithm: \"RSA\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tls.NewCertRequest(ctx, \"verification\", \u0026tls.CertRequestArgs{\n\t\t\tKeyAlgorithm: \"RSA\",\n\t\t\tPrivateKeyPem: verification.PrivateKeyPem,\n\t\t\tSubject: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"commonName\": example.RegistrationCode,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.iot.IotFunctions;\nimport com.pulumi.aws.iot.inputs.GetRegistrationCodeArgs;\nimport com.pulumi.tls.privateKey;\nimport com.pulumi.tls.privateKeyArgs;\nimport com.pulumi.tls.certRequest;\nimport com.pulumi.tls.certRequestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = IotFunctions.getRegistrationCode(GetRegistrationCodeArgs.builder()\n .build());\n\n var verification = new PrivateKey(\"verification\", PrivateKeyArgs.builder()\n .algorithm(\"RSA\")\n .build());\n\n var verificationCertRequest = new CertRequest(\"verificationCertRequest\", CertRequestArgs.builder()\n .keyAlgorithm(\"RSA\")\n .privateKeyPem(verification.privateKeyPem())\n .subject(List.of(Map.of(\"commonName\", example.registrationCode())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n verification:\n type: tls:privateKey\n properties:\n algorithm: RSA\n verificationCertRequest:\n type: tls:certRequest\n name: verification\n properties:\n keyAlgorithm: RSA\n privateKeyPem: ${verification.privateKeyPem}\n subject:\n - commonName: ${example.registrationCode}\nvariables:\n example:\n fn::invoke:\n function: aws:iot:getRegistrationCode\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Gets a registration code used to register a CA certificate with AWS IoT.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n verification:\n type: tls:PrivateKey\n properties:\n algorithm: RSA\n verificationCertRequest:\n type: tls:CertRequest\n name: verification\n properties:\n keyAlgorithm: RSA\n privateKeyPem: ${verification.privateKeyPem}\n subject:\n - commonName: ${example.registrationCode}\nvariables:\n example:\n fn::invoke:\n function: aws:iot:getRegistrationCode\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getRegistrationCode.\n", "properties": { @@ -461722,7 +461722,7 @@ } }, "aws:kms/getCipherText:getCipherText": { - "description": "The KMS ciphertext data source allows you to encrypt plaintext into ciphertext\nby using an AWS KMS customer master key. The value returned by this data source\nchanges every apply. For a stable ciphertext value, see the \u003cspan pulumi-lang-nodejs=\"`aws.kms.Ciphertext`\" pulumi-lang-dotnet=\"`aws.kms.Ciphertext`\" pulumi-lang-go=\"`kms.Ciphertext`\" pulumi-lang-python=\"`kms.Ciphertext`\" pulumi-lang-yaml=\"`aws.kms.Ciphertext`\" pulumi-lang-java=\"`aws.kms.Ciphertext`\"\u003e`aws.kms.Ciphertext`\u003c/span\u003e\nresource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst oauthConfig = new aws.kms.Key(\"oauth_config\", {\n description: \"oauth config\",\n isEnabled: true,\n});\nconst oauth = aws.kms.getCipherTextOutput({\n keyId: oauthConfig.keyId,\n plaintext: `{\n \"client_id\": \"e587dbae22222f55da22\",\n \"client_secret\": \"8289575d00000ace55e1815ec13673955721b8a5\"\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\noauth_config = aws.kms.Key(\"oauth_config\",\n description=\"oauth config\",\n is_enabled=True)\noauth = aws.kms.get_cipher_text_output(key_id=oauth_config.key_id,\n plaintext=\"\"\"{\n \"client_id\": \"e587dbae22222f55da22\",\n \"client_secret\": \"8289575d00000ace55e1815ec13673955721b8a5\"\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var oauthConfig = new Aws.Kms.Key(\"oauth_config\", new()\n {\n Description = \"oauth config\",\n IsEnabled = true,\n });\n\n var oauth = Aws.Kms.GetCipherText.Invoke(new()\n {\n KeyId = oauthConfig.KeyId,\n Plaintext = @\"{\n \"\"client_id\"\": \"\"e587dbae22222f55da22\"\",\n \"\"client_secret\"\": \"\"8289575d00000ace55e1815ec13673955721b8a5\"\"\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\toauthConfig, err := kms.NewKey(ctx, \"oauth_config\", \u0026kms.KeyArgs{\n\t\t\tDescription: pulumi.String(\"oauth config\"),\n\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_ = kms.GetCipherTextOutput(ctx, kms.GetCipherTextOutputArgs{\n\t\t\tKeyId: oauthConfig.KeyId,\n\t\t\tPlaintext: pulumi.String(\"{\\n \\\"client_id\\\": \\\"e587dbae22222f55da22\\\",\\n \\\"client_secret\\\": \\\"8289575d00000ace55e1815ec13673955721b8a5\\\"\\n}\\n\"),\n\t\t}, nil)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kms.Key;\nimport com.pulumi.aws.kms.KeyArgs;\nimport com.pulumi.aws.kms.KmsFunctions;\nimport com.pulumi.aws.kms.inputs.GetCipherTextArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var oauthConfig = new Key(\"oauthConfig\", KeyArgs.builder()\n .description(\"oauth config\")\n .isEnabled(true)\n .build());\n\n final var oauth = KmsFunctions.getCipherText(GetCipherTextArgs.builder()\n .keyId(oauthConfig.keyId())\n .plaintext(\"\"\"\n{\n \"client_id\": \"e587dbae22222f55da22\",\n \"client_secret\": \"8289575d00000ace55e1815ec13673955721b8a5\"\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n oauthConfig:\n type: aws:kms:Key\n name: oauth_config\n properties:\n description: oauth config\n isEnabled: true\nvariables:\n oauth:\n fn::invoke:\n function: aws:kms:getCipherText\n arguments:\n keyId: ${oauthConfig.keyId}\n plaintext: |\n {\n \"client_id\": \"e587dbae22222f55da22\",\n \"client_secret\": \"8289575d00000ace55e1815ec13673955721b8a5\"\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "The KMS ciphertext data source allows you to encrypt plaintext into ciphertext\nby using an AWS KMS customer master key. The value returned by this data source\nchanges every apply. For a stable ciphertext value, see the \u003cspan pulumi-lang-nodejs=\"`aws.kms.Ciphertext`\" pulumi-lang-dotnet=\"`aws.kms.Ciphertext`\" pulumi-lang-go=\"`kms.Ciphertext`\" pulumi-lang-python=\"`kms.Ciphertext`\" pulumi-lang-yaml=\"`aws.kms.Ciphertext`\" pulumi-lang-java=\"`aws.kms.Ciphertext`\"\u003e`aws.kms.Ciphertext`\u003c/span\u003e\nresource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst oauthConfig = new aws.kms.Key(\"oauth_config\", {\n description: \"oauth config\",\n isEnabled: true,\n});\nconst oauth = aws.kms.getCipherTextOutput({\n keyId: oauthConfig.keyId,\n plaintext: `{\n \\\\\"client_id\\\\\": \\\\\"e587dbae22222f55da22\\\\\",\n \\\\\"client_secret\\\\\": \\\\\"8289575d00000ace55e1815ec13673955721b8a5\\\\\"\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\noauth_config = aws.kms.Key(\"oauth_config\",\n description=\"oauth config\",\n is_enabled=True)\noauth = aws.kms.get_cipher_text_output(key_id=oauth_config.key_id,\n plaintext=\"\"\"{\n \\\"client_id\\\": \\\"e587dbae22222f55da22\\\",\n \\\"client_secret\\\": \\\"8289575d00000ace55e1815ec13673955721b8a5\\\"\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var oauthConfig = new Aws.Kms.Key(\"oauth_config\", new()\n {\n Description = \"oauth config\",\n IsEnabled = true,\n });\n\n var oauth = Aws.Kms.GetCipherText.Invoke(new()\n {\n KeyId = oauthConfig.KeyId,\n Plaintext = @\"{\n \\\"\"client_id\\\"\": \\\"\"e587dbae22222f55da22\\\"\",\n \\\"\"client_secret\\\"\": \\\"\"8289575d00000ace55e1815ec13673955721b8a5\\\"\"\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\toauthConfig, err := kms.NewKey(ctx, \"oauth_config\", \u0026kms.KeyArgs{\n\t\t\tDescription: pulumi.String(\"oauth config\"),\n\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_ = kms.GetCipherTextOutput(ctx, kms.GetCipherTextOutputArgs{\n\t\t\tKeyId: oauthConfig.KeyId,\n\t\t\tPlaintext: pulumi.String(\"{\\n \\\\\\\"client_id\\\\\\\": \\\\\\\"e587dbae22222f55da22\\\\\\\",\\n \\\\\\\"client_secret\\\\\\\": \\\\\\\"8289575d00000ace55e1815ec13673955721b8a5\\\\\\\"\\n}\\n\"),\n\t\t}, nil)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kms.Key;\nimport com.pulumi.aws.kms.KeyArgs;\nimport com.pulumi.aws.kms.KmsFunctions;\nimport com.pulumi.aws.kms.inputs.GetCipherTextArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var oauthConfig = new Key(\"oauthConfig\", KeyArgs.builder()\n .description(\"oauth config\")\n .isEnabled(true)\n .build());\n\n final var oauth = KmsFunctions.getCipherText(GetCipherTextArgs.builder()\n .keyId(oauthConfig.keyId())\n .plaintext(\"\"\"\n{\n \\\"client_id\\\": \\\"e587dbae22222f55da22\\\",\n \\\"client_secret\\\": \\\"8289575d00000ace55e1815ec13673955721b8a5\\\"\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n oauthConfig:\n type: aws:kms:Key\n name: oauth_config\n properties:\n description: oauth config\n isEnabled: true\nvariables:\n oauth:\n fn::invoke:\n function: aws:kms:getCipherText\n arguments:\n keyId: ${oauthConfig.keyId}\n plaintext: |\n {\n \\\"client_id\\\": \\\"e587dbae22222f55da22\\\",\n \\\"client_secret\\\": \\\"8289575d00000ace55e1815ec13673955721b8a5\\\"\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getCipherText.\n", "properties": { @@ -462587,7 +462587,7 @@ } }, "aws:lambda/getCodeSigningConfig:getCodeSigningConfig": { - "description": "Provides details about an AWS Lambda Code Signing Config. Use this data source to retrieve information about an existing code signing configuration for Lambda functions to ensure code integrity and authenticity.\n\nFor information about Lambda code signing configurations and how to use them, see [configuring code signing for Lambda functions](https://docs.aws.amazon.com/lambda/latest/dg/configuration-codesigning.html).\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = aws.lambda.getCodeSigningConfig({\n arn: \"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-0f6c334abcdea4d8b\",\n});\nexport const configDetails = {\n configId: example.then(example =\u003e example.configId),\n description: example.then(example =\u003e example.description),\n policy: example.then(example =\u003e example.policies?.[0]?.untrustedArtifactOnDeployment),\n};\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.lambda.get_code_signing_config(arn=\"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-0f6c334abcdea4d8b\")\npulumi.export(\"configDetails\", {\n \"configId\": example.config_id,\n \"description\": example.description,\n \"policy\": example.policies[0].untrusted_artifact_on_deployment,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.Lambda.GetCodeSigningConfig.Invoke(new()\n {\n Arn = \"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-0f6c334abcdea4d8b\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"configDetails\"] = \n {\n { \"configId\", example.Apply(getCodeSigningConfigResult =\u003e getCodeSigningConfigResult.ConfigId) },\n { \"description\", example.Apply(getCodeSigningConfigResult =\u003e getCodeSigningConfigResult.Description) },\n { \"policy\", example.Apply(getCodeSigningConfigResult =\u003e getCodeSigningConfigResult.Policies[0]?.UntrustedArtifactOnDeployment) },\n },\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := lambda.LookupCodeSigningConfig(ctx, \u0026lambda.LookupCodeSigningConfigArgs{\n\t\t\tArn: \"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-0f6c334abcdea4d8b\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"configDetails\", pulumi.StringMap{\n\t\t\t\"configId\": example.ConfigId,\n\t\t\t\"description\": example.Description,\n\t\t\t\"policy\": example.Policies[0].UntrustedArtifactOnDeployment,\n\t\t})\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lambda.LambdaFunctions;\nimport com.pulumi.aws.lambda.inputs.GetCodeSigningConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = LambdaFunctions.getCodeSigningConfig(GetCodeSigningConfigArgs.builder()\n .arn(\"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-0f6c334abcdea4d8b\")\n .build());\n\n ctx.export(\"configDetails\", Map.ofEntries(\n Map.entry(\"configId\", example.configId()),\n Map.entry(\"description\", example.description()),\n Map.entry(\"policy\", example.policies()[0].untrustedArtifactOnDeployment())\n ));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n function: aws:lambda:getCodeSigningConfig\n arguments:\n arn: arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-0f6c334abcdea4d8b\noutputs:\n configDetails:\n configId: ${example.configId}\n description: ${example.description}\n policy: ${example.policies[0].untrustedArtifactOnDeployment}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Use in Lambda Function\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// Get existing code signing configuration\nconst securityConfig = aws.lambda.getCodeSigningConfig({\n arn: codeSigningConfigArn,\n});\n// Create Lambda function with code signing\nconst example = new aws.lambda.Function(\"example\", {\n code: new pulumi.asset.FileArchive(\"function.zip\"),\n name: \"secure-function\",\n role: lambdaRole.arn,\n handler: \"index.handler\",\n runtime: aws.lambda.Runtime.NodeJS20dX,\n codeSigningConfigArn: securityConfig.then(securityConfig =\u003e securityConfig.arn),\n tags: {\n Environment: \"production\",\n Security: \"code-signed\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\n# Get existing code signing configuration\nsecurity_config = aws.lambda.get_code_signing_config(arn=code_signing_config_arn)\n# Create Lambda function with code signing\nexample = aws.lambda_.Function(\"example\",\n code=pulumi.FileArchive(\"function.zip\"),\n name=\"secure-function\",\n role=lambda_role[\"arn\"],\n handler=\"index.handler\",\n runtime=aws.lambda_.Runtime.NODE_JS20D_X,\n code_signing_config_arn=security_config.arn,\n tags={\n \"Environment\": \"production\",\n \"Security\": \"code-signed\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Get existing code signing configuration\n var securityConfig = Aws.Lambda.GetCodeSigningConfig.Invoke(new()\n {\n Arn = codeSigningConfigArn,\n });\n\n // Create Lambda function with code signing\n var example = new Aws.Lambda.Function(\"example\", new()\n {\n Code = new FileArchive(\"function.zip\"),\n Name = \"secure-function\",\n Role = lambdaRole.Arn,\n Handler = \"index.handler\",\n Runtime = Aws.Lambda.Runtime.NodeJS20dX,\n CodeSigningConfigArn = securityConfig.Apply(getCodeSigningConfigResult =\u003e getCodeSigningConfigResult.Arn),\n Tags = \n {\n { \"Environment\", \"production\" },\n { \"Security\", \"code-signed\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Get existing code signing configuration\n\t\tsecurityConfig, err := lambda.LookupCodeSigningConfig(ctx, \u0026lambda.LookupCodeSigningConfigArgs{\n\t\t\tArn: codeSigningConfigArn,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create Lambda function with code signing\n\t\t_, err = lambda.NewFunction(ctx, \"example\", \u0026lambda.FunctionArgs{\n\t\t\tCode: pulumi.NewFileArchive(\"function.zip\"),\n\t\t\tName: pulumi.String(\"secure-function\"),\n\t\t\tRole: pulumi.Any(lambdaRole.Arn),\n\t\t\tHandler: pulumi.String(\"index.handler\"),\n\t\t\tRuntime: pulumi.String(lambda.RuntimeNodeJS20dX),\n\t\t\tCodeSigningConfigArn: pulumi.String(securityConfig.Arn),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Environment\": pulumi.String(\"production\"),\n\t\t\t\t\"Security\": pulumi.String(\"code-signed\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lambda.LambdaFunctions;\nimport com.pulumi.aws.lambda.inputs.GetCodeSigningConfigArgs;\nimport com.pulumi.aws.lambda.Function;\nimport com.pulumi.aws.lambda.FunctionArgs;\nimport com.pulumi.asset.FileArchive;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Get existing code signing configuration\n final var securityConfig = LambdaFunctions.getCodeSigningConfig(GetCodeSigningConfigArgs.builder()\n .arn(codeSigningConfigArn)\n .build());\n\n // Create Lambda function with code signing\n var example = new Function(\"example\", FunctionArgs.builder()\n .code(new FileArchive(\"function.zip\"))\n .name(\"secure-function\")\n .role(lambdaRole.arn())\n .handler(\"index.handler\")\n .runtime(\"nodejs20.x\")\n .codeSigningConfigArn(securityConfig.arn())\n .tags(Map.ofEntries(\n Map.entry(\"Environment\", \"production\"),\n Map.entry(\"Security\", \"code-signed\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create Lambda function with code signing\n example:\n type: aws:lambda:Function\n properties:\n code:\n fn::FileArchive: function.zip\n name: secure-function\n role: ${lambdaRole.arn}\n handler: index.handler\n runtime: nodejs20.x\n codeSigningConfigArn: ${securityConfig.arn}\n tags:\n Environment: production\n Security: code-signed\nvariables:\n # Get existing code signing configuration\n securityConfig:\n fn::invoke:\n function: aws:lambda:getCodeSigningConfig\n arguments:\n arn: ${codeSigningConfigArn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Multi-Environment Configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// Production code signing config\nconst prod = aws.lambda.getCodeSigningConfig({\n arn: \"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-prod-123\",\n});\n// Development code signing config\nconst dev = aws.lambda.getCodeSigningConfig({\n arn: \"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-dev-456\",\n});\nconst prodPolicy = prod.then(prod =\u003e prod.policies?.[0]?.untrustedArtifactOnDeployment);\nconst devPolicy = dev.then(dev =\u003e dev.policies?.[0]?.untrustedArtifactOnDeployment);\nconst configComparison = {\n prodEnforcement: prodPolicy,\n devEnforcement: devPolicy,\n policiesMatch: Promise.all([prodPolicy, devPolicy]).then(([prodPolicy, devPolicy]) =\u003e prodPolicy == devPolicy),\n};\nexport const environmentComparison = configComparison;\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\n# Production code signing config\nprod = aws.lambda.get_code_signing_config(arn=\"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-prod-123\")\n# Development code signing config\ndev = aws.lambda.get_code_signing_config(arn=\"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-dev-456\")\nprod_policy = prod.policies[0].untrusted_artifact_on_deployment\ndev_policy = dev.policies[0].untrusted_artifact_on_deployment\nconfig_comparison = {\n \"prodEnforcement\": prod_policy,\n \"devEnforcement\": dev_policy,\n \"policiesMatch\": prod_policy == dev_policy,\n}\npulumi.export(\"environmentComparison\", config_comparison)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Production code signing config\n var prod = Aws.Lambda.GetCodeSigningConfig.Invoke(new()\n {\n Arn = \"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-prod-123\",\n });\n\n // Development code signing config\n var dev = Aws.Lambda.GetCodeSigningConfig.Invoke(new()\n {\n Arn = \"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-dev-456\",\n });\n\n var prodPolicy = prod.Apply(getCodeSigningConfigResult =\u003e getCodeSigningConfigResult.Policies[0]?.UntrustedArtifactOnDeployment);\n\n var devPolicy = dev.Apply(getCodeSigningConfigResult =\u003e getCodeSigningConfigResult.Policies[0]?.UntrustedArtifactOnDeployment);\n\n var configComparison = \n {\n { \"prodEnforcement\", prodPolicy },\n { \"devEnforcement\", devPolicy },\n { \"policiesMatch\", Output.Tuple(prodPolicy, devPolicy).Apply(values =\u003e\n {\n var prodPolicy = values.Item1;\n var devPolicy = values.Item2;\n return prodPolicy == devPolicy;\n }) },\n };\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"environmentComparison\"] = configComparison,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Production code signing config\n\t\tprod, err := lambda.LookupCodeSigningConfig(ctx, \u0026lambda.LookupCodeSigningConfigArgs{\n\t\t\tArn: \"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-prod-123\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Development code signing config\n\t\tdev, err := lambda.LookupCodeSigningConfig(ctx, \u0026lambda.LookupCodeSigningConfigArgs{\n\t\t\tArn: \"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-dev-456\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodPolicy := prod.Policies[0].UntrustedArtifactOnDeployment\n\t\tdevPolicy := dev.Policies[0].UntrustedArtifactOnDeployment\n\t\tconfigComparison := map[string]interface{}{\n\t\t\t\"prodEnforcement\": prodPolicy,\n\t\t\t\"devEnforcement\": devPolicy,\n\t\t\t\"policiesMatch\": prodPolicy == devPolicy,\n\t\t}\n\t\tctx.Export(\"environmentComparison\", configComparison)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lambda.LambdaFunctions;\nimport com.pulumi.aws.lambda.inputs.GetCodeSigningConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Production code signing config\n final var prod = LambdaFunctions.getCodeSigningConfig(GetCodeSigningConfigArgs.builder()\n .arn(\"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-prod-123\")\n .build());\n\n // Development code signing config\n final var dev = LambdaFunctions.getCodeSigningConfig(GetCodeSigningConfigArgs.builder()\n .arn(\"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-dev-456\")\n .build());\n\n final var prodPolicy = prod.policies()[0].untrustedArtifactOnDeployment();\n\n final var devPolicy = dev.policies()[0].untrustedArtifactOnDeployment();\n\n final var configComparison = Map.ofEntries(\n Map.entry(\"prodEnforcement\", prodPolicy),\n Map.entry(\"devEnforcement\", devPolicy),\n Map.entry(\"policiesMatch\", prodPolicy == devPolicy)\n );\n\n ctx.export(\"environmentComparison\", configComparison);\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Provides details about an AWS Lambda Code Signing Config. Use this data source to retrieve information about an existing code signing configuration for Lambda functions to ensure code integrity and authenticity.\n\nFor information about Lambda code signing configurations and how to use them, see [configuring code signing for Lambda functions](https://docs.aws.amazon.com/lambda/latest/dg/configuration-codesigning.html).\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = aws.lambda.getCodeSigningConfig({\n arn: \"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-0f6c334abcdea4d8b\",\n});\nexport const configDetails = {\n configId: example.then(example =\u003e example.configId),\n description: example.then(example =\u003e example.description),\n policy: example.then(example =\u003e example.policies?.[0]?.untrustedArtifactOnDeployment),\n};\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.lambda.get_code_signing_config(arn=\"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-0f6c334abcdea4d8b\")\npulumi.export(\"configDetails\", {\n \"configId\": example.config_id,\n \"description\": example.description,\n \"policy\": example.policies[0].untrusted_artifact_on_deployment,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.Lambda.GetCodeSigningConfig.Invoke(new()\n {\n Arn = \"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-0f6c334abcdea4d8b\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"configDetails\"] = \n {\n { \"configId\", example.Apply(getCodeSigningConfigResult =\u003e getCodeSigningConfigResult.ConfigId) },\n { \"description\", example.Apply(getCodeSigningConfigResult =\u003e getCodeSigningConfigResult.Description) },\n { \"policy\", example.Apply(getCodeSigningConfigResult =\u003e getCodeSigningConfigResult.Policies[0]?.UntrustedArtifactOnDeployment) },\n },\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := lambda.LookupCodeSigningConfig(ctx, \u0026lambda.LookupCodeSigningConfigArgs{\n\t\t\tArn: \"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-0f6c334abcdea4d8b\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"configDetails\", pulumi.StringMap{\n\t\t\t\"configId\": example.ConfigId,\n\t\t\t\"description\": example.Description,\n\t\t\t\"policy\": example.Policies[0].UntrustedArtifactOnDeployment,\n\t\t})\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lambda.LambdaFunctions;\nimport com.pulumi.aws.lambda.inputs.GetCodeSigningConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = LambdaFunctions.getCodeSigningConfig(GetCodeSigningConfigArgs.builder()\n .arn(\"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-0f6c334abcdea4d8b\")\n .build());\n\n ctx.export(\"configDetails\", Map.ofEntries(\n Map.entry(\"configId\", example.configId()),\n Map.entry(\"description\", example.description()),\n Map.entry(\"policy\", example.policies()[0].untrustedArtifactOnDeployment())\n ));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n function: aws:lambda:getCodeSigningConfig\n arguments:\n arn: arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-0f6c334abcdea4d8b\noutputs:\n configDetails:\n configId: ${example.configId}\n description: ${example.description}\n policy: ${example.policies[0].untrustedArtifactOnDeployment}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Use in Lambda Function\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// Get existing code signing configuration\nconst securityConfig = aws.lambda.getCodeSigningConfig({\n arn: codeSigningConfigArn,\n});\n// Create Lambda function with code signing\nconst example = new aws.lambda.Function(\"example\", {\n code: new pulumi.asset.FileArchive(\"function.zip\"),\n name: \"secure-function\",\n role: lambdaRole.arn,\n handler: \"index.handler\",\n runtime: aws.lambda.Runtime.NodeJS20dX,\n codeSigningConfigArn: securityConfig.then(securityConfig =\u003e securityConfig.arn),\n tags: {\n Environment: \"production\",\n Security: \"code-signed\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\n# Get existing code signing configuration\nsecurity_config = aws.lambda.get_code_signing_config(arn=code_signing_config_arn)\n# Create Lambda function with code signing\nexample = aws.lambda_.Function(\"example\",\n code=pulumi.FileArchive(\"function.zip\"),\n name=\"secure-function\",\n role=lambda_role[\"arn\"],\n handler=\"index.handler\",\n runtime=aws.lambda_.Runtime.NODE_JS20D_X,\n code_signing_config_arn=security_config.arn,\n tags={\n \"Environment\": \"production\",\n \"Security\": \"code-signed\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Get existing code signing configuration\n var securityConfig = Aws.Lambda.GetCodeSigningConfig.Invoke(new()\n {\n Arn = codeSigningConfigArn,\n });\n\n // Create Lambda function with code signing\n var example = new Aws.Lambda.Function(\"example\", new()\n {\n Code = new FileArchive(\"function.zip\"),\n Name = \"secure-function\",\n Role = lambdaRole.Arn,\n Handler = \"index.handler\",\n Runtime = Aws.Lambda.Runtime.NodeJS20dX,\n CodeSigningConfigArn = securityConfig.Apply(getCodeSigningConfigResult =\u003e getCodeSigningConfigResult.Arn),\n Tags = \n {\n { \"Environment\", \"production\" },\n { \"Security\", \"code-signed\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Get existing code signing configuration\n\t\tsecurityConfig, err := lambda.LookupCodeSigningConfig(ctx, \u0026lambda.LookupCodeSigningConfigArgs{\n\t\t\tArn: codeSigningConfigArn,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create Lambda function with code signing\n\t\t_, err = lambda.NewFunction(ctx, \"example\", \u0026lambda.FunctionArgs{\n\t\t\tCode: pulumi.NewFileArchive(\"function.zip\"),\n\t\t\tName: pulumi.String(\"secure-function\"),\n\t\t\tRole: pulumi.Any(lambdaRole.Arn),\n\t\t\tHandler: pulumi.String(\"index.handler\"),\n\t\t\tRuntime: pulumi.String(lambda.RuntimeNodeJS20dX),\n\t\t\tCodeSigningConfigArn: pulumi.String(securityConfig.Arn),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Environment\": pulumi.String(\"production\"),\n\t\t\t\t\"Security\": pulumi.String(\"code-signed\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lambda.LambdaFunctions;\nimport com.pulumi.aws.lambda.inputs.GetCodeSigningConfigArgs;\nimport com.pulumi.aws.lambda.Function;\nimport com.pulumi.aws.lambda.FunctionArgs;\nimport com.pulumi.asset.FileArchive;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Get existing code signing configuration\n final var securityConfig = LambdaFunctions.getCodeSigningConfig(GetCodeSigningConfigArgs.builder()\n .arn(codeSigningConfigArn)\n .build());\n\n // Create Lambda function with code signing\n var example = new Function(\"example\", FunctionArgs.builder()\n .code(new FileArchive(\"function.zip\"))\n .name(\"secure-function\")\n .role(lambdaRole.arn())\n .handler(\"index.handler\")\n .runtime(\"nodejs20.x\")\n .codeSigningConfigArn(securityConfig.arn())\n .tags(Map.ofEntries(\n Map.entry(\"Environment\", \"production\"),\n Map.entry(\"Security\", \"code-signed\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create Lambda function with code signing\n example:\n type: aws:lambda:Function\n properties:\n code:\n fn::FileArchive: function.zip\n name: secure-function\n role: ${lambdaRole.arn}\n handler: index.handler\n runtime: nodejs20.x\n codeSigningConfigArn: ${securityConfig.arn}\n tags:\n Environment: production\n Security: code-signed\nvariables:\n # Get existing code signing configuration\n securityConfig:\n fn::invoke:\n function: aws:lambda:getCodeSigningConfig\n arguments:\n arn: ${codeSigningConfigArn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Validate Signing Profiles\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nexport = async () =\u003e {\n const example = await aws.lambda.getCodeSigningConfig({\n arn: codeSigningConfigArn,\n });\n const allowedProfiles = example.allowedPublishers?.[0]?.signingProfileVersionArns;\n const requiredProfile = \"arn:aws:signer:us-west-2:123456789012:/signing-profiles/MyProfile\";\n const profileAllowed = (await std.contains({\n input: allowedProfiles,\n element: requiredProfile,\n })).result;\n // Conditional resource creation based on signing profile validation\n const conditional: aws.lambda.Function[] = [];\n for (const range = {value: 0}; range.value \u003c (profileAllowed ? 1 : 0); range.value++) {\n conditional.push(new aws.lambda.Function(`conditional-${range.value}`, {\n code: new pulumi.asset.FileArchive(\"function.zip\"),\n name: \"conditional-function\",\n role: lambdaRole.arn,\n handler: \"index.handler\",\n runtime: aws.lambda.Runtime.Python3d12,\n codeSigningConfigArn: example.arn,\n }));\n }\n return {\n deploymentStatus: {\n profileAllowed: profileAllowed,\n functionCreated: profileAllowed,\n message: profileAllowed ? \"Function deployed with valid signing profile\" : \"Deployment blocked - signing profile not allowed\",\n },\n };\n}\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.lambda.get_code_signing_config(arn=code_signing_config_arn)\nallowed_profiles = example.allowed_publishers[0].signing_profile_version_arns\nrequired_profile = \"arn:aws:signer:us-west-2:123456789012:/signing-profiles/MyProfile\"\nprofile_allowed = std.contains(input=allowed_profiles,\n element=required_profile).result\n# Conditional resource creation based on signing profile validation\nconditional = []\nfor range in [{\"value\": i} for i in range(0, 1 if profile_allowed else 0)]:\n conditional.append(aws.lambda_.Function(f\"conditional-{range['value']}\",\n code=pulumi.FileArchive(\"function.zip\"),\n name=\"conditional-function\",\n role=lambda_role[\"arn\"],\n handler=\"index.handler\",\n runtime=aws.lambda_.Runtime.PYTHON3D12,\n code_signing_config_arn=example.arn))\npulumi.export(\"deploymentStatus\", {\n \"profileAllowed\": profile_allowed,\n \"functionCreated\": profile_allowed,\n \"message\": \"Function deployed with valid signing profile\" if profile_allowed else \"Deployment blocked - signing profile not allowed\",\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(async() =\u003e \n{\n var example = await Aws.Lambda.GetCodeSigningConfig.InvokeAsync(new()\n {\n Arn = codeSigningConfigArn,\n });\n\n var allowedProfiles = example.AllowedPublishers[0]?.SigningProfileVersionArns;\n\n var requiredProfile = \"arn:aws:signer:us-west-2:123456789012:/signing-profiles/MyProfile\";\n\n var profileAllowed = (await Std.Contains.InvokeAsync(new()\n {\n Input = allowedProfiles,\n Element = requiredProfile,\n })).Result;\n\n // Conditional resource creation based on signing profile validation\n var conditional = new List\u003cAws.Lambda.Function\u003e();\n for (var rangeIndex = 0; rangeIndex \u003c profileAllowed ? 1 : 0; rangeIndex++)\n {\n var range = new { Value = rangeIndex };\n conditional.Add(new Aws.Lambda.Function($\"conditional-{range.Value}\", new()\n {\n Code = new FileArchive(\"function.zip\"),\n Name = \"conditional-function\",\n Role = lambdaRole.Arn,\n Handler = \"index.handler\",\n Runtime = Aws.Lambda.Runtime.Python3d12,\n CodeSigningConfigArn = example.Arn,\n }));\n }\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"deploymentStatus\"] = \n {\n { \"profileAllowed\", profileAllowed },\n { \"functionCreated\", profileAllowed },\n { \"message\", profileAllowed ? \"Function deployed with valid signing profile\" : \"Deployment blocked - signing profile not allowed\" },\n },\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := lambda.LookupCodeSigningConfig(ctx, \u0026lambda.LookupCodeSigningConfigArgs{\n\t\t\tArn: codeSigningConfigArn,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tallowedProfiles := example.AllowedPublishers[0].SigningProfileVersionArns\n\t\trequiredProfile := \"arn:aws:signer:us-west-2:123456789012:/signing-profiles/MyProfile\"\n\t\tprofileAllowed := std.Contains(ctx, \u0026std.ContainsArgs{\n\t\t\tInput: allowedProfiles,\n\t\t\tElement: requiredProfile,\n\t\t}, nil).Result\n\t\t// Conditional resource creation based on signing profile validation\n\t\tvar tmp0 float64\n\t\tif profileAllowed {\n\t\t\ttmp0 = 1\n\t\t} else {\n\t\t\ttmp0 = 0\n\t\t}\n\t\tvar conditional []*lambda.Function\n\t\tfor index := 0; index \u003c tmp0; index++ {\n\t\t\tkey0 := index\n\t\t\t_ := index\n\t\t\t__res, err := lambda.NewFunction(ctx, fmt.Sprintf(\"conditional-%v\", key0), \u0026lambda.FunctionArgs{\n\t\t\t\tCode: pulumi.NewFileArchive(\"function.zip\"),\n\t\t\t\tName: pulumi.String(\"conditional-function\"),\n\t\t\t\tRole: pulumi.Any(lambdaRole.Arn),\n\t\t\t\tHandler: pulumi.String(\"index.handler\"),\n\t\t\t\tRuntime: pulumi.String(lambda.RuntimePython3d12),\n\t\t\t\tCodeSigningConfigArn: pulumi.String(example.Arn),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tconditional = append(conditional, __res)\n\t\t}\n\t\tvar tmp1 string\n\t\tif profileAllowed {\n\t\t\ttmp1 = \"Function deployed with valid signing profile\"\n\t\t} else {\n\t\t\ttmp1 = \"Deployment blocked - signing profile not allowed\"\n\t\t}\n\t\tctx.Export(\"deploymentStatus\", pulumi.Map{\n\t\t\t\"profileAllowed\": profileAllowed,\n\t\t\t\"functionCreated\": profileAllowed,\n\t\t\t\"message\": tmp1,\n\t\t})\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lambda.LambdaFunctions;\nimport com.pulumi.aws.lambda.inputs.GetCodeSigningConfigArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.ContainsArgs;\nimport com.pulumi.aws.lambda.Function;\nimport com.pulumi.aws.lambda.FunctionArgs;\nimport com.pulumi.asset.FileArchive;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = LambdaFunctions.getCodeSigningConfig(GetCodeSigningConfigArgs.builder()\n .arn(codeSigningConfigArn)\n .build());\n\n final var allowedProfiles = example.allowedPublishers()[0].signingProfileVersionArns();\n\n final var requiredProfile = \"arn:aws:signer:us-west-2:123456789012:/signing-profiles/MyProfile\";\n\n final var profileAllowed = StdFunctions.contains(ContainsArgs.builder()\n .input(allowedProfiles)\n .element(requiredProfile)\n .build()).result();\n\n // Conditional resource creation based on signing profile validation\n for (var i = 0; i \u003c profileAllowed ? 1 : 0; i++) {\n new Function(\"conditional-\" + i, FunctionArgs.builder()\n .code(new FileArchive(\"function.zip\"))\n .name(\"conditional-function\")\n .role(lambdaRole.arn())\n .handler(\"index.handler\")\n .runtime(\"python3.12\")\n .codeSigningConfigArn(example.arn())\n .build());\n\n \n}\n ctx.export(\"deploymentStatus\", Map.ofEntries(\n Map.entry(\"profileAllowed\", profileAllowed),\n Map.entry(\"functionCreated\", profileAllowed),\n Map.entry(\"message\", profileAllowed ? \"Function deployed with valid signing profile\" : \"Deployment blocked - signing profile not allowed\")\n ));\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Multi-Environment Configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// Production code signing config\nconst prod = aws.lambda.getCodeSigningConfig({\n arn: \"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-prod-123\",\n});\n// Development code signing config\nconst dev = aws.lambda.getCodeSigningConfig({\n arn: \"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-dev-456\",\n});\nconst prodPolicy = prod.then(prod =\u003e prod.policies?.[0]?.untrustedArtifactOnDeployment);\nconst devPolicy = dev.then(dev =\u003e dev.policies?.[0]?.untrustedArtifactOnDeployment);\nconst configComparison = {\n prodEnforcement: prodPolicy,\n devEnforcement: devPolicy,\n policiesMatch: Promise.all([prodPolicy, devPolicy]).then(([prodPolicy, devPolicy]) =\u003e prodPolicy == devPolicy),\n};\nexport const environmentComparison = configComparison;\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\n# Production code signing config\nprod = aws.lambda.get_code_signing_config(arn=\"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-prod-123\")\n# Development code signing config\ndev = aws.lambda.get_code_signing_config(arn=\"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-dev-456\")\nprod_policy = prod.policies[0].untrusted_artifact_on_deployment\ndev_policy = dev.policies[0].untrusted_artifact_on_deployment\nconfig_comparison = {\n \"prodEnforcement\": prod_policy,\n \"devEnforcement\": dev_policy,\n \"policiesMatch\": prod_policy == dev_policy,\n}\npulumi.export(\"environmentComparison\", config_comparison)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Production code signing config\n var prod = Aws.Lambda.GetCodeSigningConfig.Invoke(new()\n {\n Arn = \"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-prod-123\",\n });\n\n // Development code signing config\n var dev = Aws.Lambda.GetCodeSigningConfig.Invoke(new()\n {\n Arn = \"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-dev-456\",\n });\n\n var prodPolicy = prod.Apply(getCodeSigningConfigResult =\u003e getCodeSigningConfigResult.Policies[0]?.UntrustedArtifactOnDeployment);\n\n var devPolicy = dev.Apply(getCodeSigningConfigResult =\u003e getCodeSigningConfigResult.Policies[0]?.UntrustedArtifactOnDeployment);\n\n var configComparison = \n {\n { \"prodEnforcement\", prodPolicy },\n { \"devEnforcement\", devPolicy },\n { \"policiesMatch\", Output.Tuple(prodPolicy, devPolicy).Apply(values =\u003e\n {\n var prodPolicy = values.Item1;\n var devPolicy = values.Item2;\n return prodPolicy == devPolicy;\n }) },\n };\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"environmentComparison\"] = configComparison,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Production code signing config\n\t\tprod, err := lambda.LookupCodeSigningConfig(ctx, \u0026lambda.LookupCodeSigningConfigArgs{\n\t\t\tArn: \"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-prod-123\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Development code signing config\n\t\tdev, err := lambda.LookupCodeSigningConfig(ctx, \u0026lambda.LookupCodeSigningConfigArgs{\n\t\t\tArn: \"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-dev-456\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodPolicy := prod.Policies[0].UntrustedArtifactOnDeployment\n\t\tdevPolicy := dev.Policies[0].UntrustedArtifactOnDeployment\n\t\tconfigComparison := map[string]interface{}{\n\t\t\t\"prodEnforcement\": prodPolicy,\n\t\t\t\"devEnforcement\": devPolicy,\n\t\t\t\"policiesMatch\": prodPolicy == devPolicy,\n\t\t}\n\t\tctx.Export(\"environmentComparison\", configComparison)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lambda.LambdaFunctions;\nimport com.pulumi.aws.lambda.inputs.GetCodeSigningConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Production code signing config\n final var prod = LambdaFunctions.getCodeSigningConfig(GetCodeSigningConfigArgs.builder()\n .arn(\"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-prod-123\")\n .build());\n\n // Development code signing config\n final var dev = LambdaFunctions.getCodeSigningConfig(GetCodeSigningConfigArgs.builder()\n .arn(\"arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-dev-456\")\n .build());\n\n final var prodPolicy = prod.policies()[0].untrustedArtifactOnDeployment();\n\n final var devPolicy = dev.policies()[0].untrustedArtifactOnDeployment();\n\n final var configComparison = Map.ofEntries(\n Map.entry(\"prodEnforcement\", prodPolicy),\n Map.entry(\"devEnforcement\", devPolicy),\n Map.entry(\"policiesMatch\", prodPolicy == devPolicy)\n );\n\n ctx.export(\"environmentComparison\", configComparison);\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getCodeSigningConfig.\n", "properties": { @@ -463030,7 +463030,7 @@ } }, "aws:lambda/getInvocation:getInvocation": { - "description": "Invokes an AWS Lambda Function and returns its results. Use this data source to execute Lambda functions during Pulumi operations and use their results in other resources or outputs.\n\nThe Lambda function is invoked with [RequestResponse](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_RequestSyntax) invocation type.\n\n\u003e **Note:** The \u003cspan pulumi-lang-nodejs=\"`aws.lambda.Invocation`\" pulumi-lang-dotnet=\"`aws.lambda.Invocation`\" pulumi-lang-go=\"`lambda.Invocation`\" pulumi-lang-python=\"`lambda.Invocation`\" pulumi-lang-yaml=\"`aws.lambda.Invocation`\" pulumi-lang-java=\"`aws.lambda.Invocation`\"\u003e`aws.lambda.Invocation`\u003c/span\u003e data source invokes the function during the first \u003cspan pulumi-lang-nodejs=\"`apply`\" pulumi-lang-dotnet=\"`Apply`\" pulumi-lang-go=\"`apply`\" pulumi-lang-python=\"`apply`\" pulumi-lang-yaml=\"`apply`\" pulumi-lang-java=\"`apply`\"\u003e`apply`\u003c/span\u003e and every subsequent \u003cspan pulumi-lang-nodejs=\"`plan`\" pulumi-lang-dotnet=\"`Plan`\" pulumi-lang-go=\"`plan`\" pulumi-lang-python=\"`plan`\" pulumi-lang-yaml=\"`plan`\" pulumi-lang-java=\"`plan`\"\u003e`plan`\u003c/span\u003e when the function is known.\n\n\u003e **Note:** If you get a `KMSAccessDeniedException: Lambda was unable to decrypt the environment variables because KMS access was denied` error when invoking a Lambda function with environment variables, the IAM role associated with the function may have been deleted and recreated after the function was created. You can fix the problem two ways: 1) updating the function's role to another role and then updating it back again to the recreated role. (When you create a function, Lambda grants permissions on the KMS key to the function's IAM role. If the IAM role is recreated, the grant is no longer valid. Changing the function's role or recreating the function causes Lambda to update the grant.)\n\n## Example Usage\n\n", + "description": "Invokes an AWS Lambda Function and returns its results. Use this data source to execute Lambda functions during Pulumi operations and use their results in other resources or outputs.\n\nThe Lambda function is invoked with [RequestResponse](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_RequestSyntax) invocation type.\n\n\u003e **Note:** The \u003cspan pulumi-lang-nodejs=\"`aws.lambda.Invocation`\" pulumi-lang-dotnet=\"`aws.lambda.Invocation`\" pulumi-lang-go=\"`lambda.Invocation`\" pulumi-lang-python=\"`lambda.Invocation`\" pulumi-lang-yaml=\"`aws.lambda.Invocation`\" pulumi-lang-java=\"`aws.lambda.Invocation`\"\u003e`aws.lambda.Invocation`\u003c/span\u003e data source invokes the function during the first \u003cspan pulumi-lang-nodejs=\"`apply`\" pulumi-lang-dotnet=\"`Apply`\" pulumi-lang-go=\"`apply`\" pulumi-lang-python=\"`apply`\" pulumi-lang-yaml=\"`apply`\" pulumi-lang-java=\"`apply`\"\u003e`apply`\u003c/span\u003e and every subsequent \u003cspan pulumi-lang-nodejs=\"`plan`\" pulumi-lang-dotnet=\"`Plan`\" pulumi-lang-go=\"`plan`\" pulumi-lang-python=\"`plan`\" pulumi-lang-yaml=\"`plan`\" pulumi-lang-java=\"`plan`\"\u003e`plan`\u003c/span\u003e when the function is known.\n\n\u003e **Note:** If you get a `KMSAccessDeniedException: Lambda was unable to decrypt the environment variables because KMS access was denied` error when invoking a Lambda function with environment variables, the IAM role associated with the function may have been deleted and recreated after the function was created. You can fix the problem two ways: 1) updating the function's role to another role and then updating it back again to the recreated role. (When you create a function, Lambda grants permissions on the KMS key to the function's IAM role. If the IAM role is recreated, the grant is no longer valid. Changing the function's role or recreating the function causes Lambda to update the grant.)\n\n## Example Usage\n\n### Basic Invocation\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = aws.lambda.getInvocation({\n functionName: exampleAwsLambdaFunction.functionName,\n input: JSON.stringify({\n operation: \"getStatus\",\n id: \"123456\",\n }),\n});\nexport const result = example.then(example =\u003e std.jsondecode({\n input: example.result,\n})).then(invoke =\u003e invoke.result);\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.lambda.get_invocation(function_name=example_aws_lambda_function[\"functionName\"],\n input=json.dumps({\n \"operation\": \"getStatus\",\n \"id\": \"123456\",\n }))\npulumi.export(\"result\", std.jsondecode(input=example.result).result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.Lambda.GetInvocation.Invoke(new()\n {\n FunctionName = exampleAwsLambdaFunction.FunctionName,\n Input = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"operation\"] = \"getStatus\",\n [\"id\"] = \"123456\",\n }),\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"result\"] = Std.Jsondecode.Invoke(new()\n {\n Input = example.Apply(getInvocationResult =\u003e getInvocationResult.Result),\n }).Apply(invoke =\u003e invoke.Result),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"operation\": \"getStatus\",\n\t\t\t\"id\": \"123456\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\texample, err := lambda.LookupInvocation(ctx, \u0026lambda.LookupInvocationArgs{\n\t\t\tFunctionName: exampleAwsLambdaFunction.FunctionName,\n\t\t\tInput: json0,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"result\", pulumi.Any(std.Jsondecode(ctx, \u0026std.JsondecodeArgs{\n\t\t\tInput: example.Result,\n\t\t}, nil).Result))\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lambda.LambdaFunctions;\nimport com.pulumi.aws.lambda.inputs.GetInvocationArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.JsondecodeArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = LambdaFunctions.getInvocation(GetInvocationArgs.builder()\n .functionName(exampleAwsLambdaFunction.functionName())\n .input(serializeJson(\n jsonObject(\n jsonProperty(\"operation\", \"getStatus\"),\n jsonProperty(\"id\", \"123456\")\n )))\n .build());\n\n ctx.export(\"result\", StdFunctions.jsondecode(JsondecodeArgs.builder()\n .input(example.result())\n .build()).result());\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n function: aws:lambda:getInvocation\n arguments:\n functionName: ${exampleAwsLambdaFunction.functionName}\n input:\n fn::toJSON:\n operation: getStatus\n id: '123456'\noutputs:\n result:\n fn::invoke:\n function: std:jsondecode\n arguments:\n input: ${example.result}\n return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Dynamic Resource Configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\n// Get resource configuration from Lambda\nconst resourceConfig = aws.lambda.getInvocation({\n functionName: \"resource-config-generator\",\n qualifier: \"production\",\n input: JSON.stringify({\n environment: environment,\n region: current.region,\n service: \"api\",\n }),\n});\nconst config = resourceConfig.then(resourceConfig =\u003e std.jsondecode({\n input: resourceConfig.result,\n})).then(invoke =\u003e invoke.result);\n// Use dynamic configuration\nconst example = new aws.elasticache.Cluster(\"example\", {\n clusterId: config?.cache?.clusterId,\n engine: config?.cache?.engine,\n nodeType: config?.cache?.nodeType,\n numCacheNodes: config?.cache?.nodes,\n parameterGroupName: config?.cache?.parameterGroup,\n tags: config?.tags,\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\nimport pulumi_std as std\n\n# Get resource configuration from Lambda\nresource_config = aws.lambda.get_invocation(function_name=\"resource-config-generator\",\n qualifier=\"production\",\n input=json.dumps({\n \"environment\": environment,\n \"region\": current[\"region\"],\n \"service\": \"api\",\n }))\nconfig = std.jsondecode(input=resource_config.result).result\n# Use dynamic configuration\nexample = aws.elasticache.Cluster(\"example\",\n cluster_id=config[\"cache\"][\"clusterId\"],\n engine=config[\"cache\"][\"engine\"],\n node_type=config[\"cache\"][\"nodeType\"],\n num_cache_nodes=config[\"cache\"][\"nodes\"],\n parameter_group_name=config[\"cache\"][\"parameterGroup\"],\n tags=config[\"tags\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Get resource configuration from Lambda\n var resourceConfig = Aws.Lambda.GetInvocation.Invoke(new()\n {\n FunctionName = \"resource-config-generator\",\n Qualifier = \"production\",\n Input = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"environment\"] = environment,\n [\"region\"] = current.Region,\n [\"service\"] = \"api\",\n }),\n });\n\n var config = Std.Jsondecode.Invoke(new()\n {\n Input = resourceConfig.Apply(getInvocationResult =\u003e getInvocationResult.Result),\n }).Apply(invoke =\u003e invoke.Result);\n\n // Use dynamic configuration\n var example = new Aws.ElastiCache.Cluster(\"example\", new()\n {\n ClusterId = config?.Cache?.ClusterId,\n Engine = config?.Cache?.Engine,\n NodeType = config?.Cache?.NodeType,\n NumCacheNodes = config?.Cache?.Nodes,\n ParameterGroupName = config?.Cache?.ParameterGroup,\n Tags = config?.Tags,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"environment\": environment,\n\t\t\t\"region\": current.Region,\n\t\t\t\"service\": \"api\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t// Get resource configuration from Lambda\n\t\tresourceConfig, err := lambda.LookupInvocation(ctx, \u0026lambda.LookupInvocationArgs{\n\t\t\tFunctionName: \"resource-config-generator\",\n\t\t\tQualifier: pulumi.StringRef(\"production\"),\n\t\t\tInput: json0,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tconfig := std.Jsondecode(ctx, \u0026std.JsondecodeArgs{\n\t\t\tInput: resourceConfig.Result,\n\t\t}, nil).Result\n\t\t// Use dynamic configuration\n\t\t_, err = elasticache.NewCluster(ctx, \"example\", \u0026elasticache.ClusterArgs{\n\t\t\tClusterId: pulumi.Any(config.Cache.ClusterId),\n\t\t\tEngine: pulumi.Any(config.Cache.Engine),\n\t\t\tNodeType: pulumi.Any(config.Cache.NodeType),\n\t\t\tNumCacheNodes: pulumi.Any(config.Cache.Nodes),\n\t\t\tParameterGroupName: pulumi.Any(config.Cache.ParameterGroup),\n\t\t\tTags: pulumi.Any(config.Tags),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lambda.LambdaFunctions;\nimport com.pulumi.aws.lambda.inputs.GetInvocationArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.JsondecodeArgs;\nimport com.pulumi.aws.elasticache.Cluster;\nimport com.pulumi.aws.elasticache.ClusterArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Get resource configuration from Lambda\n final var resourceConfig = LambdaFunctions.getInvocation(GetInvocationArgs.builder()\n .functionName(\"resource-config-generator\")\n .qualifier(\"production\")\n .input(serializeJson(\n jsonObject(\n jsonProperty(\"environment\", environment),\n jsonProperty(\"region\", current.region()),\n jsonProperty(\"service\", \"api\")\n )))\n .build());\n\n final var config = StdFunctions.jsondecode(JsondecodeArgs.builder()\n .input(resourceConfig.result())\n .build()).result();\n\n // Use dynamic configuration\n var example = new Cluster(\"example\", ClusterArgs.builder()\n .clusterId(config.cache().clusterId())\n .engine(config.cache().engine())\n .nodeType(config.cache().nodeType())\n .numCacheNodes(config.cache().nodes())\n .parameterGroupName(config.cache().parameterGroup())\n .tags(config.tags())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Use dynamic configuration\n example:\n type: aws:elasticache:Cluster\n properties:\n clusterId: ${config.cache.clusterId}\n engine: ${config.cache.engine}\n nodeType: ${config.cache.nodeType}\n numCacheNodes: ${config.cache.nodes}\n parameterGroupName: ${config.cache.parameterGroup}\n tags: ${config.tags}\nvariables:\n # Get resource configuration from Lambda\n resourceConfig:\n fn::invoke:\n function: aws:lambda:getInvocation\n arguments:\n functionName: resource-config-generator\n qualifier: production\n input:\n fn::toJSON:\n environment: ${environment}\n region: ${current.region}\n service: api\n config:\n fn::invoke:\n function: std:jsondecode\n arguments:\n input: ${resourceConfig.result}\n return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n", "inputs": { "description": "A collection of arguments for invoking getInvocation.\n", "properties": { @@ -471256,7 +471256,7 @@ } }, "aws:organizations/getPolicies:getPolicies": { - "description": "Data source for managing an AWS Organizations Policies.\n\n## Example Usage\n\n", + "description": "Data source for managing an AWS Organizations Policies.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = aws.organizations.getPolicies({\n filter: \"SERVICE_CONTROL_POLICY\",\n});\nconst exampleGetPolicy = example.then(example =\u003e std.toset({\n input: example.ids,\n})).then(invoke =\u003e .reduce((__obj, [__key, __value]) =\u003e ({ ...__obj, [__key]: aws.organizations.getPolicy({\n policyId: __value,\n}) })));\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.organizations.get_policies(filter=\"SERVICE_CONTROL_POLICY\")\nexample_get_policy = {__key: aws.organizations.get_policy(policy_id=__value) for __key, __value in std.toset(input=example.ids).result}\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.Organizations.GetPolicies.Invoke(new()\n {\n Filter = \"SERVICE_CONTROL_POLICY\",\n });\n\n var exampleGetPolicy = Std.Toset.Invoke(new()\n {\n Input = example.Apply(getPoliciesResult =\u003e getPoliciesResult.Ids),\n }).Apply(invoke =\u003e );\n\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getPolicies.\n", "properties": { @@ -471297,7 +471297,7 @@ } }, "aws:organizations/getPoliciesForTarget:getPoliciesForTarget": { - "description": "Data source for managing an AWS Organizations Policies For Target.\n\n## Example Usage\n\n", + "description": "Data source for managing an AWS Organizations Policies For Target.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = aws.organizations.getOrganization({});\nconst exampleGetPoliciesForTarget = example.then(example =\u003e aws.organizations.getPoliciesForTarget({\n targetId: example.roots?.[0]?.id,\n filter: \"SERVICE_CONTROL_POLICY\",\n}));\nconst exampleGetPolicy = exampleGetPoliciesForTarget.then(exampleGetPoliciesForTarget =\u003e std.toset({\n input: exampleGetPoliciesForTarget.ids,\n})).then(invoke =\u003e .reduce((__obj, [__key, __value]) =\u003e ({ ...__obj, [__key]: aws.organizations.getPolicy({\n policyId: __value,\n}) })));\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.organizations.get_organization()\nexample_get_policies_for_target = aws.organizations.get_policies_for_target(target_id=example.roots[0].id,\n filter=\"SERVICE_CONTROL_POLICY\")\nexample_get_policy = {__key: aws.organizations.get_policy(policy_id=__value) for __key, __value in std.toset(input=example_get_policies_for_target.ids).result}\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.Organizations.GetOrganization.Invoke();\n\n var exampleGetPoliciesForTarget = Aws.Organizations.GetPoliciesForTarget.Invoke(new()\n {\n TargetId = example.Apply(getOrganizationResult =\u003e getOrganizationResult.Roots[0]?.Id),\n Filter = \"SERVICE_CONTROL_POLICY\",\n });\n\n var exampleGetPolicy = Std.Toset.Invoke(new()\n {\n Input = exampleGetPoliciesForTarget.Apply(getPoliciesForTargetResult =\u003e getPoliciesForTargetResult.Ids),\n }).Apply(invoke =\u003e );\n\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getPoliciesForTarget.\n", "properties": { @@ -471709,7 +471709,7 @@ } }, "aws:outposts/getOutpostInstanceType:getOutpostInstanceType": { - "description": "Information about single Outpost Instance Type.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = aws.outposts.getOutpostInstanceType({\n arn: exampleAwsOutpostsOutpost.arn,\n preferredInstanceTypes: [\n \"m5.large\",\n \"m5.4xlarge\",\n ],\n});\nconst exampleEc2Instance = new aws.index.Ec2Instance(\"example\", {instanceType: example.instanceType});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.outposts.get_outpost_instance_type(arn=example_aws_outposts_outpost[\"arn\"],\n preferred_instance_types=[\n \"m5.large\",\n \"m5.4xlarge\",\n ])\nexample_ec2_instance = aws.index.Ec2Instance(\"example\", instance_type=example.instance_type)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.Outposts.GetOutpostInstanceType.Invoke(new()\n {\n Arn = exampleAwsOutpostsOutpost.Arn,\n PreferredInstanceTypes = new[]\n {\n \"m5.large\",\n \"m5.4xlarge\",\n },\n });\n\n var exampleEc2Instance = new Aws.Index.Ec2Instance(\"example\", new()\n {\n InstanceType = example.Apply(getOutpostInstanceTypeResult =\u003e getOutpostInstanceTypeResult.InstanceType),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/outposts\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := outposts.GetOutpostInstanceType(ctx, \u0026outposts.GetOutpostInstanceTypeArgs{\n\t\t\tArn: exampleAwsOutpostsOutpost.Arn,\n\t\t\tPreferredInstanceTypes: []string{\n\t\t\t\t\"m5.large\",\n\t\t\t\t\"m5.4xlarge\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = aws.NewEc2Instance(ctx, \"example\", \u0026aws.Ec2InstanceArgs{\n\t\t\tInstanceType: example.InstanceType,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.outposts.OutpostsFunctions;\nimport com.pulumi.aws.outposts.inputs.GetOutpostInstanceTypeArgs;\nimport com.pulumi.aws.ec2Instance;\nimport com.pulumi.aws.ec2InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = OutpostsFunctions.getOutpostInstanceType(GetOutpostInstanceTypeArgs.builder()\n .arn(exampleAwsOutpostsOutpost.arn())\n .preferredInstanceTypes( \n \"m5.large\",\n \"m5.4xlarge\")\n .build());\n\n var exampleEc2Instance = new Ec2Instance(\"exampleEc2Instance\", Ec2InstanceArgs.builder()\n .instanceType(example.instanceType())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleEc2Instance:\n type: aws:ec2Instance\n name: example\n properties:\n instanceType: ${example.instanceType}\nvariables:\n example:\n fn::invoke:\n function: aws:outposts:getOutpostInstanceType\n arguments:\n arn: ${exampleAwsOutpostsOutpost.arn}\n preferredInstanceTypes:\n - m5.large\n - m5.4xlarge\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Information about single Outpost Instance Type.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = aws.outposts.getOutpostInstanceType({\n arn: exampleAwsOutpostsOutpost.arn,\n preferredInstanceTypes: [\n \"m5.large\",\n \"m5.4xlarge\",\n ],\n});\nconst exampleEc2Instance = new aws.index.Ec2Instance(\"example\", {instanceType: example.instanceType});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.outposts.get_outpost_instance_type(arn=example_aws_outposts_outpost[\"arn\"],\n preferred_instance_types=[\n \"m5.large\",\n \"m5.4xlarge\",\n ])\nexample_ec2_instance = aws.index.Ec2Instance(\"example\", instance_type=example.instance_type)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.Outposts.GetOutpostInstanceType.Invoke(new()\n {\n Arn = exampleAwsOutpostsOutpost.Arn,\n PreferredInstanceTypes = new[]\n {\n \"m5.large\",\n \"m5.4xlarge\",\n },\n });\n\n var exampleEc2Instance = new Aws.Index.Ec2Instance(\"example\", new()\n {\n InstanceType = example.Apply(getOutpostInstanceTypeResult =\u003e getOutpostInstanceTypeResult.InstanceType),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/outposts\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := outposts.GetOutpostInstanceType(ctx, \u0026outposts.GetOutpostInstanceTypeArgs{\n\t\t\tArn: exampleAwsOutpostsOutpost.Arn,\n\t\t\tPreferredInstanceTypes: []string{\n\t\t\t\t\"m5.large\",\n\t\t\t\t\"m5.4xlarge\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = aws.NewEc2Instance(ctx, \"example\", \u0026aws.Ec2InstanceArgs{\n\t\t\tInstanceType: example.InstanceType,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.outposts.OutpostsFunctions;\nimport com.pulumi.aws.outposts.inputs.GetOutpostInstanceTypeArgs;\nimport com.pulumi.aws.Ec2Instance;\nimport com.pulumi.aws.Ec2InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = OutpostsFunctions.getOutpostInstanceType(GetOutpostInstanceTypeArgs.builder()\n .arn(exampleAwsOutpostsOutpost.arn())\n .preferredInstanceTypes( \n \"m5.large\",\n \"m5.4xlarge\")\n .build());\n\n var exampleEc2Instance = new Ec2Instance(\"exampleEc2Instance\", Ec2InstanceArgs.builder()\n .instanceType(example.instanceType())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleEc2Instance:\n type: aws:Ec2Instance\n name: example\n properties:\n instanceType: ${example.instanceType}\nvariables:\n example:\n fn::invoke:\n function: aws:outposts:getOutpostInstanceType\n arguments:\n arn: ${exampleAwsOutpostsOutpost.arn}\n preferredInstanceTypes:\n - m5.large\n - m5.4xlarge\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getOutpostInstanceType.\n", "properties": { @@ -478408,7 +478408,7 @@ } }, "aws:secretsmanager/getSecretVersion:getSecretVersion": { - "description": "Retrieve information about a Secrets Manager secret version, including its secret value. To retrieve secret metadata, see the \u003cspan pulumi-lang-nodejs=\"`aws.secretsmanager.Secret`\" pulumi-lang-dotnet=\"`aws.secretsmanager.Secret`\" pulumi-lang-go=\"`secretsmanager.Secret`\" pulumi-lang-python=\"`secretsmanager.Secret`\" pulumi-lang-yaml=\"`aws.secretsmanager.Secret`\" pulumi-lang-java=\"`aws.secretsmanager.Secret`\"\u003e`aws.secretsmanager.Secret`\u003c/span\u003e data source.\n\n## Example Usage\n\n### Retrieve Current Secret Version\n\nBy default, this data sources retrieves information based on the `AWSCURRENT` staging label.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst secret_version = aws.secretsmanager.getSecretVersion({\n secretId: example.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nsecret_version = aws.secretsmanager.get_secret_version(secret_id=example[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_version = Aws.SecretsManager.GetSecretVersion.Invoke(new()\n {\n SecretId = example.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretsmanager.LookupSecretVersion(ctx, \u0026secretsmanager.LookupSecretVersionArgs{\n\t\t\tSecretId: example.Id,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.SecretsmanagerFunctions;\nimport com.pulumi.aws.secretsmanager.inputs.GetSecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var secret-version = SecretsmanagerFunctions.getSecretVersion(GetSecretVersionArgs.builder()\n .secretId(example.id())\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n secret-version:\n fn::invoke:\n function: aws:secretsmanager:getSecretVersion\n arguments:\n secretId: ${example.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Retrieve Specific Secret Version\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst by_version_stage = aws.secretsmanager.getSecretVersion({\n secretId: example.id,\n versionStage: \"example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nby_version_stage = aws.secretsmanager.get_secret_version(secret_id=example[\"id\"],\n version_stage=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var by_version_stage = Aws.SecretsManager.GetSecretVersion.Invoke(new()\n {\n SecretId = example.Id,\n VersionStage = \"example\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretsmanager.LookupSecretVersion(ctx, \u0026secretsmanager.LookupSecretVersionArgs{\n\t\t\tSecretId: example.Id,\n\t\t\tVersionStage: pulumi.StringRef(\"example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.SecretsmanagerFunctions;\nimport com.pulumi.aws.secretsmanager.inputs.GetSecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var by-version-stage = SecretsmanagerFunctions.getSecretVersion(GetSecretVersionArgs.builder()\n .secretId(example.id())\n .versionStage(\"example\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n by-version-stage:\n fn::invoke:\n function: aws:secretsmanager:getSecretVersion\n arguments:\n secretId: ${example.id}\n versionStage: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n", + "description": "Retrieve information about a Secrets Manager secret version, including its secret value. To retrieve secret metadata, see the \u003cspan pulumi-lang-nodejs=\"`aws.secretsmanager.Secret`\" pulumi-lang-dotnet=\"`aws.secretsmanager.Secret`\" pulumi-lang-go=\"`secretsmanager.Secret`\" pulumi-lang-python=\"`secretsmanager.Secret`\" pulumi-lang-yaml=\"`aws.secretsmanager.Secret`\" pulumi-lang-java=\"`aws.secretsmanager.Secret`\"\u003e`aws.secretsmanager.Secret`\u003c/span\u003e data source.\n\n## Example Usage\n\n### Retrieve Current Secret Version\n\nBy default, this data sources retrieves information based on the `AWSCURRENT` staging label.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst secret_version = aws.secretsmanager.getSecretVersion({\n secretId: example.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nsecret_version = aws.secretsmanager.get_secret_version(secret_id=example[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_version = Aws.SecretsManager.GetSecretVersion.Invoke(new()\n {\n SecretId = example.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretsmanager.LookupSecretVersion(ctx, \u0026secretsmanager.LookupSecretVersionArgs{\n\t\t\tSecretId: example.Id,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.SecretsmanagerFunctions;\nimport com.pulumi.aws.secretsmanager.inputs.GetSecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var secret-version = SecretsmanagerFunctions.getSecretVersion(GetSecretVersionArgs.builder()\n .secretId(example.id())\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n secret-version:\n fn::invoke:\n function: aws:secretsmanager:getSecretVersion\n arguments:\n secretId: ${example.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Retrieve Specific Secret Version\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst by_version_stage = aws.secretsmanager.getSecretVersion({\n secretId: example.id,\n versionStage: \"example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nby_version_stage = aws.secretsmanager.get_secret_version(secret_id=example[\"id\"],\n version_stage=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var by_version_stage = Aws.SecretsManager.GetSecretVersion.Invoke(new()\n {\n SecretId = example.Id,\n VersionStage = \"example\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretsmanager.LookupSecretVersion(ctx, \u0026secretsmanager.LookupSecretVersionArgs{\n\t\t\tSecretId: example.Id,\n\t\t\tVersionStage: pulumi.StringRef(\"example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.secretsmanager.SecretsmanagerFunctions;\nimport com.pulumi.aws.secretsmanager.inputs.GetSecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var by-version-stage = SecretsmanagerFunctions.getSecretVersion(GetSecretVersionArgs.builder()\n .secretId(example.id())\n .versionStage(\"example\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n by-version-stage:\n fn::invoke:\n function: aws:secretsmanager:getSecretVersion\n arguments:\n secretId: ${example.id}\n versionStage: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Handling Key-Value Secret Strings in JSON\n\nReading key-value pairs from JSON back into a native map\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as std from \"@pulumi/std\";\n\nexport const example = std.jsondecode({\n input: exampleAwsSecretsmanagerSecretVersion.secretString,\n}).then(invoke =\u003e invoke.result?.key1);\n```\n```python\nimport pulumi\nimport pulumi_std as std\n\npulumi.export(\"example\", std.jsondecode(input=example_aws_secretsmanager_secret_version[\"secretString\"]).result[\"key1\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"example\"] = Std.Jsondecode.Invoke(new()\n {\n Input = exampleAwsSecretsmanagerSecretVersion.SecretString,\n }).Apply(invoke =\u003e invoke.Result?.Key1),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tctx.Export(\"example\", pulumi.Any(std.Jsondecode(ctx, \u0026std.JsondecodeArgs{\n\t\t\tInput: exampleAwsSecretsmanagerSecretVersion.SecretString,\n\t\t}, nil).Result.Key1))\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.JsondecodeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n ctx.export(\"example\", StdFunctions.jsondecode(JsondecodeArgs.builder()\n .input(exampleAwsSecretsmanagerSecretVersion.secretString())\n .build()).result().key1());\n }\n}\n```\n```yaml\noutputs:\n example:\n fn::invoke:\n function: std:jsondecode\n arguments:\n input: ${exampleAwsSecretsmanagerSecretVersion.secretString}\n return: result.key1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getSecretVersion.\n", "properties": { diff --git a/sdk/dotnet/Acm/Certificate.cs b/sdk/dotnet/Acm/Certificate.cs index 74df0744d4e..cde1376b490 100644 --- a/sdk/dotnet/Acm/Certificate.cs +++ b/sdk/dotnet/Acm/Certificate.cs @@ -79,50 +79,6 @@ namespace Pulumi.Aws.Acm /// /// ### Existing Certificate Body Import /// - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using Aws = Pulumi.Aws; - /// using Tls = Pulumi.Tls; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var example = new Tls.Index.PrivateKey("example", new() - /// { - /// Algorithm = "RSA", - /// }); - /// - /// var exampleSelfSignedCert = new Tls.Index.SelfSignedCert("example", new() - /// { - /// KeyAlgorithm = "RSA", - /// PrivateKeyPem = example.PrivateKeyPem, - /// Subject = new[] - /// { - /// - /// { - /// { "commonName", "example.com" }, - /// { "organization", "ACME Examples, Inc" }, - /// }, - /// }, - /// ValidityPeriodHours = 12, - /// AllowedUses = new[] - /// { - /// "key_encipherment", - /// "digital_signature", - /// "server_auth", - /// }, - /// }); - /// - /// var cert = new Aws.Acm.Certificate("cert", new() - /// { - /// PrivateKey = example.PrivateKeyPem, - /// CertificateBody = exampleSelfSignedCert.CertPem, - /// }); - /// - /// }); - /// ``` - /// /// ### Referencing DomainValidationOptions With ForEach Based Resources /// /// See the `aws.acm.CertificateValidation` resource for a full example of performing DNS validation. diff --git a/sdk/dotnet/Acmpca/Certificate.cs b/sdk/dotnet/Acmpca/Certificate.cs index 230c3926dac..f5c3d1d8d68 100644 --- a/sdk/dotnet/Acmpca/Certificate.cs +++ b/sdk/dotnet/Acmpca/Certificate.cs @@ -21,61 +21,6 @@ namespace Pulumi.Aws.Acmpca /// /// ### Basic /// - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using Aws = Pulumi.Aws; - /// using Tls = Pulumi.Tls; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var exampleCertificateAuthority = new Aws.Acmpca.CertificateAuthority("example", new() - /// { - /// CertificateAuthorityConfiguration = new Aws.Acmpca.Inputs.CertificateAuthorityCertificateAuthorityConfigurationArgs - /// { - /// KeyAlgorithm = "RSA_4096", - /// SigningAlgorithm = "SHA512WITHRSA", - /// Subject = new Aws.Acmpca.Inputs.CertificateAuthorityCertificateAuthorityConfigurationSubjectArgs - /// { - /// CommonName = "example.com", - /// }, - /// }, - /// PermanentDeletionTimeInDays = 7, - /// }); - /// - /// var key = new Tls.Index.PrivateKey("key", new() - /// { - /// Algorithm = "RSA", - /// }); - /// - /// var csr = new Tls.Index.CertRequest("csr", new() - /// { - /// PrivateKeyPem = key.PrivateKeyPem, - /// Subject = new[] - /// { - /// - /// { - /// { "commonName", "example" }, - /// }, - /// }, - /// }); - /// - /// var example = new Aws.Acmpca.Certificate("example", new() - /// { - /// CertificateAuthorityArn = exampleCertificateAuthority.Arn, - /// CertificateSigningRequest = csr.CertRequestPem, - /// SigningAlgorithm = "SHA256WITHRSA", - /// Validity = new Aws.Acmpca.Inputs.CertificateValidityArgs - /// { - /// Type = "YEARS", - /// Value = "1", - /// }, - /// }); - /// - /// }); - /// ``` - /// /// ## Import /// /// ### Identity Schema diff --git a/sdk/dotnet/Amplify/App.cs b/sdk/dotnet/Amplify/App.cs index 23b45db7740..e33711cadaa 100644 --- a/sdk/dotnet/Amplify/App.cs +++ b/sdk/dotnet/Amplify/App.cs @@ -219,7 +219,7 @@ namespace Pulumi.Aws.Amplify /// - key: 'X-Content-Type-Options' /// value: 'nosniff' /// - key: 'Content-Security-Policy' - /// value: ""default-src 'self'"" + /// value: \""default-src 'self'\"" /// ", /// }); /// diff --git a/sdk/dotnet/ApiGateway/Integration.cs b/sdk/dotnet/ApiGateway/Integration.cs index ca793ff3dce..68875c420e8 100644 --- a/sdk/dotnet/ApiGateway/Integration.cs +++ b/sdk/dotnet/ApiGateway/Integration.cs @@ -62,7 +62,7 @@ namespace Pulumi.Aws.ApiGateway /// RequestTemplates = /// { /// { "application/xml", @"{ - /// ""body"" : $input.json('$') + /// \""body\"" : $input.json('$') /// } /// " }, /// }, diff --git a/sdk/dotnet/ApiGateway/IntegrationResponse.cs b/sdk/dotnet/ApiGateway/IntegrationResponse.cs index 58dace0a285..0cdd9ebeb6e 100644 --- a/sdk/dotnet/ApiGateway/IntegrationResponse.cs +++ b/sdk/dotnet/ApiGateway/IntegrationResponse.cs @@ -71,7 +71,7 @@ namespace Pulumi.Aws.ApiGateway /// ResponseTemplates = /// { /// { "application/xml", @"#set($inputRoot = $input.path('$')) - /// <?xml version=""1.0"" encoding=""UTF-8""?> + /// <?xml version=\""1.0\"" encoding=\""UTF-8\""?> /// <message> /// $inputRoot.body /// </message> diff --git a/sdk/dotnet/AppSync/Function.cs b/sdk/dotnet/AppSync/Function.cs index 61c61099b52..b8970b78d76 100644 --- a/sdk/dotnet/AppSync/Function.cs +++ b/sdk/dotnet/AppSync/Function.cs @@ -63,11 +63,11 @@ namespace Pulumi.Aws.AppSync /// DataSource = exampleDataSource.Name, /// Name = "example", /// RequestMappingTemplate = @"{ - /// ""version"": ""2018-05-29"", - /// ""method"": ""GET"", - /// ""resourcePath"": ""/"", - /// ""params"":{ - /// ""headers"": $utils.http.copyheaders($ctx.request.headers) + /// \""version\"": \""2018-05-29\"", + /// \""method\"": \""GET\"", + /// \""resourcePath\"": \""/\"", + /// \""params\"":{ + /// \""headers\"": $utils.http.copyheaders($ctx.request.headers) /// } /// } /// ", diff --git a/sdk/dotnet/AppSync/GraphQLApi.cs b/sdk/dotnet/AppSync/GraphQLApi.cs index 584c92aa1e9..f0dba73e141 100644 --- a/sdk/dotnet/AppSync/GraphQLApi.cs +++ b/sdk/dotnet/AppSync/GraphQLApi.cs @@ -173,7 +173,7 @@ namespace Pulumi.Aws.AppSync /// AuthenticationType = "AWS_IAM", /// Name = "example", /// Schema = @"schema { - /// query: Query + /// \tquery: Query /// } /// type Query { /// test: Int diff --git a/sdk/dotnet/AppSync/Resolver.cs b/sdk/dotnet/AppSync/Resolver.cs index 396a7666a17..7a6cde190f7 100644 --- a/sdk/dotnet/AppSync/Resolver.cs +++ b/sdk/dotnet/AppSync/Resolver.cs @@ -27,21 +27,21 @@ namespace Pulumi.Aws.AppSync /// AuthenticationType = "API_KEY", /// Name = "tf-example", /// Schema = @"type Mutation { - /// putPost(id: ID!, title: String!): Post + /// \tputPost(id: ID!, title: String!): Post /// } /// /// type Post { - /// id: ID! - /// title: String! + /// \tid: ID! + /// \ttitle: String! /// } /// /// type Query { - /// singlePost(id: ID!): Post + /// \tsinglePost(id: ID!): Post /// } /// /// schema { - /// query: Query - /// mutation: Mutation + /// \tquery: Query + /// \tmutation: Mutation /// } /// ", /// }); @@ -65,11 +65,11 @@ namespace Pulumi.Aws.AppSync /// Type = "Query", /// DataSource = testDataSource.Name, /// RequestTemplate = @"{ - /// ""version"": ""2018-05-29"", - /// ""method"": ""GET"", - /// ""resourcePath"": ""/"", - /// ""params"":{ - /// ""headers"": $utils.http.copyheaders($ctx.request.headers) + /// \""version\"": \""2018-05-29\"", + /// \""method\"": \""GET\"", + /// \""resourcePath\"": \""/\"", + /// \""params\"":{ + /// \""headers\"": $utils.http.copyheaders($ctx.request.headers) /// } /// } /// ", diff --git a/sdk/dotnet/AutoScaling/Tag.cs b/sdk/dotnet/AutoScaling/Tag.cs index 5428f16027a..5da68c7684a 100644 --- a/sdk/dotnet/AutoScaling/Tag.cs +++ b/sdk/dotnet/AutoScaling/Tag.cs @@ -16,6 +16,40 @@ namespace Pulumi.Aws.AutoScaling /// /// > **NOTE:** This tagging resource does not use the provider `IgnoreTags` configuration. /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = new Aws.Eks.NodeGroup("example", new() + /// { + /// ClusterName = "example", + /// NodeGroupName = "example", + /// }); + /// + /// var exampleTag = new List<Aws.AutoScaling.Tag>(); + /// foreach (var range in ) + /// { + /// exampleTag.Add(new Aws.AutoScaling.Tag($"example-{range.Key}", new() + /// { + /// AutoscalingGroupName = range.Value, + /// TagDetails = new Aws.AutoScaling.Inputs.TagTagArgs + /// { + /// Key = "k8s.io/cluster-autoscaler/node-template/label/eks.amazonaws.com/capacityType", + /// Value = "SPOT", + /// PropagateAtLaunch = false, + /// }, + /// })); + /// } + /// }); + /// ``` + /// /// ## Import /// /// Using `pulumi import`, import `aws_autoscaling_group_tag` using the ASG name and key, separated by a comma (`,`). For example: diff --git a/sdk/dotnet/AutoScalingPlans/ScalingPlan.cs b/sdk/dotnet/AutoScalingPlans/ScalingPlan.cs index dd3458c044c..b824f2f58df 100644 --- a/sdk/dotnet/AutoScalingPlans/ScalingPlan.cs +++ b/sdk/dotnet/AutoScalingPlans/ScalingPlan.cs @@ -19,6 +19,183 @@ namespace Pulumi.Aws.AutoScalingPlans /// /// ## Example Usage /// + /// ### Basic Dynamic Scaling + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var available = Aws.GetAvailabilityZones.Invoke(); + /// + /// var example = new Aws.AutoScaling.Group("example", new() + /// { + /// NamePrefix = "example", + /// LaunchConfiguration = exampleAwsLaunchConfiguration.Name, + /// AvailabilityZones = new[] + /// { + /// available.Apply(getAvailabilityZonesResult => getAvailabilityZonesResult.Names[0]), + /// }, + /// MinSize = 0, + /// MaxSize = 3, + /// Tags = new[] + /// { + /// new Aws.AutoScaling.Inputs.GroupTagArgs + /// { + /// Key = "application", + /// Value = "example", + /// PropagateAtLaunch = true, + /// }, + /// }, + /// }); + /// + /// var exampleScalingPlan = new Aws.AutoScalingPlans.ScalingPlan("example", new() + /// { + /// Name = "example-dynamic-cost-optimization", + /// ApplicationSource = new Aws.AutoScalingPlans.Inputs.ScalingPlanApplicationSourceArgs + /// { + /// TagFilters = new[] + /// { + /// new Aws.AutoScalingPlans.Inputs.ScalingPlanApplicationSourceTagFilterArgs + /// { + /// Key = "application", + /// Values = new[] + /// { + /// "example", + /// }, + /// }, + /// }, + /// }, + /// ScalingInstructions = new[] + /// { + /// new Aws.AutoScalingPlans.Inputs.ScalingPlanScalingInstructionArgs + /// { + /// MaxCapacity = 3, + /// MinCapacity = 0, + /// ResourceId = Std.Format.Invoke(new() + /// { + /// Input = "autoScalingGroup/%s", + /// Args = new[] + /// { + /// example.Name, + /// }, + /// }).Apply(invoke => invoke.Result), + /// ScalableDimension = "autoscaling:autoScalingGroup:DesiredCapacity", + /// ServiceNamespace = "autoscaling", + /// TargetTrackingConfigurations = new[] + /// { + /// new Aws.AutoScalingPlans.Inputs.ScalingPlanScalingInstructionTargetTrackingConfigurationArgs + /// { + /// PredefinedScalingMetricSpecification = new Aws.AutoScalingPlans.Inputs.ScalingPlanScalingInstructionTargetTrackingConfigurationPredefinedScalingMetricSpecificationArgs + /// { + /// PredefinedScalingMetricType = "ASGAverageCPUUtilization", + /// }, + /// TargetValue = 70, + /// }, + /// }, + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// + /// ### Basic Predictive Scaling + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var available = Aws.GetAvailabilityZones.Invoke(); + /// + /// var example = new Aws.AutoScaling.Group("example", new() + /// { + /// NamePrefix = "example", + /// LaunchConfiguration = exampleAwsLaunchConfiguration.Name, + /// AvailabilityZones = new[] + /// { + /// available.Apply(getAvailabilityZonesResult => getAvailabilityZonesResult.Names[0]), + /// }, + /// MinSize = 0, + /// MaxSize = 3, + /// Tags = new[] + /// { + /// new Aws.AutoScaling.Inputs.GroupTagArgs + /// { + /// Key = "application", + /// Value = "example", + /// PropagateAtLaunch = true, + /// }, + /// }, + /// }); + /// + /// var exampleScalingPlan = new Aws.AutoScalingPlans.ScalingPlan("example", new() + /// { + /// Name = "example-predictive-cost-optimization", + /// ApplicationSource = new Aws.AutoScalingPlans.Inputs.ScalingPlanApplicationSourceArgs + /// { + /// TagFilters = new[] + /// { + /// new Aws.AutoScalingPlans.Inputs.ScalingPlanApplicationSourceTagFilterArgs + /// { + /// Key = "application", + /// Values = new[] + /// { + /// "example", + /// }, + /// }, + /// }, + /// }, + /// ScalingInstructions = new[] + /// { + /// new Aws.AutoScalingPlans.Inputs.ScalingPlanScalingInstructionArgs + /// { + /// DisableDynamicScaling = true, + /// MaxCapacity = 3, + /// MinCapacity = 0, + /// ResourceId = Std.Format.Invoke(new() + /// { + /// Input = "autoScalingGroup/%s", + /// Args = new[] + /// { + /// example.Name, + /// }, + /// }).Apply(invoke => invoke.Result), + /// ScalableDimension = "autoscaling:autoScalingGroup:DesiredCapacity", + /// ServiceNamespace = "autoscaling", + /// TargetTrackingConfigurations = new[] + /// { + /// new Aws.AutoScalingPlans.Inputs.ScalingPlanScalingInstructionTargetTrackingConfigurationArgs + /// { + /// PredefinedScalingMetricSpecification = new Aws.AutoScalingPlans.Inputs.ScalingPlanScalingInstructionTargetTrackingConfigurationPredefinedScalingMetricSpecificationArgs + /// { + /// PredefinedScalingMetricType = "ASGAverageCPUUtilization", + /// }, + /// TargetValue = 70, + /// }, + /// }, + /// PredictiveScalingMaxCapacityBehavior = "SetForecastCapacityToMaxCapacity", + /// PredictiveScalingMode = "ForecastAndScale", + /// PredefinedLoadMetricSpecification = new Aws.AutoScalingPlans.Inputs.ScalingPlanScalingInstructionPredefinedLoadMetricSpecificationArgs + /// { + /// PredefinedLoadMetricType = "ASGTotalCPUUtilization", + /// }, + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// /// ## Import /// /// Using `pulumi import`, import Auto Scaling scaling plans using the `name`. For example: diff --git a/sdk/dotnet/BedrockModel/InvocationLoggingConfiguration.cs b/sdk/dotnet/BedrockModel/InvocationLoggingConfiguration.cs index 43a9c9f3a51..3e8cf12c5bc 100644 --- a/sdk/dotnet/BedrockModel/InvocationLoggingConfiguration.cs +++ b/sdk/dotnet/BedrockModel/InvocationLoggingConfiguration.cs @@ -43,25 +43,25 @@ namespace Pulumi.Aws.BedrockModel /// var current = values.Item2; /// var current1 = values.Item3; /// return @$"{{ - /// ""Version"": ""2012-10-17"", - /// ""Statement"": [ + /// \""Version\"": \""2012-10-17\"", + /// \""Statement\"": [ /// {{ - /// ""Effect"": ""Allow"", - /// ""Principal"": {{ - /// ""Service"": ""bedrock.amazonaws.com"" + /// \""Effect\"": \""Allow\"", + /// \""Principal\"": {{ + /// \""Service\"": \""bedrock.amazonaws.com\"" /// }}, - /// ""Action"": [ - /// ""s3:*"" + /// \""Action\"": [ + /// \""s3:*\"" /// ], - /// ""Resource"": [ - /// ""{arn}/*"" + /// \""Resource\"": [ + /// \""{arn}/*\"" /// ], - /// ""Condition"": {{ - /// ""StringEquals"": {{ - /// ""aws:SourceAccount"": ""{current.Apply(getCallerIdentityResult => getCallerIdentityResult.AccountId)}"" + /// \""Condition\"": {{ + /// \""StringEquals\"": {{ + /// \""aws:SourceAccount\"": \""{current.Apply(getCallerIdentityResult => getCallerIdentityResult.AccountId)}\"" /// }}, - /// ""ArnLike"": {{ - /// ""aws:SourceArn"": ""arn:aws:bedrock:us-east-1:{current1.AccountId}:*"" + /// \""ArnLike\"": {{ + /// \""aws:SourceArn\"": \""arn:aws:bedrock:us-east-1:{current1.AccountId}:*\"" /// }} /// }} /// }} diff --git a/sdk/dotnet/Cfg/OrganizationCustomPolicyRule.cs b/sdk/dotnet/Cfg/OrganizationCustomPolicyRule.cs index 5d92e723c25..63050eb359a 100644 --- a/sdk/dotnet/Cfg/OrganizationCustomPolicyRule.cs +++ b/sdk/dotnet/Cfg/OrganizationCustomPolicyRule.cs @@ -33,15 +33,15 @@ namespace Pulumi.Aws.Cfg /// PolicyText = @"let status = ['ACTIVE'] /// /// rule tableisactive when - /// resourceType == ""AWS::DynamoDB::Table"" { + /// resourceType == \""AWS::DynamoDB::Table\"" { /// configuration.tableStatus == %status /// } /// /// rule checkcompliance when - /// resourceType == ""AWS::DynamoDB::Table"" + /// resourceType == \""AWS::DynamoDB::Table\"" /// tableisactive { /// let pitr = supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus - /// %pitr == ""ENABLED"" + /// %pitr == \""ENABLED\"" /// } /// ", /// ResourceTypesScopes = new[] diff --git a/sdk/dotnet/Cfg/Rule.cs b/sdk/dotnet/Cfg/Rule.cs index f7b3beaa2c0..efeb8b4f492 100644 --- a/sdk/dotnet/Cfg/Rule.cs +++ b/sdk/dotnet/Cfg/Rule.cs @@ -180,16 +180,16 @@ namespace Pulumi.Aws.Cfg /// CustomPolicyDetails = new Aws.Cfg.Inputs.RuleSourceCustomPolicyDetailsArgs /// { /// PolicyRuntime = "guard-2.x.x", - /// PolicyText = @" rule tableisactive when - /// resourceType == ""AWS::DynamoDB::Table"" { - /// configuration.tableStatus == ['ACTIVE'] - /// } - /// - /// rule checkcompliance when - /// resourceType == ""AWS::DynamoDB::Table"" - /// tableisactive { - /// supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == ""ENABLED"" - /// } + /// PolicyText = @"\t rule tableisactive when + /// \t\t resourceType == \""AWS::DynamoDB::Table\"" { + /// \t\t configuration.tableStatus == ['ACTIVE'] + /// \t } + /// \t + /// \t rule checkcompliance when + /// \t\t resourceType == \""AWS::DynamoDB::Table\"" + /// \t\t tableisactive { + /// \t\t\t supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == \""ENABLED\"" + /// \t } /// ", /// }, /// }, diff --git a/sdk/dotnet/CloudWatch/EventTarget.cs b/sdk/dotnet/CloudWatch/EventTarget.cs index 02d156931b2..daf907ed814 100644 --- a/sdk/dotnet/CloudWatch/EventTarget.cs +++ b/sdk/dotnet/CloudWatch/EventTarget.cs @@ -561,8 +561,8 @@ namespace Pulumi.Aws.CloudWatch /// { "status", "$.detail.status" }, /// }, /// InputTemplate = @"{ - /// ""instance_id"": <instance>, - /// ""instance_status"": <status> + /// \""instance_id\"": <instance>, + /// \""instance_status\"": <status> /// } /// ", /// }, @@ -810,7 +810,7 @@ namespace Pulumi.Aws.CloudWatch /// { "input", "$.detail.input" }, /// }, /// InputTemplate = @" { - /// ""input"": <input> + /// \""input\"": <input> /// } /// ", /// }, diff --git a/sdk/dotnet/CloudWatch/MetricAlarm.cs b/sdk/dotnet/CloudWatch/MetricAlarm.cs index 3c691e0bd62..a796fdd5bcb 100644 --- a/sdk/dotnet/CloudWatch/MetricAlarm.cs +++ b/sdk/dotnet/CloudWatch/MetricAlarm.cs @@ -222,7 +222,7 @@ namespace Pulumi.Aws.CloudWatch /// Id = "q1", /// Expression = @"SELECT /// MAX(DBLoadRelativeToNumVCPUs) - /// FROM SCHEMA(""AWS/RDS"", DBInstanceIdentifier) + /// FROM SCHEMA(\""AWS/RDS\"", DBInstanceIdentifier) /// WHERE DBInstanceIdentifier != 'example-rds-instance' /// GROUP BY DBInstanceIdentifier /// ORDER BY MIN() ASC diff --git a/sdk/dotnet/Cognito/IdentityPoolProviderPrincipalTag.cs b/sdk/dotnet/Cognito/IdentityPoolProviderPrincipalTag.cs index 69693d6e071..3d03150cd28 100644 --- a/sdk/dotnet/Cognito/IdentityPoolProviderPrincipalTag.cs +++ b/sdk/dotnet/Cognito/IdentityPoolProviderPrincipalTag.cs @@ -12,6 +12,68 @@ namespace Pulumi.Aws.Cognito /// /// Provides an AWS Cognito Identity Principal Mapping. /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = new Aws.Cognito.UserPool("example", new() + /// { + /// Name = "user pool", + /// AutoVerifiedAttributes = new[] + /// { + /// "email", + /// }, + /// }); + /// + /// var exampleUserPoolClient = new Aws.Cognito.UserPoolClient("example", new() + /// { + /// Name = "client", + /// UserPoolId = example.Id, + /// SupportedIdentityProviders = Std.Compact.Invoke(new() + /// { + /// Input = new[] + /// { + /// "COGNITO", + /// }, + /// }).Apply(invoke => invoke.Result), + /// }); + /// + /// var exampleIdentityPool = new Aws.Cognito.IdentityPool("example", new() + /// { + /// IdentityPoolName = "identity pool", + /// AllowUnauthenticatedIdentities = false, + /// CognitoIdentityProviders = new[] + /// { + /// new Aws.Cognito.Inputs.IdentityPoolCognitoIdentityProviderArgs + /// { + /// ClientId = exampleUserPoolClient.Id, + /// ProviderName = example.Endpoint, + /// ServerSideTokenCheck = false, + /// }, + /// }, + /// }); + /// + /// var exampleIdentityPoolProviderPrincipalTag = new Aws.Cognito.IdentityPoolProviderPrincipalTag("example", new() + /// { + /// IdentityPoolId = exampleIdentityPool.Id, + /// IdentityProviderName = example.Endpoint, + /// UseDefaults = false, + /// PrincipalTags = + /// { + /// { "test", "value" }, + /// }, + /// }); + /// + /// }); + /// ``` + /// /// ## Import /// /// Using `pulumi import`, import Cognito Identity Pool Roles Attachment using the Identity Pool ID and provider name. For example: diff --git a/sdk/dotnet/DataZone/FormType.cs b/sdk/dotnet/DataZone/FormType.cs index 00eeae47ace..c1513b64a90 100644 --- a/sdk/dotnet/DataZone/FormType.cs +++ b/sdk/dotnet/DataZone/FormType.cs @@ -121,17 +121,17 @@ namespace Pulumi.Aws.DataZone /// Status = "DISABLED", /// Model = new Aws.DataZone.Inputs.FormTypeModelArgs /// { - /// Smithy = @" structure SageMakerModelFormType { - /// @required - /// @amazon.datazone#searchable - /// modelName: String + /// Smithy = @"\tstructure SageMakerModelFormType { + /// \t\t\t@required + /// \t\t\t@amazon.datazone#searchable + /// \t\t\tmodelName: String /// - /// @required - /// modelArn: String + /// \t\t\t@required + /// \t\t\tmodelArn: String /// - /// @required - /// creationTime: String - /// } + /// \t\t\t@required + /// \t\t\tcreationTime: String + /// \t\t\t} /// ", /// }, /// }); diff --git a/sdk/dotnet/Dms/ReplicationConfig.cs b/sdk/dotnet/Dms/ReplicationConfig.cs index 7dcd5b10387..295e24afb58 100644 --- a/sdk/dotnet/Dms/ReplicationConfig.cs +++ b/sdk/dotnet/Dms/ReplicationConfig.cs @@ -32,7 +32,7 @@ namespace Pulumi.Aws.Dms /// SourceEndpointArn = source.EndpointArn, /// TargetEndpointArn = target.EndpointArn, /// TableMappings = @" { - /// ""rules"":[{""rule-type"":""selection"",""rule-id"":""1"",""rule-name"":""1"",""rule-action"":""include"",""object-locator"":{""schema-name"":""%%"",""table-name"":""%%""}}] + /// \""rules\"":[{\""rule-type\"":\""selection\"",\""rule-id\"":\""1\"",\""rule-name\"":\""1\"",\""rule-action\"":\""include\"",\""object-locator\"":{\""schema-name\"":\""%%\"",\""table-name\"":\""%%\""}}] /// } /// ", /// StartReplication = true, diff --git a/sdk/dotnet/DynamoDB/GetTableItem.cs b/sdk/dotnet/DynamoDB/GetTableItem.cs index d7aa46ca333..bf64a2319f1 100644 --- a/sdk/dotnet/DynamoDB/GetTableItem.cs +++ b/sdk/dotnet/DynamoDB/GetTableItem.cs @@ -35,7 +35,7 @@ public static class GetTableItem /// }, /// ProjectionExpression = "#P", /// Key = @"{ - /// ""hashKey"": {""S"": ""example""} + /// \t\""hashKey\"": {\""S\"": \""example\""} /// } /// ", /// }); @@ -70,7 +70,7 @@ public static Task InvokeAsync(GetTableItemArgs args, Invoke /// }, /// ProjectionExpression = "#P", /// Key = @"{ - /// ""hashKey"": {""S"": ""example""} + /// \t\""hashKey\"": {\""S\"": \""example\""} /// } /// ", /// }); @@ -105,7 +105,7 @@ public static Output Invoke(GetTableItemInvokeArgs args, Inv /// }, /// ProjectionExpression = "#P", /// Key = @"{ - /// ""hashKey"": {""S"": ""example""} + /// \t\""hashKey\"": {\""S\"": \""example\""} /// } /// ", /// }); diff --git a/sdk/dotnet/DynamoDB/TableItem.cs b/sdk/dotnet/DynamoDB/TableItem.cs index 3a3bab08148..91869524ea7 100644 --- a/sdk/dotnet/DynamoDB/TableItem.cs +++ b/sdk/dotnet/DynamoDB/TableItem.cs @@ -46,11 +46,11 @@ namespace Pulumi.Aws.DynamoDB /// TableName = exampleTable.Name, /// HashKey = exampleTable.HashKey, /// Item = @"{ - /// ""exampleHashKey"": {""S"": ""something""}, - /// ""one"": {""N"": ""11111""}, - /// ""two"": {""N"": ""22222""}, - /// ""three"": {""N"": ""33333""}, - /// ""four"": {""N"": ""44444""} + /// \""exampleHashKey\"": {\""S\"": \""something\""}, + /// \""one\"": {\""N\"": \""11111\""}, + /// \""two\"": {\""N\"": \""22222\""}, + /// \""three\"": {\""N\"": \""33333\""}, + /// \""four\"": {\""N\"": \""44444\""} /// } /// ", /// }); diff --git a/sdk/dotnet/Ec2/GetSubnets.cs b/sdk/dotnet/Ec2/GetSubnets.cs index e18b2b86a93..a02ca18f13a 100644 --- a/sdk/dotnet/Ec2/GetSubnets.cs +++ b/sdk/dotnet/Ec2/GetSubnets.cs @@ -13,18 +13,285 @@ public static class GetSubnets { /// /// This resource can be useful for getting back a set of subnet IDs. + /// + /// ## Example Usage + /// + /// The following shows outputting all CIDR blocks for every subnet ID in a VPC. + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Ec2.GetSubnets.Invoke(new() + /// { + /// Filters = new[] + /// { + /// new Aws.Ec2.Inputs.GetSubnetsFilterInputArgs + /// { + /// Name = "vpc-id", + /// Values = new[] + /// { + /// vpcId, + /// }, + /// }, + /// }, + /// }); + /// + /// var exampleGetSubnet = Std.Toset.Invoke(new() + /// { + /// Input = example.Apply(getSubnetsResult => getSubnetsResult.Ids), + /// }).Apply(invoke => ); + /// + /// return new Dictionary<string, object?> + /// { + /// ["subnetCidrBlocks"] = exampleGetSubnet.Apply(exampleGetSubnet => (exampleGetSubnet).Values.Select(s => + /// { + /// return s.CidrBlock; + /// }).ToList()), + /// }; + /// }); + /// ``` + /// + /// The following example retrieves a set of all subnets in a VPC with a custom + /// tag of `Tier` set to a value of "Private" so that the `aws.ec2.Instance` resource + /// can loop through the subnets, putting instances across availability zones. + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using System.Threading.Tasks; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(async() => + /// { + /// var @private = await Aws.Ec2.GetSubnets.InvokeAsync(new() + /// { + /// Filters = new[] + /// { + /// new Aws.Ec2.Inputs.GetSubnetsFilterInputArgs + /// { + /// Name = "vpc-id", + /// Values = new[] + /// { + /// vpcId, + /// }, + /// }, + /// }, + /// Tags = + /// { + /// { "Tier", "Private" }, + /// }, + /// }); + /// + /// var app = new List<Aws.Ec2.Instance>(); + /// foreach (var range in ) + /// { + /// app.Add(new Aws.Ec2.Instance($"app-{range.Key}", new() + /// { + /// Ami = ami, + /// InstanceType = Aws.Ec2.InstanceType.T2_Micro, + /// SubnetId = range.Value, + /// })); + /// } + /// }); + /// ``` /// public static Task InvokeAsync(GetSubnetsArgs? args = null, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.InvokeAsync("aws:ec2/getSubnets:getSubnets", args ?? new GetSubnetsArgs(), options.WithDefaults()); /// /// This resource can be useful for getting back a set of subnet IDs. + /// + /// ## Example Usage + /// + /// The following shows outputting all CIDR blocks for every subnet ID in a VPC. + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Ec2.GetSubnets.Invoke(new() + /// { + /// Filters = new[] + /// { + /// new Aws.Ec2.Inputs.GetSubnetsFilterInputArgs + /// { + /// Name = "vpc-id", + /// Values = new[] + /// { + /// vpcId, + /// }, + /// }, + /// }, + /// }); + /// + /// var exampleGetSubnet = Std.Toset.Invoke(new() + /// { + /// Input = example.Apply(getSubnetsResult => getSubnetsResult.Ids), + /// }).Apply(invoke => ); + /// + /// return new Dictionary<string, object?> + /// { + /// ["subnetCidrBlocks"] = exampleGetSubnet.Apply(exampleGetSubnet => (exampleGetSubnet).Values.Select(s => + /// { + /// return s.CidrBlock; + /// }).ToList()), + /// }; + /// }); + /// ``` + /// + /// The following example retrieves a set of all subnets in a VPC with a custom + /// tag of `Tier` set to a value of "Private" so that the `aws.ec2.Instance` resource + /// can loop through the subnets, putting instances across availability zones. + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using System.Threading.Tasks; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(async() => + /// { + /// var @private = await Aws.Ec2.GetSubnets.InvokeAsync(new() + /// { + /// Filters = new[] + /// { + /// new Aws.Ec2.Inputs.GetSubnetsFilterInputArgs + /// { + /// Name = "vpc-id", + /// Values = new[] + /// { + /// vpcId, + /// }, + /// }, + /// }, + /// Tags = + /// { + /// { "Tier", "Private" }, + /// }, + /// }); + /// + /// var app = new List<Aws.Ec2.Instance>(); + /// foreach (var range in ) + /// { + /// app.Add(new Aws.Ec2.Instance($"app-{range.Key}", new() + /// { + /// Ami = ami, + /// InstanceType = Aws.Ec2.InstanceType.T2_Micro, + /// SubnetId = range.Value, + /// })); + /// } + /// }); + /// ``` /// public static Output Invoke(GetSubnetsInvokeArgs? args = null, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.Invoke("aws:ec2/getSubnets:getSubnets", args ?? new GetSubnetsInvokeArgs(), options.WithDefaults()); /// /// This resource can be useful for getting back a set of subnet IDs. + /// + /// ## Example Usage + /// + /// The following shows outputting all CIDR blocks for every subnet ID in a VPC. + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Ec2.GetSubnets.Invoke(new() + /// { + /// Filters = new[] + /// { + /// new Aws.Ec2.Inputs.GetSubnetsFilterInputArgs + /// { + /// Name = "vpc-id", + /// Values = new[] + /// { + /// vpcId, + /// }, + /// }, + /// }, + /// }); + /// + /// var exampleGetSubnet = Std.Toset.Invoke(new() + /// { + /// Input = example.Apply(getSubnetsResult => getSubnetsResult.Ids), + /// }).Apply(invoke => ); + /// + /// return new Dictionary<string, object?> + /// { + /// ["subnetCidrBlocks"] = exampleGetSubnet.Apply(exampleGetSubnet => (exampleGetSubnet).Values.Select(s => + /// { + /// return s.CidrBlock; + /// }).ToList()), + /// }; + /// }); + /// ``` + /// + /// The following example retrieves a set of all subnets in a VPC with a custom + /// tag of `Tier` set to a value of "Private" so that the `aws.ec2.Instance` resource + /// can loop through the subnets, putting instances across availability zones. + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using System.Threading.Tasks; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(async() => + /// { + /// var @private = await Aws.Ec2.GetSubnets.InvokeAsync(new() + /// { + /// Filters = new[] + /// { + /// new Aws.Ec2.Inputs.GetSubnetsFilterInputArgs + /// { + /// Name = "vpc-id", + /// Values = new[] + /// { + /// vpcId, + /// }, + /// }, + /// }, + /// Tags = + /// { + /// { "Tier", "Private" }, + /// }, + /// }); + /// + /// var app = new List<Aws.Ec2.Instance>(); + /// foreach (var range in ) + /// { + /// app.Add(new Aws.Ec2.Instance($"app-{range.Key}", new() + /// { + /// Ami = ami, + /// InstanceType = Aws.Ec2.InstanceType.T2_Micro, + /// SubnetId = range.Value, + /// })); + /// } + /// }); + /// ``` /// public static Output Invoke(GetSubnetsInvokeArgs args, InvokeOutputOptions options) => global::Pulumi.Deployment.Instance.Invoke("aws:ec2/getSubnets:getSubnets", args ?? new GetSubnetsInvokeArgs(), options.WithDefaults()); diff --git a/sdk/dotnet/Ec2/SecurityGroup.cs b/sdk/dotnet/Ec2/SecurityGroup.cs index 358422600a0..c1876c1c805 100644 --- a/sdk/dotnet/Ec2/SecurityGroup.cs +++ b/sdk/dotnet/Ec2/SecurityGroup.cs @@ -246,7 +246,7 @@ namespace Pulumi.Aws.Ec2 /// { /// Create = "true", /// Update = "true", - /// Delete = @$" ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters ""Name=tag:Name,Values={tags.Workaround1}"" --query ""VpcEndpoints[0].VpcEndpointId"" --output text` && + /// Delete = @$" ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters \""Name=tag:Name,Values={tags.Workaround1}\"" --query \""VpcEndpoints[0].VpcEndpointId\"" --output text` && /// aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${{ENDPOINT_ID}} --add-security-group-ids {tags.Workaround2} --remove-security-group-ids {id} /// ", /// }, new CustomResourceOptions @@ -261,7 +261,7 @@ namespace Pulumi.Aws.Ec2 /// { /// Triggers = /// { - /// { "rerun_upon_change_of", Std.Join.Invoke(new() + /// { "rerunUponChangeOf", Std.Join.Invoke(new() /// { /// Separator = ",", /// Input = exampleAwsVpcEndpoint.SecurityGroupIds, diff --git a/sdk/dotnet/Ec2/VpcIpam.cs b/sdk/dotnet/Ec2/VpcIpam.cs index 932e3987b69..3f6f3298978 100644 --- a/sdk/dotnet/Ec2/VpcIpam.cs +++ b/sdk/dotnet/Ec2/VpcIpam.cs @@ -47,6 +47,54 @@ namespace Pulumi.Aws.Ec2 /// /// Shared with multiple operating_regions: /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var current = Aws.GetRegion.Invoke(); + /// + /// var config = new Config(); + /// var ipamRegions = config.GetObject<dynamic[]>("ipamRegions") ?? new[] + /// { + /// "us-east-1", + /// "us-west-2", + /// }; + /// // ensure current provider region is an operating_regions entry + /// var allIpamRegions = Std.Concat.Invoke(new() + /// { + /// Input = new[] + /// { + /// new[] + /// { + /// current.Apply(getRegionResult => getRegionResult.Region), + /// }, + /// ipamRegions, + /// }, + /// }).Apply(invoke => Std.Distinct.Invoke(new() + /// { + /// Input = invoke.Result, + /// })).Apply(invoke => invoke.Result); + /// + /// var main = new Aws.Ec2.VpcIpam("main", new() + /// { + /// OperatingRegions = .Apply(entries => entries.Select(entry => + /// { + /// return + /// { + /// { "regionName", entry.Value }, + /// }; + /// }).ToList()), + /// Description = "multi region ipam", + /// }); + /// + /// }); + /// ``` + /// /// ## Import /// /// Using `pulumi import`, import IPAMs using the IPAM `id`. For example: diff --git a/sdk/dotnet/Ecr/LifecyclePolicy.cs b/sdk/dotnet/Ecr/LifecyclePolicy.cs index 26d7bd4f947..e30fac613ac 100644 --- a/sdk/dotnet/Ecr/LifecyclePolicy.cs +++ b/sdk/dotnet/Ecr/LifecyclePolicy.cs @@ -37,18 +37,18 @@ namespace Pulumi.Aws.Ecr /// { /// Repository = example.Name, /// Policy = @"{ - /// ""rules"": [ + /// \""rules\"": [ /// { - /// ""rulePriority"": 1, - /// ""description"": ""Expire images older than 14 days"", - /// ""selection"": { - /// ""tagStatus"": ""untagged"", - /// ""countType"": ""sinceImagePushed"", - /// ""countUnit"": ""days"", - /// ""countNumber"": 14 + /// \""rulePriority\"": 1, + /// \""description\"": \""Expire images older than 14 days\"", + /// \""selection\"": { + /// \""tagStatus\"": \""untagged\"", + /// \""countType\"": \""sinceImagePushed\"", + /// \""countUnit\"": \""days\"", + /// \""countNumber\"": 14 /// }, - /// ""action"": { - /// ""type"": ""expire"" + /// \""action\"": { + /// \""type\"": \""expire\"" /// } /// } /// ] @@ -78,18 +78,18 @@ namespace Pulumi.Aws.Ecr /// { /// Repository = example.Name, /// Policy = @"{ - /// ""rules"": [ + /// \""rules\"": [ /// { - /// ""rulePriority"": 1, - /// ""description"": ""Keep last 30 images"", - /// ""selection"": { - /// ""tagStatus"": ""tagged"", - /// ""tagPrefixList"": [""v""], - /// ""countType"": ""imageCountMoreThan"", - /// ""countNumber"": 30 + /// \""rulePriority\"": 1, + /// \""description\"": \""Keep last 30 images\"", + /// \""selection\"": { + /// \""tagStatus\"": \""tagged\"", + /// \""tagPrefixList\"": [\""v\""], + /// \""countType\"": \""imageCountMoreThan\"", + /// \""countNumber\"": 30 /// }, - /// ""action"": { - /// ""type"": ""expire"" + /// \""action\"": { + /// \""type\"": \""expire\"" /// } /// } /// ] diff --git a/sdk/dotnet/Ecr/RepositoryCreationTemplate.cs b/sdk/dotnet/Ecr/RepositoryCreationTemplate.cs index 34dffd7bdf2..0ca44c4fda6 100644 --- a/sdk/dotnet/Ecr/RepositoryCreationTemplate.cs +++ b/sdk/dotnet/Ecr/RepositoryCreationTemplate.cs @@ -81,18 +81,18 @@ namespace Pulumi.Aws.Ecr /// }, /// RepositoryPolicy = example.Apply(getPolicyDocumentResult => getPolicyDocumentResult.Json), /// LifecyclePolicy = @"{ - /// ""rules"": [ + /// \""rules\"": [ /// { - /// ""rulePriority"": 1, - /// ""description"": ""Expire images older than 14 days"", - /// ""selection"": { - /// ""tagStatus"": ""untagged"", - /// ""countType"": ""sinceImagePushed"", - /// ""countUnit"": ""days"", - /// ""countNumber"": 14 + /// \""rulePriority\"": 1, + /// \""description\"": \""Expire images older than 14 days\"", + /// \""selection\"": { + /// \""tagStatus\"": \""untagged\"", + /// \""countType\"": \""sinceImagePushed\"", + /// \""countUnit\"": \""days\"", + /// \""countNumber\"": 14 /// }, - /// ""action"": { - /// ""type"": ""expire"" + /// \""action\"": { + /// \""type\"": \""expire\"" /// } /// } /// ] diff --git a/sdk/dotnet/Ecs/GetTaskDefinition.cs b/sdk/dotnet/Ecs/GetTaskDefinition.cs index 7e85d4d4fad..a02410939c3 100644 --- a/sdk/dotnet/Ecs/GetTaskDefinition.cs +++ b/sdk/dotnet/Ecs/GetTaskDefinition.cs @@ -30,16 +30,16 @@ public static class GetTaskDefinition /// Family = "mongodb", /// ContainerDefinitions = @"[ /// { - /// ""cpu"": 128, - /// ""environment"": [{ - /// ""name"": ""SECRET"", - /// ""value"": ""KEY"" + /// \""cpu\"": 128, + /// \""environment\"": [{ + /// \""name\"": \""SECRET\"", + /// \""value\"": \""KEY\"" /// }], - /// ""essential"": true, - /// ""image"": ""mongo:latest"", - /// ""memory"": 128, - /// ""memoryReservation"": 64, - /// ""name"": ""mongodb"" + /// \""essential\"": true, + /// \""image\"": \""mongo:latest\"", + /// \""memory\"": 128, + /// \""memoryReservation\"": 64, + /// \""name\"": \""mongodb\"" /// } /// ] /// ", @@ -89,16 +89,16 @@ public static Task InvokeAsync(GetTaskDefinitionArgs ar /// Family = "mongodb", /// ContainerDefinitions = @"[ /// { - /// ""cpu"": 128, - /// ""environment"": [{ - /// ""name"": ""SECRET"", - /// ""value"": ""KEY"" + /// \""cpu\"": 128, + /// \""environment\"": [{ + /// \""name\"": \""SECRET\"", + /// \""value\"": \""KEY\"" /// }], - /// ""essential"": true, - /// ""image"": ""mongo:latest"", - /// ""memory"": 128, - /// ""memoryReservation"": 64, - /// ""name"": ""mongodb"" + /// \""essential\"": true, + /// \""image\"": \""mongo:latest\"", + /// \""memory\"": 128, + /// \""memoryReservation\"": 64, + /// \""name\"": \""mongodb\"" /// } /// ] /// ", @@ -148,16 +148,16 @@ public static Output Invoke(GetTaskDefinitionInvokeArgs /// Family = "mongodb", /// ContainerDefinitions = @"[ /// { - /// ""cpu"": 128, - /// ""environment"": [{ - /// ""name"": ""SECRET"", - /// ""value"": ""KEY"" + /// \""cpu\"": 128, + /// \""environment\"": [{ + /// \""name\"": \""SECRET\"", + /// \""value\"": \""KEY\"" /// }], - /// ""essential"": true, - /// ""image"": ""mongo:latest"", - /// ""memory"": 128, - /// ""memoryReservation"": 64, - /// ""name"": ""mongodb"" + /// \""essential\"": true, + /// \""image\"": \""mongo:latest\"", + /// \""memory\"": 128, + /// \""memoryReservation\"": 64, + /// \""name\"": \""mongodb\"" /// } /// ] /// ", diff --git a/sdk/dotnet/Eks/GetClusters.cs b/sdk/dotnet/Eks/GetClusters.cs index 0f2d09c9e07..21f74c5cb2e 100644 --- a/sdk/dotnet/Eks/GetClusters.cs +++ b/sdk/dotnet/Eks/GetClusters.cs @@ -13,18 +13,81 @@ public static class GetClusters { /// /// Retrieve EKS Clusters list + /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Eks.GetClusters.Invoke(); + /// + /// var exampleGetCluster = Std.Toset.Invoke(new() + /// { + /// Input = example.Apply(getClustersResult => getClustersResult.Names), + /// }).Apply(invoke => ); + /// + /// }); + /// ``` /// public static Task InvokeAsync(GetClustersArgs? args = null, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.InvokeAsync("aws:eks/getClusters:getClusters", args ?? new GetClustersArgs(), options.WithDefaults()); /// /// Retrieve EKS Clusters list + /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Eks.GetClusters.Invoke(); + /// + /// var exampleGetCluster = Std.Toset.Invoke(new() + /// { + /// Input = example.Apply(getClustersResult => getClustersResult.Names), + /// }).Apply(invoke => ); + /// + /// }); + /// ``` /// public static Output Invoke(GetClustersInvokeArgs? args = null, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.Invoke("aws:eks/getClusters:getClusters", args ?? new GetClustersInvokeArgs(), options.WithDefaults()); /// /// Retrieve EKS Clusters list + /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Eks.GetClusters.Invoke(); + /// + /// var exampleGetCluster = Std.Toset.Invoke(new() + /// { + /// Input = example.Apply(getClustersResult => getClustersResult.Names), + /// }).Apply(invoke => ); + /// + /// }); + /// ``` /// public static Output Invoke(GetClustersInvokeArgs args, InvokeOutputOptions options) => global::Pulumi.Deployment.Instance.Invoke("aws:eks/getClusters:getClusters", args ?? new GetClustersInvokeArgs(), options.WithDefaults()); diff --git a/sdk/dotnet/ElasticSearch/Domain.cs b/sdk/dotnet/ElasticSearch/Domain.cs index eb5a984a006..7eeb5b55812 100644 --- a/sdk/dotnet/ElasticSearch/Domain.cs +++ b/sdk/dotnet/ElasticSearch/Domain.cs @@ -67,15 +67,15 @@ namespace Pulumi.Aws.ElasticSearch /// var current = values.Item1; /// var currentGetCallerIdentity = values.Item2; /// return @$"{{ - /// ""Version"": ""2012-10-17"", - /// ""Statement"": [ + /// \""Version\"": \""2012-10-17\"", + /// \""Statement\"": [ /// {{ - /// ""Action"": ""es:*"", - /// ""Principal"": ""*"", - /// ""Effect"": ""Allow"", - /// ""Resource"": ""arn:aws:es:{current.Apply(getRegionResult => getRegionResult.Region)}:{currentGetCallerIdentity.Apply(getCallerIdentityResult => getCallerIdentityResult.AccountId)}:domain/{domain}/*"", - /// ""Condition"": {{ - /// ""IpAddress"": {{""aws:SourceIp"": [""66.193.100.22/32""]}} + /// \""Action\"": \""es:*\"", + /// \""Principal\"": \""*\"", + /// \""Effect\"": \""Allow\"", + /// \""Resource\"": \""arn:aws:es:{current.Apply(getRegionResult => getRegionResult.Region)}:{currentGetCallerIdentity.Apply(getCallerIdentityResult => getCallerIdentityResult.AccountId)}:domain/{domain}/*\"", + /// \""Condition\"": {{ + /// \""IpAddress\"": {{\""aws:SourceIp\"": [\""66.193.100.22/32\""]}} /// }} /// }} /// ] @@ -254,15 +254,15 @@ namespace Pulumi.Aws.ElasticSearch /// var current = values.Item1; /// var currentGetCallerIdentity = values.Item2; /// return @$"{{ - /// ""Version"": ""2012-10-17"", - /// ""Statement"": [ - /// {{ - /// ""Action"": ""es:*"", - /// ""Principal"": ""*"", - /// ""Effect"": ""Allow"", - /// ""Resource"": ""arn:aws:es:{current.Apply(getRegionResult => getRegionResult.Region)}:{currentGetCallerIdentity.Apply(getCallerIdentityResult => getCallerIdentityResult.AccountId)}:domain/{domain}/*"" - /// }} - /// ] + /// \t\""Version\"": \""2012-10-17\"", + /// \t\""Statement\"": [ + /// \t\t{{ + /// \t\t\t\""Action\"": \""es:*\"", + /// \t\t\t\""Principal\"": \""*\"", + /// \t\t\t\""Effect\"": \""Allow\"", + /// \t\t\t\""Resource\"": \""arn:aws:es:{current.Apply(getRegionResult => getRegionResult.Region)}:{currentGetCallerIdentity.Apply(getCallerIdentityResult => getCallerIdentityResult.AccountId)}:domain/{domain}/*\"" + /// \t\t}} + /// \t] /// }} /// "; /// }), diff --git a/sdk/dotnet/ElasticSearch/DomainPolicy.cs b/sdk/dotnet/ElasticSearch/DomainPolicy.cs index 9acd2d53189..02a6238dae0 100644 --- a/sdk/dotnet/ElasticSearch/DomainPolicy.cs +++ b/sdk/dotnet/ElasticSearch/DomainPolicy.cs @@ -32,16 +32,16 @@ namespace Pulumi.Aws.ElasticSearch /// { /// DomainName = example.DomainName, /// AccessPolicies = example.Arn.Apply(arn => @$"{{ - /// ""Version"": ""2012-10-17"", - /// ""Statement"": [ + /// \""Version\"": \""2012-10-17\"", + /// \""Statement\"": [ /// {{ - /// ""Action"": ""es:*"", - /// ""Principal"": ""*"", - /// ""Effect"": ""Allow"", - /// ""Condition"": {{ - /// ""IpAddress"": {{""aws:SourceIp"": ""127.0.0.1/32""}} + /// \""Action\"": \""es:*\"", + /// \""Principal\"": \""*\"", + /// \""Effect\"": \""Allow\"", + /// \""Condition\"": {{ + /// \""IpAddress\"": {{\""aws:SourceIp\"": \""127.0.0.1/32\""}} /// }}, - /// ""Resource"": ""{arn}/*"" + /// \""Resource\"": \""{arn}/*\"" /// }} /// ] /// }} diff --git a/sdk/dotnet/Emr/Cluster.cs b/sdk/dotnet/Emr/Cluster.cs index d875800f6d6..b9766285cce 100644 --- a/sdk/dotnet/Emr/Cluster.cs +++ b/sdk/dotnet/Emr/Cluster.cs @@ -33,9 +33,9 @@ namespace Pulumi.Aws.Emr /// "Spark", /// }, /// AdditionalInfo = @"{ - /// ""instanceAwsClientConfiguration"": { - /// ""proxyPort"": 8099, - /// ""proxyHost"": ""myproxy.example.com"" + /// \""instanceAwsClientConfiguration\"": { + /// \""proxyPort\"": 8099, + /// \""proxyHost\"": \""myproxy.example.com\"" /// } /// } /// ", @@ -67,31 +67,31 @@ namespace Pulumi.Aws.Emr /// }, /// BidPrice = "0.30", /// AutoscalingPolicy = @"{ - /// ""Constraints"": { - /// ""MinCapacity"": 1, - /// ""MaxCapacity"": 2 + /// \""Constraints\"": { + /// \""MinCapacity\"": 1, + /// \""MaxCapacity\"": 2 /// }, - /// ""Rules"": [ + /// \""Rules\"": [ /// { - /// ""Name"": ""ScaleOutMemoryPercentage"", - /// ""Description"": ""Scale out if YARNMemoryAvailablePercentage is less than 15"", - /// ""Action"": { - /// ""SimpleScalingPolicyConfiguration"": { - /// ""AdjustmentType"": ""CHANGE_IN_CAPACITY"", - /// ""ScalingAdjustment"": 1, - /// ""CoolDown"": 300 + /// \""Name\"": \""ScaleOutMemoryPercentage\"", + /// \""Description\"": \""Scale out if YARNMemoryAvailablePercentage is less than 15\"", + /// \""Action\"": { + /// \""SimpleScalingPolicyConfiguration\"": { + /// \""AdjustmentType\"": \""CHANGE_IN_CAPACITY\"", + /// \""ScalingAdjustment\"": 1, + /// \""CoolDown\"": 300 /// } /// }, - /// ""Trigger"": { - /// ""CloudWatchAlarmDefinition"": { - /// ""ComparisonOperator"": ""LESS_THAN"", - /// ""EvaluationPeriods"": 1, - /// ""MetricName"": ""YARNMemoryAvailablePercentage"", - /// ""Namespace"": ""AWS/ElasticMapReduce"", - /// ""Period"": 300, - /// ""Statistic"": ""AVERAGE"", - /// ""Threshold"": 15.0, - /// ""Unit"": ""PERCENT"" + /// \""Trigger\"": { + /// \""CloudWatchAlarmDefinition\"": { + /// \""ComparisonOperator\"": \""LESS_THAN\"", + /// \""EvaluationPeriods\"": 1, + /// \""MetricName\"": \""YARNMemoryAvailablePercentage\"", + /// \""Namespace\"": \""AWS/ElasticMapReduce\"", + /// \""Period\"": 300, + /// \""Statistic\"": \""AVERAGE\"", + /// \""Threshold\"": 15.0, + /// \""Unit\"": \""PERCENT\"" /// } /// } /// } @@ -120,28 +120,28 @@ namespace Pulumi.Aws.Emr /// }, /// ConfigurationsJson = @" [ /// { - /// ""Classification"": ""hadoop-env"", - /// ""Configurations"": [ + /// \""Classification\"": \""hadoop-env\"", + /// \""Configurations\"": [ /// { - /// ""Classification"": ""export"", - /// ""Properties"": { - /// ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0"" + /// \""Classification\"": \""export\"", + /// \""Properties\"": { + /// \""JAVA_HOME\"": \""/usr/lib/jvm/java-1.8.0\"" /// } /// } /// ], - /// ""Properties"": {} + /// \""Properties\"": {} /// }, /// { - /// ""Classification"": ""spark-env"", - /// ""Configurations"": [ + /// \""Classification\"": \""spark-env\"", + /// \""Configurations\"": [ /// { - /// ""Classification"": ""export"", - /// ""Properties"": { - /// ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0"" + /// \""Classification\"": \""export\"", + /// \""Properties\"": { + /// \""JAVA_HOME\"": \""/usr/lib/jvm/java-1.8.0\"" /// } /// } /// ], - /// ""Properties"": {} + /// \""Properties\"": {} /// } /// ] /// ", @@ -451,16 +451,16 @@ public partial class Cluster : global::Pulumi.CustomResource /// { /// ConfigurationsJson = @"[ /// { - /// ""Classification"": ""hadoop-env"", - /// ""Configurations"": [ + /// \""Classification\"": \""hadoop-env\"", + /// \""Configurations\"": [ /// { - /// ""Classification"": ""export"", - /// ""Properties"": { - /// ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0"" + /// \""Classification\"": \""export\"", + /// \""Properties\"": { + /// \""JAVA_HOME\"": \""/usr/lib/jvm/java-1.8.0\"" /// } /// } /// ], - /// ""Properties"": {} + /// \""Properties\"": {} /// } /// ] /// ", @@ -755,16 +755,16 @@ public InputList BootstrapActions /// { /// ConfigurationsJson = @"[ /// { - /// ""Classification"": ""hadoop-env"", - /// ""Configurations"": [ + /// \""Classification\"": \""hadoop-env\"", + /// \""Configurations\"": [ /// { - /// ""Classification"": ""export"", - /// ""Properties"": { - /// ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0"" + /// \""Classification\"": \""export\"", + /// \""Properties\"": { + /// \""JAVA_HOME\"": \""/usr/lib/jvm/java-1.8.0\"" /// } /// } /// ], - /// ""Properties"": {} + /// \""Properties\"": {} /// } /// ] /// ", @@ -1042,16 +1042,16 @@ public InputList BootstrapActions /// { /// ConfigurationsJson = @"[ /// { - /// ""Classification"": ""hadoop-env"", - /// ""Configurations"": [ + /// \""Classification\"": \""hadoop-env\"", + /// \""Configurations\"": [ /// { - /// ""Classification"": ""export"", - /// ""Properties"": { - /// ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0"" + /// \""Classification\"": \""export\"", + /// \""Properties\"": { + /// \""JAVA_HOME\"": \""/usr/lib/jvm/java-1.8.0\"" /// } /// } /// ], - /// ""Properties"": {} + /// \""Properties\"": {} /// } /// ] /// ", diff --git a/sdk/dotnet/Emr/InstanceGroup.cs b/sdk/dotnet/Emr/InstanceGroup.cs index fcf6fc48771..98a7ccc8062 100644 --- a/sdk/dotnet/Emr/InstanceGroup.cs +++ b/sdk/dotnet/Emr/InstanceGroup.cs @@ -82,16 +82,16 @@ public partial class InstanceGroup : global::Pulumi.CustomResource /// { /// ConfigurationsJson = @"[ /// { - /// ""Classification"": ""hadoop-env"", - /// ""Configurations"": [ + /// \""Classification\"": \""hadoop-env\"", + /// \""Configurations\"": [ /// { - /// ""Classification"": ""export"", - /// ""Properties"": { - /// ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0"" + /// \""Classification\"": \""export\"", + /// \""Properties\"": { + /// \""JAVA_HOME\"": \""/usr/lib/jvm/java-1.8.0\"" /// } /// } /// ], - /// ""Properties"": {} + /// \""Properties\"": {} /// } /// ] /// ", @@ -230,16 +230,16 @@ public sealed class InstanceGroupArgs : global::Pulumi.ResourceArgs /// { /// ConfigurationsJson = @"[ /// { - /// ""Classification"": ""hadoop-env"", - /// ""Configurations"": [ + /// \""Classification\"": \""hadoop-env\"", + /// \""Configurations\"": [ /// { - /// ""Classification"": ""export"", - /// ""Properties"": { - /// ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0"" + /// \""Classification\"": \""export\"", + /// \""Properties\"": { + /// \""JAVA_HOME\"": \""/usr/lib/jvm/java-1.8.0\"" /// } /// } /// ], - /// ""Properties"": {} + /// \""Properties\"": {} /// } /// ] /// ", @@ -334,16 +334,16 @@ public sealed class InstanceGroupState : global::Pulumi.ResourceArgs /// { /// ConfigurationsJson = @"[ /// { - /// ""Classification"": ""hadoop-env"", - /// ""Configurations"": [ + /// \""Classification\"": \""hadoop-env\"", + /// \""Configurations\"": [ /// { - /// ""Classification"": ""export"", - /// ""Properties"": { - /// ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0"" + /// \""Classification\"": \""export\"", + /// \""Properties\"": { + /// \""JAVA_HOME\"": \""/usr/lib/jvm/java-1.8.0\"" /// } /// } /// ], - /// ""Properties"": {} + /// \""Properties\"": {} /// } /// ] /// ", diff --git a/sdk/dotnet/Emr/SecurityConfiguration.cs b/sdk/dotnet/Emr/SecurityConfiguration.cs index 1c3c647ce20..bd199b65ce8 100644 --- a/sdk/dotnet/Emr/SecurityConfiguration.cs +++ b/sdk/dotnet/Emr/SecurityConfiguration.cs @@ -26,18 +26,18 @@ namespace Pulumi.Aws.Emr /// { /// Name = "emrsc_other", /// Configuration = @"{ - /// ""EncryptionConfiguration"": { - /// ""AtRestEncryptionConfiguration"": { - /// ""S3EncryptionConfiguration"": { - /// ""EncryptionMode"": ""SSE-S3"" + /// \""EncryptionConfiguration\"": { + /// \""AtRestEncryptionConfiguration\"": { + /// \""S3EncryptionConfiguration\"": { + /// \""EncryptionMode\"": \""SSE-S3\"" /// }, - /// ""LocalDiskEncryptionConfiguration"": { - /// ""EncryptionKeyProviderType"": ""AwsKms"", - /// ""AwsKmsKey"": ""arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key"" + /// \""LocalDiskEncryptionConfiguration\"": { + /// \""EncryptionKeyProviderType\"": \""AwsKms\"", + /// \""AwsKmsKey\"": \""arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key\"" /// } /// }, - /// ""EnableInTransitEncryption"": false, - /// ""EnableAtRestEncryption"": true + /// \""EnableInTransitEncryption\"": false, + /// \""EnableAtRestEncryption\"": true /// } /// } /// ", diff --git a/sdk/dotnet/Evidently/Segment.cs b/sdk/dotnet/Evidently/Segment.cs index 2a6c8cecc88..3333d9bcf52 100644 --- a/sdk/dotnet/Evidently/Segment.cs +++ b/sdk/dotnet/Evidently/Segment.cs @@ -53,9 +53,9 @@ namespace Pulumi.Aws.Evidently /// { /// Name = "example", /// Pattern = @" { - /// ""Price"": [ + /// \""Price\"": [ /// { - /// ""numeric"": ["">"",10,""<="",20] + /// \""numeric\"": [\"">\"",10,\""<=\"",20] /// } /// ] /// } diff --git a/sdk/dotnet/Glue/Connection.cs b/sdk/dotnet/Glue/Connection.cs index 85308fbc436..5b06052cc0c 100644 --- a/sdk/dotnet/Glue/Connection.cs +++ b/sdk/dotnet/Glue/Connection.cs @@ -275,17 +275,19 @@ namespace Pulumi.Aws.Glue /// ["credentials"] = Std.Base64encode.Invoke(new() /// { /// Input = @"{ - /// ""type"": ""service_account"", - /// ""project_id"": ""example-project"", - /// ""private_key_id"": ""example-key"", - /// ""private_key"": ""-----BEGIN RSA PRIVATE KEY-----\nREDACTED\n-----END RSA PRIVATE KEY-----"", - /// ""client_email"": ""example-project@appspot.gserviceaccount.com"", - /// ""client_id"": example-client"", - /// ""auth_uri"": ""https://accounts.google.com/o/oauth2/auth"", - /// ""token_uri"": ""https://oauth2.googleapis.com/token"", - /// ""auth_provider_x509_cert_url"": ""https://www.googleapis.com/oauth2/v1/certs"", - /// ""client_x509_cert_url"": ""https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com"", - /// ""universe_domain"": ""googleapis.com"" + /// \""type\"": \""service_account\"", + /// \""project_id\"": \""example-project\"", + /// \""private_key_id\"": \""example-key\"", + /// \""private_key\"": \""-----BEGIN RSA PRIVATE KEY-----\ + /// REDACTED\ + /// -----END RSA PRIVATE KEY-----\"", + /// \""client_email\"": \""example-project@appspot.gserviceaccount.com\"", + /// \""client_id\"": example-client\"", + /// \""auth_uri\"": \""https://accounts.google.com/o/oauth2/auth\"", + /// \""token_uri\"": \""https://oauth2.googleapis.com/token\"", + /// \""auth_provider_x509_cert_url\"": \""https://www.googleapis.com/oauth2/v1/certs\"", + /// \""client_x509_cert_url\"": \""https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com\"", + /// \""universe_domain\"": \""googleapis.com\"" /// } /// ", /// }).Apply(invoke => invoke.Result), diff --git a/sdk/dotnet/Glue/Crawler.cs b/sdk/dotnet/Glue/Crawler.cs index 1efc6779938..9bbac430118 100644 --- a/sdk/dotnet/Glue/Crawler.cs +++ b/sdk/dotnet/Glue/Crawler.cs @@ -127,9 +127,9 @@ namespace Pulumi.Aws.Glue /// DeleteBehavior = "LOG", /// }, /// Configuration = @"{ - /// ""Version"":1.0, - /// ""Grouping"": { - /// ""TableGroupingPolicy"": ""CombineCompatibleSchemas"" + /// \""Version\"":1.0, + /// \""Grouping\"": { + /// \""TableGroupingPolicy\"": \""CombineCompatibleSchemas\"" /// } /// } /// ", diff --git a/sdk/dotnet/ImageBuilder/Workflow.cs b/sdk/dotnet/ImageBuilder/Workflow.cs index 67530c65f37..f2b9fd5521c 100644 --- a/sdk/dotnet/ImageBuilder/Workflow.cs +++ b/sdk/dotnet/ImageBuilder/Workflow.cs @@ -44,19 +44,19 @@ namespace Pulumi.Aws.ImageBuilder /// action: LaunchInstance /// onFailure: Abort /// inputs: - /// waitFor: ""ssmAgent"" + /// waitFor: \""ssmAgent\"" /// /// - name: TerminateTestInstance /// action: TerminateInstance /// onFailure: Continue /// inputs: - /// instanceId.$: ""$.stepOutputs.LaunchTestInstance.instanceId"" + /// instanceId.$: \""$.stepOutputs.LaunchTestInstance.instanceId\"" /// /// - name: WaitForActionAtEnd /// action: WaitForAction /// if: /// booleanEquals: true - /// value: ""$.parameters.waitForActionAtEnd"" + /// value: \""$.parameters.waitForActionAtEnd\"" /// ", /// }); /// diff --git a/sdk/dotnet/Iot/CaCertificate.cs b/sdk/dotnet/Iot/CaCertificate.cs index 2bd046f5704..d2436376e57 100644 --- a/sdk/dotnet/Iot/CaCertificate.cs +++ b/sdk/dotnet/Iot/CaCertificate.cs @@ -13,85 +13,6 @@ namespace Pulumi.Aws.Iot /// Creates and manages an AWS IoT CA Certificate. /// /// ## Example Usage - /// - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using Aws = Pulumi.Aws; - /// using Tls = Pulumi.Tls; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var caPrivateKey = new Tls.Index.PrivateKey("ca", new() - /// { - /// Algorithm = "RSA", - /// }); - /// - /// var ca = new Tls.Index.SelfSignedCert("ca", new() - /// { - /// PrivateKeyPem = caPrivateKey.PrivateKeyPem, - /// Subject = new[] - /// { - /// - /// { - /// { "commonName", "example.com" }, - /// { "organization", "ACME Examples, Inc" }, - /// }, - /// }, - /// ValidityPeriodHours = 12, - /// AllowedUses = new[] - /// { - /// "key_encipherment", - /// "digital_signature", - /// "server_auth", - /// }, - /// IsCaCertificate = true, - /// }); - /// - /// var verificationPrivateKey = new Tls.Index.PrivateKey("verification", new() - /// { - /// Algorithm = "RSA", - /// }); - /// - /// var example = Aws.Iot.GetRegistrationCode.Invoke(); - /// - /// var verification = new Tls.Index.CertRequest("verification", new() - /// { - /// PrivateKeyPem = verificationPrivateKey.PrivateKeyPem, - /// Subject = new[] - /// { - /// - /// { - /// { "commonName", example.Apply(getRegistrationCodeResult => getRegistrationCodeResult.RegistrationCode) }, - /// }, - /// }, - /// }); - /// - /// var verificationLocallySignedCert = new Tls.Index.LocallySignedCert("verification", new() - /// { - /// CertRequestPem = verification.CertRequestPem, - /// CaPrivateKeyPem = caPrivateKey.PrivateKeyPem, - /// CaCertPem = ca.CertPem, - /// ValidityPeriodHours = 12, - /// AllowedUses = new[] - /// { - /// "key_encipherment", - /// "digital_signature", - /// "server_auth", - /// }, - /// }); - /// - /// var exampleCaCertificate = new Aws.Iot.CaCertificate("example", new() - /// { - /// Active = true, - /// CaCertificatePem = ca.CertPem, - /// VerificationCertificatePem = verificationLocallySignedCert.CertPem, - /// AllowAutoRegistration = true, - /// }); - /// - /// }); - /// ``` /// [AwsResourceType("aws:iot/caCertificate:CaCertificate")] public partial class CaCertificate : global::Pulumi.CustomResource diff --git a/sdk/dotnet/Iot/GetEndpoint.cs b/sdk/dotnet/Iot/GetEndpoint.cs index d42833891fd..9c9563778e8 100644 --- a/sdk/dotnet/Iot/GetEndpoint.cs +++ b/sdk/dotnet/Iot/GetEndpoint.cs @@ -15,6 +15,53 @@ public static class GetEndpoint /// Returns a unique endpoint specific to the AWS account making the call. /// /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Kubernetes = Pulumi.Kubernetes; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Iot.GetEndpoint.Invoke(); + /// + /// var agent = new Kubernetes.Index.Pod("agent", new() + /// { + /// Metadata = new[] + /// { + /// + /// { + /// { "name", "my-device" }, + /// }, + /// }, + /// Spec = new[] + /// { + /// + /// { + /// { "container", new[] + /// { + /// + /// { + /// { "image", "gcr.io/my-project/image-name" }, + /// { "name", "image-name" }, + /// { "env", new[] + /// { + /// + /// { + /// { "name", "IOT_ENDPOINT" }, + /// { "value", example.Apply(getEndpointResult => getEndpointResult.EndpointAddress) }, + /// }, + /// } }, + /// }, + /// } }, + /// }, + /// }, + /// }); + /// + /// }); + /// ``` /// public static Task InvokeAsync(GetEndpointArgs? args = null, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.InvokeAsync("aws:iot/getEndpoint:getEndpoint", args ?? new GetEndpointArgs(), options.WithDefaults()); @@ -23,6 +70,53 @@ public static Task InvokeAsync(GetEndpointArgs? args = null, /// Returns a unique endpoint specific to the AWS account making the call. /// /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Kubernetes = Pulumi.Kubernetes; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Iot.GetEndpoint.Invoke(); + /// + /// var agent = new Kubernetes.Index.Pod("agent", new() + /// { + /// Metadata = new[] + /// { + /// + /// { + /// { "name", "my-device" }, + /// }, + /// }, + /// Spec = new[] + /// { + /// + /// { + /// { "container", new[] + /// { + /// + /// { + /// { "image", "gcr.io/my-project/image-name" }, + /// { "name", "image-name" }, + /// { "env", new[] + /// { + /// + /// { + /// { "name", "IOT_ENDPOINT" }, + /// { "value", example.Apply(getEndpointResult => getEndpointResult.EndpointAddress) }, + /// }, + /// } }, + /// }, + /// } }, + /// }, + /// }, + /// }); + /// + /// }); + /// ``` /// public static Output Invoke(GetEndpointInvokeArgs? args = null, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.Invoke("aws:iot/getEndpoint:getEndpoint", args ?? new GetEndpointInvokeArgs(), options.WithDefaults()); @@ -31,6 +125,53 @@ public static Output Invoke(GetEndpointInvokeArgs? args = nul /// Returns a unique endpoint specific to the AWS account making the call. /// /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Kubernetes = Pulumi.Kubernetes; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Iot.GetEndpoint.Invoke(); + /// + /// var agent = new Kubernetes.Index.Pod("agent", new() + /// { + /// Metadata = new[] + /// { + /// + /// { + /// { "name", "my-device" }, + /// }, + /// }, + /// Spec = new[] + /// { + /// + /// { + /// { "container", new[] + /// { + /// + /// { + /// { "image", "gcr.io/my-project/image-name" }, + /// { "name", "image-name" }, + /// { "env", new[] + /// { + /// + /// { + /// { "name", "IOT_ENDPOINT" }, + /// { "value", example.Apply(getEndpointResult => getEndpointResult.EndpointAddress) }, + /// }, + /// } }, + /// }, + /// } }, + /// }, + /// }, + /// }); + /// + /// }); + /// ``` /// public static Output Invoke(GetEndpointInvokeArgs args, InvokeOutputOptions options) => global::Pulumi.Deployment.Instance.Invoke("aws:iot/getEndpoint:getEndpoint", args ?? new GetEndpointInvokeArgs(), options.WithDefaults()); diff --git a/sdk/dotnet/Iot/GetRegistrationCode.cs b/sdk/dotnet/Iot/GetRegistrationCode.cs index 78db4518c1c..489af16aaa8 100644 --- a/sdk/dotnet/Iot/GetRegistrationCode.cs +++ b/sdk/dotnet/Iot/GetRegistrationCode.cs @@ -15,38 +15,6 @@ public static class GetRegistrationCode /// Gets a registration code used to register a CA certificate with AWS IoT. /// /// ## Example Usage - /// - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using Aws = Pulumi.Aws; - /// using Tls = Pulumi.Tls; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var example = Aws.Iot.GetRegistrationCode.Invoke(); - /// - /// var verification = new Tls.Index.PrivateKey("verification", new() - /// { - /// Algorithm = "RSA", - /// }); - /// - /// var verificationCertRequest = new Tls.Index.CertRequest("verification", new() - /// { - /// KeyAlgorithm = "RSA", - /// PrivateKeyPem = verification.PrivateKeyPem, - /// Subject = new[] - /// { - /// - /// { - /// { "commonName", example.Apply(getRegistrationCodeResult => getRegistrationCodeResult.RegistrationCode) }, - /// }, - /// }, - /// }); - /// - /// }); - /// ``` /// public static Task InvokeAsync(GetRegistrationCodeArgs? args = null, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.InvokeAsync("aws:iot/getRegistrationCode:getRegistrationCode", args ?? new GetRegistrationCodeArgs(), options.WithDefaults()); @@ -55,38 +23,6 @@ public static Task InvokeAsync(GetRegistrationCodeArg /// Gets a registration code used to register a CA certificate with AWS IoT. /// /// ## Example Usage - /// - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using Aws = Pulumi.Aws; - /// using Tls = Pulumi.Tls; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var example = Aws.Iot.GetRegistrationCode.Invoke(); - /// - /// var verification = new Tls.Index.PrivateKey("verification", new() - /// { - /// Algorithm = "RSA", - /// }); - /// - /// var verificationCertRequest = new Tls.Index.CertRequest("verification", new() - /// { - /// KeyAlgorithm = "RSA", - /// PrivateKeyPem = verification.PrivateKeyPem, - /// Subject = new[] - /// { - /// - /// { - /// { "commonName", example.Apply(getRegistrationCodeResult => getRegistrationCodeResult.RegistrationCode) }, - /// }, - /// }, - /// }); - /// - /// }); - /// ``` /// public static Output Invoke(GetRegistrationCodeInvokeArgs? args = null, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.Invoke("aws:iot/getRegistrationCode:getRegistrationCode", args ?? new GetRegistrationCodeInvokeArgs(), options.WithDefaults()); @@ -95,38 +31,6 @@ public static Output Invoke(GetRegistrationCodeInvoke /// Gets a registration code used to register a CA certificate with AWS IoT. /// /// ## Example Usage - /// - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using Aws = Pulumi.Aws; - /// using Tls = Pulumi.Tls; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var example = Aws.Iot.GetRegistrationCode.Invoke(); - /// - /// var verification = new Tls.Index.PrivateKey("verification", new() - /// { - /// Algorithm = "RSA", - /// }); - /// - /// var verificationCertRequest = new Tls.Index.CertRequest("verification", new() - /// { - /// KeyAlgorithm = "RSA", - /// PrivateKeyPem = verification.PrivateKeyPem, - /// Subject = new[] - /// { - /// - /// { - /// { "commonName", example.Apply(getRegistrationCodeResult => getRegistrationCodeResult.RegistrationCode) }, - /// }, - /// }, - /// }); - /// - /// }); - /// ``` /// public static Output Invoke(GetRegistrationCodeInvokeArgs args, InvokeOutputOptions options) => global::Pulumi.Deployment.Instance.Invoke("aws:iot/getRegistrationCode:getRegistrationCode", args ?? new GetRegistrationCodeInvokeArgs(), options.WithDefaults()); diff --git a/sdk/dotnet/Kinesis/FirehoseDeliveryStream.cs b/sdk/dotnet/Kinesis/FirehoseDeliveryStream.cs index 46417a879cd..ea49d61c360 100644 --- a/sdk/dotnet/Kinesis/FirehoseDeliveryStream.cs +++ b/sdk/dotnet/Kinesis/FirehoseDeliveryStream.cs @@ -620,32 +620,32 @@ namespace Pulumi.Aws.Kinesis /// var testClusterArn = values.Item1; /// var testClusterArn1 = values.Item2; /// return @$"{{ - /// ""Version"": ""2012-10-17"", - /// ""Statement"": [ + /// \""Version\"": \""2012-10-17\"", + /// \""Statement\"": [ /// {{ - /// ""Effect"": ""Allow"", - /// ""Action"": [ - /// ""es:*"" + /// \""Effect\"": \""Allow\"", + /// \""Action\"": [ + /// \""es:*\"" /// ], - /// ""Resource"": [ - /// ""{testClusterArn}"", - /// ""{testClusterArn1}/*"" + /// \""Resource\"": [ + /// \""{testClusterArn}\"", + /// \""{testClusterArn1}/*\"" /// ] /// }}, /// {{ - /// ""Effect"": ""Allow"", - /// ""Action"": [ - /// ""ec2:DescribeVpcs"", - /// ""ec2:DescribeVpcAttribute"", - /// ""ec2:DescribeSubnets"", - /// ""ec2:DescribeSecurityGroups"", - /// ""ec2:DescribeNetworkInterfaces"", - /// ""ec2:CreateNetworkInterface"", - /// ""ec2:CreateNetworkInterfacePermission"", - /// ""ec2:DeleteNetworkInterface"" + /// \""Effect\"": \""Allow\"", + /// \""Action\"": [ + /// \""ec2:DescribeVpcs\"", + /// \""ec2:DescribeVpcAttribute\"", + /// \""ec2:DescribeSubnets\"", + /// \""ec2:DescribeSecurityGroups\"", + /// \""ec2:DescribeNetworkInterfaces\"", + /// \""ec2:CreateNetworkInterface\"", + /// \""ec2:CreateNetworkInterfacePermission\"", + /// \""ec2:DeleteNetworkInterface\"" /// ], - /// ""Resource"": [ - /// ""*"" + /// \""Resource\"": [ + /// \""*\"" /// ] /// }} /// ] diff --git a/sdk/dotnet/Kinesis/ResourcePolicy.cs b/sdk/dotnet/Kinesis/ResourcePolicy.cs index 7f7084a7331..1ca532a0907 100644 --- a/sdk/dotnet/Kinesis/ResourcePolicy.cs +++ b/sdk/dotnet/Kinesis/ResourcePolicy.cs @@ -27,21 +27,21 @@ namespace Pulumi.Aws.Kinesis /// { /// ResourceArn = exampleAwsKinesisStream.Arn, /// Policy = @$"{{ - /// ""Version"": ""2012-10-17"", - /// ""Id"": ""writePolicy"", - /// ""Statement"": [{{ - /// ""Sid"": ""writestatement"", - /// ""Effect"": ""Allow"", - /// ""Principal"": {{ - /// ""AWS"": ""123456789456"" + /// \""Version\"": \""2012-10-17\"", + /// \""Id\"": \""writePolicy\"", + /// \""Statement\"": [{{ + /// \""Sid\"": \""writestatement\"", + /// \""Effect\"": \""Allow\"", + /// \""Principal\"": {{ + /// \""AWS\"": \""123456789456\"" /// }}, - /// ""Action"": [ - /// ""kinesis:DescribeStreamSummary"", - /// ""kinesis:ListShards"", - /// ""kinesis:PutRecord"", - /// ""kinesis:PutRecords"" + /// \""Action\"": [ + /// \""kinesis:DescribeStreamSummary\"", + /// \""kinesis:ListShards\"", + /// \""kinesis:PutRecord\"", + /// \""kinesis:PutRecords\"" /// ], - /// ""Resource"": ""{exampleAwsKinesisStream.Arn}"" + /// \""Resource\"": \""{exampleAwsKinesisStream.Arn}\"" /// }}] /// }} /// ", diff --git a/sdk/dotnet/Kms/Ciphertext.cs b/sdk/dotnet/Kms/Ciphertext.cs index 1f628899f99..c6214497e83 100644 --- a/sdk/dotnet/Kms/Ciphertext.cs +++ b/sdk/dotnet/Kms/Ciphertext.cs @@ -35,8 +35,8 @@ namespace Pulumi.Aws.Kms /// { /// KeyId = oauthConfig.KeyId, /// Plaintext = @"{ - /// ""client_id"": ""e587dbae22222f55da22"", - /// ""client_secret"": ""8289575d00000ace55e1815ec13673955721b8a5"" + /// \""client_id\"": \""e587dbae22222f55da22\"", + /// \""client_secret\"": \""8289575d00000ace55e1815ec13673955721b8a5\"" /// } /// ", /// }); diff --git a/sdk/dotnet/Kms/GetCipherText.cs b/sdk/dotnet/Kms/GetCipherText.cs index 7be1baff6e6..f6f5e7eec14 100644 --- a/sdk/dotnet/Kms/GetCipherText.cs +++ b/sdk/dotnet/Kms/GetCipherText.cs @@ -37,8 +37,8 @@ public static class GetCipherText /// { /// KeyId = oauthConfig.KeyId, /// Plaintext = @"{ - /// ""client_id"": ""e587dbae22222f55da22"", - /// ""client_secret"": ""8289575d00000ace55e1815ec13673955721b8a5"" + /// \""client_id\"": \""e587dbae22222f55da22\"", + /// \""client_secret\"": \""8289575d00000ace55e1815ec13673955721b8a5\"" /// } /// ", /// }); @@ -75,8 +75,8 @@ public static Task InvokeAsync(GetCipherTextArgs args, Invo /// { /// KeyId = oauthConfig.KeyId, /// Plaintext = @"{ - /// ""client_id"": ""e587dbae22222f55da22"", - /// ""client_secret"": ""8289575d00000ace55e1815ec13673955721b8a5"" + /// \""client_id\"": \""e587dbae22222f55da22\"", + /// \""client_secret\"": \""8289575d00000ace55e1815ec13673955721b8a5\"" /// } /// ", /// }); @@ -113,8 +113,8 @@ public static Output Invoke(GetCipherTextInvokeArgs args, I /// { /// KeyId = oauthConfig.KeyId, /// Plaintext = @"{ - /// ""client_id"": ""e587dbae22222f55da22"", - /// ""client_secret"": ""8289575d00000ace55e1815ec13673955721b8a5"" + /// \""client_id\"": \""e587dbae22222f55da22\"", + /// \""client_secret\"": \""8289575d00000ace55e1815ec13673955721b8a5\"" /// } /// ", /// }); diff --git a/sdk/dotnet/Lambda/GetCodeSigningConfig.cs b/sdk/dotnet/Lambda/GetCodeSigningConfig.cs index 68c98cd7658..c5e5863ecda 100644 --- a/sdk/dotnet/Lambda/GetCodeSigningConfig.cs +++ b/sdk/dotnet/Lambda/GetCodeSigningConfig.cs @@ -80,6 +80,60 @@ public static class GetCodeSigningConfig /// }); /// ``` /// + /// ### Validate Signing Profiles + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using System.Threading.Tasks; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(async() => + /// { + /// var example = await Aws.Lambda.GetCodeSigningConfig.InvokeAsync(new() + /// { + /// Arn = codeSigningConfigArn, + /// }); + /// + /// var allowedProfiles = example.AllowedPublishers[0]?.SigningProfileVersionArns; + /// + /// var requiredProfile = "arn:aws:signer:us-west-2:123456789012:/signing-profiles/MyProfile"; + /// + /// var profileAllowed = (await Std.Contains.InvokeAsync(new() + /// { + /// Input = allowedProfiles, + /// Element = requiredProfile, + /// })).Result; + /// + /// // Conditional resource creation based on signing profile validation + /// var conditional = new List<Aws.Lambda.Function>(); + /// for (var rangeIndex = 0; rangeIndex < profileAllowed ? 1 : 0; rangeIndex++) + /// { + /// var range = new { Value = rangeIndex }; + /// conditional.Add(new Aws.Lambda.Function($"conditional-{range.Value}", new() + /// { + /// Code = new FileArchive("function.zip"), + /// Name = "conditional-function", + /// Role = lambdaRole.Arn, + /// Handler = "index.handler", + /// Runtime = Aws.Lambda.Runtime.Python3d12, + /// CodeSigningConfigArn = example.Arn, + /// })); + /// } + /// return new Dictionary<string, object?> + /// { + /// ["deploymentStatus"] = + /// { + /// { "profileAllowed", profileAllowed }, + /// { "functionCreated", profileAllowed }, + /// { "message", profileAllowed ? "Function deployed with valid signing profile" : "Deployment blocked - signing profile not allowed" }, + /// }, + /// }; + /// }); + /// ``` + /// /// ### Multi-Environment Configuration /// /// ```csharp @@ -197,6 +251,60 @@ public static Task InvokeAsync(GetCodeSigningConfigA /// }); /// ``` /// + /// ### Validate Signing Profiles + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using System.Threading.Tasks; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(async() => + /// { + /// var example = await Aws.Lambda.GetCodeSigningConfig.InvokeAsync(new() + /// { + /// Arn = codeSigningConfigArn, + /// }); + /// + /// var allowedProfiles = example.AllowedPublishers[0]?.SigningProfileVersionArns; + /// + /// var requiredProfile = "arn:aws:signer:us-west-2:123456789012:/signing-profiles/MyProfile"; + /// + /// var profileAllowed = (await Std.Contains.InvokeAsync(new() + /// { + /// Input = allowedProfiles, + /// Element = requiredProfile, + /// })).Result; + /// + /// // Conditional resource creation based on signing profile validation + /// var conditional = new List<Aws.Lambda.Function>(); + /// for (var rangeIndex = 0; rangeIndex < profileAllowed ? 1 : 0; rangeIndex++) + /// { + /// var range = new { Value = rangeIndex }; + /// conditional.Add(new Aws.Lambda.Function($"conditional-{range.Value}", new() + /// { + /// Code = new FileArchive("function.zip"), + /// Name = "conditional-function", + /// Role = lambdaRole.Arn, + /// Handler = "index.handler", + /// Runtime = Aws.Lambda.Runtime.Python3d12, + /// CodeSigningConfigArn = example.Arn, + /// })); + /// } + /// return new Dictionary<string, object?> + /// { + /// ["deploymentStatus"] = + /// { + /// { "profileAllowed", profileAllowed }, + /// { "functionCreated", profileAllowed }, + /// { "message", profileAllowed ? "Function deployed with valid signing profile" : "Deployment blocked - signing profile not allowed" }, + /// }, + /// }; + /// }); + /// ``` + /// /// ### Multi-Environment Configuration /// /// ```csharp @@ -314,6 +422,60 @@ public static Output Invoke(GetCodeSigningConfigInvo /// }); /// ``` /// + /// ### Validate Signing Profiles + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using System.Threading.Tasks; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(async() => + /// { + /// var example = await Aws.Lambda.GetCodeSigningConfig.InvokeAsync(new() + /// { + /// Arn = codeSigningConfigArn, + /// }); + /// + /// var allowedProfiles = example.AllowedPublishers[0]?.SigningProfileVersionArns; + /// + /// var requiredProfile = "arn:aws:signer:us-west-2:123456789012:/signing-profiles/MyProfile"; + /// + /// var profileAllowed = (await Std.Contains.InvokeAsync(new() + /// { + /// Input = allowedProfiles, + /// Element = requiredProfile, + /// })).Result; + /// + /// // Conditional resource creation based on signing profile validation + /// var conditional = new List<Aws.Lambda.Function>(); + /// for (var rangeIndex = 0; rangeIndex < profileAllowed ? 1 : 0; rangeIndex++) + /// { + /// var range = new { Value = rangeIndex }; + /// conditional.Add(new Aws.Lambda.Function($"conditional-{range.Value}", new() + /// { + /// Code = new FileArchive("function.zip"), + /// Name = "conditional-function", + /// Role = lambdaRole.Arn, + /// Handler = "index.handler", + /// Runtime = Aws.Lambda.Runtime.Python3d12, + /// CodeSigningConfigArn = example.Arn, + /// })); + /// } + /// return new Dictionary<string, object?> + /// { + /// ["deploymentStatus"] = + /// { + /// { "profileAllowed", profileAllowed }, + /// { "functionCreated", profileAllowed }, + /// { "message", profileAllowed ? "Function deployed with valid signing profile" : "Deployment blocked - signing profile not allowed" }, + /// }, + /// }; + /// }); + /// ``` + /// /// ### Multi-Environment Configuration /// /// ```csharp diff --git a/sdk/dotnet/Lambda/GetInvocation.cs b/sdk/dotnet/Lambda/GetInvocation.cs index f8cbd99cfd4..6d8c38457fd 100644 --- a/sdk/dotnet/Lambda/GetInvocation.cs +++ b/sdk/dotnet/Lambda/GetInvocation.cs @@ -21,6 +21,82 @@ public static class GetInvocation /// > **Note:** If you get a `KMSAccessDeniedException: Lambda was unable to decrypt the environment variables because KMS access was denied` error when invoking a Lambda function with environment variables, the IAM role associated with the function may have been deleted and recreated after the function was created. You can fix the problem two ways: 1) updating the function's role to another role and then updating it back again to the recreated role. (When you create a function, Lambda grants permissions on the KMS key to the function's IAM role. If the IAM role is recreated, the grant is no longer valid. Changing the function's role or recreating the function causes Lambda to update the grant.) /// /// ## Example Usage + /// + /// ### Basic Invocation + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using System.Text.Json; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Lambda.GetInvocation.Invoke(new() + /// { + /// FunctionName = exampleAwsLambdaFunction.FunctionName, + /// Input = JsonSerializer.Serialize(new Dictionary<string, object?> + /// { + /// ["operation"] = "getStatus", + /// ["id"] = "123456", + /// }), + /// }); + /// + /// return new Dictionary<string, object?> + /// { + /// ["result"] = Std.Jsondecode.Invoke(new() + /// { + /// Input = example.Apply(getInvocationResult => getInvocationResult.Result), + /// }).Apply(invoke => invoke.Result), + /// }; + /// }); + /// ``` + /// + /// ### Dynamic Resource Configuration + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using System.Text.Json; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// // Get resource configuration from Lambda + /// var resourceConfig = Aws.Lambda.GetInvocation.Invoke(new() + /// { + /// FunctionName = "resource-config-generator", + /// Qualifier = "production", + /// Input = JsonSerializer.Serialize(new Dictionary<string, object?> + /// { + /// ["environment"] = environment, + /// ["region"] = current.Region, + /// ["service"] = "api", + /// }), + /// }); + /// + /// var config = Std.Jsondecode.Invoke(new() + /// { + /// Input = resourceConfig.Apply(getInvocationResult => getInvocationResult.Result), + /// }).Apply(invoke => invoke.Result); + /// + /// // Use dynamic configuration + /// var example = new Aws.ElastiCache.Cluster("example", new() + /// { + /// ClusterId = config?.Cache?.ClusterId, + /// Engine = config?.Cache?.Engine, + /// NodeType = config?.Cache?.NodeType, + /// NumCacheNodes = config?.Cache?.Nodes, + /// ParameterGroupName = config?.Cache?.ParameterGroup, + /// Tags = config?.Tags, + /// }); + /// + /// }); + /// ``` /// public static Task InvokeAsync(GetInvocationArgs args, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.InvokeAsync("aws:lambda/getInvocation:getInvocation", args ?? new GetInvocationArgs(), options.WithDefaults()); @@ -35,6 +111,82 @@ public static Task InvokeAsync(GetInvocationArgs args, Invo /// > **Note:** If you get a `KMSAccessDeniedException: Lambda was unable to decrypt the environment variables because KMS access was denied` error when invoking a Lambda function with environment variables, the IAM role associated with the function may have been deleted and recreated after the function was created. You can fix the problem two ways: 1) updating the function's role to another role and then updating it back again to the recreated role. (When you create a function, Lambda grants permissions on the KMS key to the function's IAM role. If the IAM role is recreated, the grant is no longer valid. Changing the function's role or recreating the function causes Lambda to update the grant.) /// /// ## Example Usage + /// + /// ### Basic Invocation + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using System.Text.Json; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Lambda.GetInvocation.Invoke(new() + /// { + /// FunctionName = exampleAwsLambdaFunction.FunctionName, + /// Input = JsonSerializer.Serialize(new Dictionary<string, object?> + /// { + /// ["operation"] = "getStatus", + /// ["id"] = "123456", + /// }), + /// }); + /// + /// return new Dictionary<string, object?> + /// { + /// ["result"] = Std.Jsondecode.Invoke(new() + /// { + /// Input = example.Apply(getInvocationResult => getInvocationResult.Result), + /// }).Apply(invoke => invoke.Result), + /// }; + /// }); + /// ``` + /// + /// ### Dynamic Resource Configuration + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using System.Text.Json; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// // Get resource configuration from Lambda + /// var resourceConfig = Aws.Lambda.GetInvocation.Invoke(new() + /// { + /// FunctionName = "resource-config-generator", + /// Qualifier = "production", + /// Input = JsonSerializer.Serialize(new Dictionary<string, object?> + /// { + /// ["environment"] = environment, + /// ["region"] = current.Region, + /// ["service"] = "api", + /// }), + /// }); + /// + /// var config = Std.Jsondecode.Invoke(new() + /// { + /// Input = resourceConfig.Apply(getInvocationResult => getInvocationResult.Result), + /// }).Apply(invoke => invoke.Result); + /// + /// // Use dynamic configuration + /// var example = new Aws.ElastiCache.Cluster("example", new() + /// { + /// ClusterId = config?.Cache?.ClusterId, + /// Engine = config?.Cache?.Engine, + /// NodeType = config?.Cache?.NodeType, + /// NumCacheNodes = config?.Cache?.Nodes, + /// ParameterGroupName = config?.Cache?.ParameterGroup, + /// Tags = config?.Tags, + /// }); + /// + /// }); + /// ``` /// public static Output Invoke(GetInvocationInvokeArgs args, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.Invoke("aws:lambda/getInvocation:getInvocation", args ?? new GetInvocationInvokeArgs(), options.WithDefaults()); @@ -49,6 +201,82 @@ public static Output Invoke(GetInvocationInvokeArgs args, I /// > **Note:** If you get a `KMSAccessDeniedException: Lambda was unable to decrypt the environment variables because KMS access was denied` error when invoking a Lambda function with environment variables, the IAM role associated with the function may have been deleted and recreated after the function was created. You can fix the problem two ways: 1) updating the function's role to another role and then updating it back again to the recreated role. (When you create a function, Lambda grants permissions on the KMS key to the function's IAM role. If the IAM role is recreated, the grant is no longer valid. Changing the function's role or recreating the function causes Lambda to update the grant.) /// /// ## Example Usage + /// + /// ### Basic Invocation + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using System.Text.Json; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Lambda.GetInvocation.Invoke(new() + /// { + /// FunctionName = exampleAwsLambdaFunction.FunctionName, + /// Input = JsonSerializer.Serialize(new Dictionary<string, object?> + /// { + /// ["operation"] = "getStatus", + /// ["id"] = "123456", + /// }), + /// }); + /// + /// return new Dictionary<string, object?> + /// { + /// ["result"] = Std.Jsondecode.Invoke(new() + /// { + /// Input = example.Apply(getInvocationResult => getInvocationResult.Result), + /// }).Apply(invoke => invoke.Result), + /// }; + /// }); + /// ``` + /// + /// ### Dynamic Resource Configuration + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using System.Text.Json; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// // Get resource configuration from Lambda + /// var resourceConfig = Aws.Lambda.GetInvocation.Invoke(new() + /// { + /// FunctionName = "resource-config-generator", + /// Qualifier = "production", + /// Input = JsonSerializer.Serialize(new Dictionary<string, object?> + /// { + /// ["environment"] = environment, + /// ["region"] = current.Region, + /// ["service"] = "api", + /// }), + /// }); + /// + /// var config = Std.Jsondecode.Invoke(new() + /// { + /// Input = resourceConfig.Apply(getInvocationResult => getInvocationResult.Result), + /// }).Apply(invoke => invoke.Result); + /// + /// // Use dynamic configuration + /// var example = new Aws.ElastiCache.Cluster("example", new() + /// { + /// ClusterId = config?.Cache?.ClusterId, + /// Engine = config?.Cache?.Engine, + /// NodeType = config?.Cache?.NodeType, + /// NumCacheNodes = config?.Cache?.Nodes, + /// ParameterGroupName = config?.Cache?.ParameterGroup, + /// Tags = config?.Tags, + /// }); + /// + /// }); + /// ``` /// public static Output Invoke(GetInvocationInvokeArgs args, InvokeOutputOptions options) => global::Pulumi.Deployment.Instance.Invoke("aws:lambda/getInvocation:getInvocation", args ?? new GetInvocationInvokeArgs(), options.WithDefaults()); diff --git a/sdk/dotnet/Lambda/Invocation.cs b/sdk/dotnet/Lambda/Invocation.cs index a3a8cfdf32c..d018b56fdfd 100644 --- a/sdk/dotnet/Lambda/Invocation.cs +++ b/sdk/dotnet/Lambda/Invocation.cs @@ -18,6 +18,53 @@ namespace Pulumi.Aws.Lambda /// /// ## Example Usage /// + /// ### Basic Invocation + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using System.Text.Json; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// // Lambda function to invoke + /// var example = new Aws.Lambda.Function("example", new() + /// { + /// Code = new FileArchive("function.zip"), + /// Name = "data_processor", + /// Role = lambdaRole.Arn, + /// Handler = "index.handler", + /// Runtime = Aws.Lambda.Runtime.Python3d12, + /// }); + /// + /// // Invoke the function once during resource creation + /// var exampleInvocation = new Aws.Lambda.Invocation("example", new() + /// { + /// FunctionName = example.Name, + /// Input = JsonSerializer.Serialize(new Dictionary<string, object?> + /// { + /// ["operation"] = "initialize", + /// ["config"] = new Dictionary<string, object?> + /// { + /// ["environment"] = "production", + /// ["debug"] = false, + /// }, + /// }), + /// }); + /// + /// return new Dictionary<string, object?> + /// { + /// ["initializationResult"] = Std.Jsondecode.Invoke(new() + /// { + /// Input = exampleInvocation.Result, + /// }).Apply(invoke => invoke.Result?.Status), + /// }; + /// }); + /// ``` + /// /// ### Dynamic Invocation with Triggers /// /// ```csharp diff --git a/sdk/dotnet/M2/Application.cs b/sdk/dotnet/M2/Application.cs index 1004dda4957..95f6ab3d3b9 100644 --- a/sdk/dotnet/M2/Application.cs +++ b/sdk/dotnet/M2/Application.cs @@ -31,28 +31,28 @@ namespace Pulumi.Aws.M2 /// Definition = new Aws.M2.Inputs.ApplicationDefinitionArgs /// { /// Content = @$"{{ - /// ""definition"": {{ - /// ""listeners"": [ + /// \""definition\"": {{ + /// \""listeners\"": [ /// {{ - /// ""port"": 8196, - /// ""type"": ""http"" + /// \""port\"": 8196, + /// \""type\"": \""http\"" /// }} /// ], - /// ""ba-application"": {{ - /// ""app-location"": ""{s3_source}/PlanetsDemo-v1.zip"" + /// \""ba-application\"": {{ + /// \""app-location\"": \""{s3_source}/PlanetsDemo-v1.zip\"" /// }} /// }}, - /// ""source-locations"": [ + /// \""source-locations\"": [ /// {{ - /// ""source-id"": ""s3-source"", - /// ""source-type"": ""s3"", - /// ""properties"": {{ - /// ""s3-bucket"": ""example-bucket"", - /// ""s3-key-prefix"": ""v1"" + /// \""source-id\"": \""s3-source\"", + /// \""source-type\"": \""s3\"", + /// \""properties\"": {{ + /// \""s3-bucket\"": \""example-bucket\"", + /// \""s3-key-prefix\"": \""v1\"" /// }} /// }} /// ], - /// ""template-version"": ""2.0"" + /// \""template-version\"": \""2.0\"" /// }} /// /// ", diff --git a/sdk/dotnet/Mq/Configuration.cs b/sdk/dotnet/Mq/Configuration.cs index 1bfe4ee68f1..34985b160cf 100644 --- a/sdk/dotnet/Mq/Configuration.cs +++ b/sdk/dotnet/Mq/Configuration.cs @@ -30,12 +30,12 @@ namespace Pulumi.Aws.Mq /// Name = "example", /// EngineType = "ActiveMQ", /// EngineVersion = "5.17.6", - /// Data = @"<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?> - /// <broker xmlns=""http://activemq.apache.org/schema/core""> + /// Data = @"<?xml version=\""1.0\"" encoding=\""UTF-8\"" standalone=\""yes\""?> + /// <broker xmlns=\""http://activemq.apache.org/schema/core\""> /// <plugins> - /// <forcePersistencyModeBrokerPlugin persistenceFlag=""true""/> + /// <forcePersistencyModeBrokerPlugin persistenceFlag=\""true\""/> /// <statisticsBrokerPlugin/> - /// <timeStampingBrokerPlugin ttlCeiling=""86400000"" zeroExpirationOverride=""86400000""/> + /// <timeStampingBrokerPlugin ttlCeiling=\""86400000\"" zeroExpirationOverride=\""86400000\""/> /// </plugins> /// </broker> /// ", diff --git a/sdk/dotnet/NetworkManager/SiteToSiteVpnAttachment.cs b/sdk/dotnet/NetworkManager/SiteToSiteVpnAttachment.cs index 1857d930ae8..14b709f3501 100644 --- a/sdk/dotnet/NetworkManager/SiteToSiteVpnAttachment.cs +++ b/sdk/dotnet/NetworkManager/SiteToSiteVpnAttachment.cs @@ -33,6 +33,140 @@ namespace Pulumi.Aws.NetworkManager /// }); /// ``` /// + /// ### Full Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using System.Text.Json; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Awscc = Pulumi.Awscc; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var testCustomerGateway = new Aws.Ec2.CustomerGateway("test", new() + /// { + /// BgpAsn = "65000", + /// IpAddress = "172.0.0.1", + /// Type = "ipsec.1", + /// }); + /// + /// var testVpnConnection = new Aws.Ec2.VpnConnection("test", new() + /// { + /// CustomerGatewayId = testCustomerGateway.Id, + /// Type = "ipsec.1", + /// Tags = + /// { + /// { "Name", "test" }, + /// }, + /// }); + /// + /// var testGlobalNetwork = new Aws.NetworkManager.GlobalNetwork("test", new() + /// { + /// Tags = + /// { + /// { "Name", "test" }, + /// }, + /// }); + /// + /// var test = Aws.NetworkManager.GetCoreNetworkPolicyDocument.Invoke(new() + /// { + /// CoreNetworkConfigurations = new[] + /// { + /// new Aws.NetworkManager.Inputs.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationInputArgs + /// { + /// VpnEcmpSupport = false, + /// AsnRanges = new[] + /// { + /// "64512-64555", + /// }, + /// EdgeLocations = new[] + /// { + /// new Aws.NetworkManager.Inputs.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationEdgeLocationInputArgs + /// { + /// Location = current.Region, + /// Asn = "64512", + /// }, + /// }, + /// }, + /// }, + /// Segments = new[] + /// { + /// new Aws.NetworkManager.Inputs.GetCoreNetworkPolicyDocumentSegmentInputArgs + /// { + /// Name = "shared", + /// Description = "SegmentForSharedServices", + /// RequireAttachmentAcceptance = true, + /// }, + /// }, + /// SegmentActions = new[] + /// { + /// new Aws.NetworkManager.Inputs.GetCoreNetworkPolicyDocumentSegmentActionInputArgs + /// { + /// Action = "share", + /// Mode = "attachment-route", + /// Segment = "shared", + /// ShareWiths = new[] + /// { + /// "*", + /// }, + /// }, + /// }, + /// AttachmentPolicies = new[] + /// { + /// new Aws.NetworkManager.Inputs.GetCoreNetworkPolicyDocumentAttachmentPolicyInputArgs + /// { + /// RuleNumber = 1, + /// ConditionLogic = "or", + /// Conditions = new[] + /// { + /// new Aws.NetworkManager.Inputs.GetCoreNetworkPolicyDocumentAttachmentPolicyConditionInputArgs + /// { + /// Type = "tag-value", + /// Operator = "equals", + /// Key = "segment", + /// Value = "shared", + /// }, + /// }, + /// Action = new Aws.NetworkManager.Inputs.GetCoreNetworkPolicyDocumentAttachmentPolicyActionInputArgs + /// { + /// AssociationMethod = "constant", + /// Segment = "shared", + /// }, + /// }, + /// }, + /// }); + /// + /// var testNetworkmanagerCoreNetwork = new Awscc.Index.NetworkmanagerCoreNetwork("test", new() + /// { + /// GlobalNetworkId = testGlobalNetwork.Id, + /// PolicyDocument = JsonSerializer.Serialize(Std.Jsondecode.Invoke(new() + /// { + /// Input = test.Apply(getCoreNetworkPolicyDocumentResult => getCoreNetworkPolicyDocumentResult.Json), + /// }).Result), + /// }); + /// + /// var testSiteToSiteVpnAttachment = new Aws.NetworkManager.SiteToSiteVpnAttachment("test", new() + /// { + /// CoreNetworkId = testNetworkmanagerCoreNetwork.Id, + /// VpnConnectionArn = testVpnConnection.Arn, + /// Tags = + /// { + /// { "segment", "shared" }, + /// }, + /// }); + /// + /// var testAttachmentAccepter = new Aws.NetworkManager.AttachmentAccepter("test", new() + /// { + /// AttachmentId = testSiteToSiteVpnAttachment.Id, + /// AttachmentType = testSiteToSiteVpnAttachment.AttachmentType, + /// }); + /// + /// }); + /// ``` + /// /// ## Import /// /// Using `pulumi import`, import `aws_networkmanager_site_to_site_vpn_attachment` using the attachment ID. For example: diff --git a/sdk/dotnet/OpenSearchIngest/Pipeline.cs b/sdk/dotnet/OpenSearchIngest/Pipeline.cs index cd56e7f7f26..89c1505a4b9 100644 --- a/sdk/dotnet/OpenSearchIngest/Pipeline.cs +++ b/sdk/dotnet/OpenSearchIngest/Pipeline.cs @@ -55,19 +55,19 @@ namespace Pulumi.Aws.OpenSearchIngest /// { /// var arn = values.Item1; /// var current = values.Item2; - /// return @$"version: ""2"" + /// return @$"version: \""2\"" /// example-pipeline: /// source: /// http: - /// path: ""/example"" + /// path: \""/example\"" /// sink: /// - s3: /// aws: - /// sts_role_arn: ""{arn}"" - /// region: ""{current.Apply(getRegionResult => getRegionResult.Region)}"" - /// bucket: ""example"" + /// sts_role_arn: \""{arn}\"" + /// region: \""{current.Apply(getRegionResult => getRegionResult.Region)}\"" + /// bucket: \""example\"" /// threshold: - /// event_collect_timeout: ""60s"" + /// event_collect_timeout: \""60s\"" /// codec: /// ndjson: /// "; diff --git a/sdk/dotnet/Organizations/GetPolicies.cs b/sdk/dotnet/Organizations/GetPolicies.cs index b13e195e728..0b646e98430 100644 --- a/sdk/dotnet/Organizations/GetPolicies.cs +++ b/sdk/dotnet/Organizations/GetPolicies.cs @@ -15,6 +15,30 @@ public static class GetPolicies /// Data source for managing an AWS Organizations Policies. /// /// ## Example Usage + /// + /// ### Basic Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Organizations.GetPolicies.Invoke(new() + /// { + /// Filter = "SERVICE_CONTROL_POLICY", + /// }); + /// + /// var exampleGetPolicy = Std.Toset.Invoke(new() + /// { + /// Input = example.Apply(getPoliciesResult => getPoliciesResult.Ids), + /// }).Apply(invoke => ); + /// + /// }); + /// ``` /// public static Task InvokeAsync(GetPoliciesArgs args, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.InvokeAsync("aws:organizations/getPolicies:getPolicies", args ?? new GetPoliciesArgs(), options.WithDefaults()); @@ -23,6 +47,30 @@ public static Task InvokeAsync(GetPoliciesArgs args, InvokeOp /// Data source for managing an AWS Organizations Policies. /// /// ## Example Usage + /// + /// ### Basic Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Organizations.GetPolicies.Invoke(new() + /// { + /// Filter = "SERVICE_CONTROL_POLICY", + /// }); + /// + /// var exampleGetPolicy = Std.Toset.Invoke(new() + /// { + /// Input = example.Apply(getPoliciesResult => getPoliciesResult.Ids), + /// }).Apply(invoke => ); + /// + /// }); + /// ``` /// public static Output Invoke(GetPoliciesInvokeArgs args, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.Invoke("aws:organizations/getPolicies:getPolicies", args ?? new GetPoliciesInvokeArgs(), options.WithDefaults()); @@ -31,6 +79,30 @@ public static Output Invoke(GetPoliciesInvokeArgs args, Invok /// Data source for managing an AWS Organizations Policies. /// /// ## Example Usage + /// + /// ### Basic Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Organizations.GetPolicies.Invoke(new() + /// { + /// Filter = "SERVICE_CONTROL_POLICY", + /// }); + /// + /// var exampleGetPolicy = Std.Toset.Invoke(new() + /// { + /// Input = example.Apply(getPoliciesResult => getPoliciesResult.Ids), + /// }).Apply(invoke => ); + /// + /// }); + /// ``` /// public static Output Invoke(GetPoliciesInvokeArgs args, InvokeOutputOptions options) => global::Pulumi.Deployment.Instance.Invoke("aws:organizations/getPolicies:getPolicies", args ?? new GetPoliciesInvokeArgs(), options.WithDefaults()); diff --git a/sdk/dotnet/Organizations/GetPoliciesForTarget.cs b/sdk/dotnet/Organizations/GetPoliciesForTarget.cs index 69ef1b21eae..4bbb3bfa41b 100644 --- a/sdk/dotnet/Organizations/GetPoliciesForTarget.cs +++ b/sdk/dotnet/Organizations/GetPoliciesForTarget.cs @@ -15,6 +15,33 @@ public static class GetPoliciesForTarget /// Data source for managing an AWS Organizations Policies For Target. /// /// ## Example Usage + /// + /// ### Basic Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Organizations.GetOrganization.Invoke(); + /// + /// var exampleGetPoliciesForTarget = Aws.Organizations.GetPoliciesForTarget.Invoke(new() + /// { + /// TargetId = example.Apply(getOrganizationResult => getOrganizationResult.Roots[0]?.Id), + /// Filter = "SERVICE_CONTROL_POLICY", + /// }); + /// + /// var exampleGetPolicy = Std.Toset.Invoke(new() + /// { + /// Input = exampleGetPoliciesForTarget.Apply(getPoliciesForTargetResult => getPoliciesForTargetResult.Ids), + /// }).Apply(invoke => ); + /// + /// }); + /// ``` /// public static Task InvokeAsync(GetPoliciesForTargetArgs args, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.InvokeAsync("aws:organizations/getPoliciesForTarget:getPoliciesForTarget", args ?? new GetPoliciesForTargetArgs(), options.WithDefaults()); @@ -23,6 +50,33 @@ public static Task InvokeAsync(GetPoliciesForTargetA /// Data source for managing an AWS Organizations Policies For Target. /// /// ## Example Usage + /// + /// ### Basic Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Organizations.GetOrganization.Invoke(); + /// + /// var exampleGetPoliciesForTarget = Aws.Organizations.GetPoliciesForTarget.Invoke(new() + /// { + /// TargetId = example.Apply(getOrganizationResult => getOrganizationResult.Roots[0]?.Id), + /// Filter = "SERVICE_CONTROL_POLICY", + /// }); + /// + /// var exampleGetPolicy = Std.Toset.Invoke(new() + /// { + /// Input = exampleGetPoliciesForTarget.Apply(getPoliciesForTargetResult => getPoliciesForTargetResult.Ids), + /// }).Apply(invoke => ); + /// + /// }); + /// ``` /// public static Output Invoke(GetPoliciesForTargetInvokeArgs args, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.Invoke("aws:organizations/getPoliciesForTarget:getPoliciesForTarget", args ?? new GetPoliciesForTargetInvokeArgs(), options.WithDefaults()); @@ -31,6 +85,33 @@ public static Output Invoke(GetPoliciesForTargetInvo /// Data source for managing an AWS Organizations Policies For Target. /// /// ## Example Usage + /// + /// ### Basic Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Organizations.GetOrganization.Invoke(); + /// + /// var exampleGetPoliciesForTarget = Aws.Organizations.GetPoliciesForTarget.Invoke(new() + /// { + /// TargetId = example.Apply(getOrganizationResult => getOrganizationResult.Roots[0]?.Id), + /// Filter = "SERVICE_CONTROL_POLICY", + /// }); + /// + /// var exampleGetPolicy = Std.Toset.Invoke(new() + /// { + /// Input = exampleGetPoliciesForTarget.Apply(getPoliciesForTargetResult => getPoliciesForTargetResult.Ids), + /// }).Apply(invoke => ); + /// + /// }); + /// ``` /// public static Output Invoke(GetPoliciesForTargetInvokeArgs args, InvokeOutputOptions options) => global::Pulumi.Deployment.Instance.Invoke("aws:organizations/getPoliciesForTarget:getPoliciesForTarget", args ?? new GetPoliciesForTargetInvokeArgs(), options.WithDefaults()); diff --git a/sdk/dotnet/Organizations/ResourcePolicy.cs b/sdk/dotnet/Organizations/ResourcePolicy.cs index 14c62cef25d..d4894f3c95c 100644 --- a/sdk/dotnet/Organizations/ResourcePolicy.cs +++ b/sdk/dotnet/Organizations/ResourcePolicy.cs @@ -25,32 +25,32 @@ namespace Pulumi.Aws.Organizations /// var example = new Aws.Organizations.ResourcePolicy("example", new() /// { /// Content = @"{ - /// ""Version"": ""2012-10-17"", - /// ""Statement"": [ + /// \""Version\"": \""2012-10-17\"", + /// \""Statement\"": [ /// { - /// ""Sid"": ""DelegatingNecessaryDescribeListActions"", - /// ""Effect"": ""Allow"", - /// ""Principal"": { - /// ""AWS"": ""arn:aws:iam::123456789012:root"" + /// \""Sid\"": \""DelegatingNecessaryDescribeListActions\"", + /// \""Effect\"": \""Allow\"", + /// \""Principal\"": { + /// \""AWS\"": \""arn:aws:iam::123456789012:root\"" /// }, - /// ""Action"": [ - /// ""organizations:DescribeOrganization"", - /// ""organizations:DescribeOrganizationalUnit"", - /// ""organizations:DescribeAccount"", - /// ""organizations:DescribePolicy"", - /// ""organizations:DescribeEffectivePolicy"", - /// ""organizations:ListRoots"", - /// ""organizations:ListOrganizationalUnitsForParent"", - /// ""organizations:ListParents"", - /// ""organizations:ListChildren"", - /// ""organizations:ListAccounts"", - /// ""organizations:ListAccountsForParent"", - /// ""organizations:ListPolicies"", - /// ""organizations:ListPoliciesForTarget"", - /// ""organizations:ListTargetsForPolicy"", - /// ""organizations:ListTagsForResource"" + /// \""Action\"": [ + /// \""organizations:DescribeOrganization\"", + /// \""organizations:DescribeOrganizationalUnit\"", + /// \""organizations:DescribeAccount\"", + /// \""organizations:DescribePolicy\"", + /// \""organizations:DescribeEffectivePolicy\"", + /// \""organizations:ListRoots\"", + /// \""organizations:ListOrganizationalUnitsForParent\"", + /// \""organizations:ListParents\"", + /// \""organizations:ListChildren\"", + /// \""organizations:ListAccounts\"", + /// \""organizations:ListAccountsForParent\"", + /// \""organizations:ListPolicies\"", + /// \""organizations:ListPoliciesForTarget\"", + /// \""organizations:ListTargetsForPolicy\"", + /// \""organizations:ListTagsForResource\"" /// ], - /// ""Resource"": ""*"" + /// \""Resource\"": \""*\"" /// } /// ] /// } diff --git a/sdk/dotnet/Rds/CustomDbEngineVersion.cs b/sdk/dotnet/Rds/CustomDbEngineVersion.cs index 9a448e26a22..611955086b3 100644 --- a/sdk/dotnet/Rds/CustomDbEngineVersion.cs +++ b/sdk/dotnet/Rds/CustomDbEngineVersion.cs @@ -37,7 +37,7 @@ namespace Pulumi.Aws.Rds /// EngineVersion = "19.cdb_cev1", /// KmsKeyId = example.Arn, /// Manifest = @" { - /// ""databaseInstallationFileNames"":[""V982063-01.zip""] + /// \t\""databaseInstallationFileNames\"":[\""V982063-01.zip\""] /// } /// ", /// Tags = diff --git a/sdk/dotnet/ResourceGroups/Group.cs b/sdk/dotnet/ResourceGroups/Group.cs index cc6595a0e37..87d783d7248 100644 --- a/sdk/dotnet/ResourceGroups/Group.cs +++ b/sdk/dotnet/ResourceGroups/Group.cs @@ -28,13 +28,13 @@ namespace Pulumi.Aws.ResourceGroups /// ResourceQuery = new Aws.ResourceGroups.Inputs.GroupResourceQueryArgs /// { /// Query = @"{ - /// ""ResourceTypeFilters"": [ - /// ""AWS::EC2::Instance"" + /// \""ResourceTypeFilters\"": [ + /// \""AWS::EC2::Instance\"" /// ], - /// ""TagFilters"": [ + /// \""TagFilters\"": [ /// { - /// ""Key"": ""Stage"", - /// ""Values"": [""Test""] + /// \""Key\"": \""Stage\"", + /// \""Values\"": [\""Test\""] /// } /// ] /// } diff --git a/sdk/dotnet/Route53/TrafficPolicy.cs b/sdk/dotnet/Route53/TrafficPolicy.cs index ff8ea69348e..be397a8e9cd 100644 --- a/sdk/dotnet/Route53/TrafficPolicy.cs +++ b/sdk/dotnet/Route53/TrafficPolicy.cs @@ -27,15 +27,15 @@ namespace Pulumi.Aws.Route53 /// Name = "example", /// Comment = "example comment", /// Document = @"{ - /// ""AWSPolicyFormatVersion"": ""2015-10-01"", - /// ""RecordType"": ""A"", - /// ""Endpoints"": { - /// ""endpoint-start-NkPh"": { - /// ""Type"": ""value"", - /// ""Value"": ""10.0.0.2"" + /// \""AWSPolicyFormatVersion\"": \""2015-10-01\"", + /// \""RecordType\"": \""A\"", + /// \""Endpoints\"": { + /// \""endpoint-start-NkPh\"": { + /// \""Type\"": \""value\"", + /// \""Value\"": \""10.0.0.2\"" /// } /// }, - /// ""StartEndpoint"": ""endpoint-start-NkPh"" + /// \""StartEndpoint\"": \""endpoint-start-NkPh\"" /// } /// ", /// }); diff --git a/sdk/dotnet/S3/BucketWebsiteConfiguration.cs b/sdk/dotnet/S3/BucketWebsiteConfiguration.cs index 7a0796e6de5..31d1654e084 100644 --- a/sdk/dotnet/S3/BucketWebsiteConfiguration.cs +++ b/sdk/dotnet/S3/BucketWebsiteConfiguration.cs @@ -78,11 +78,11 @@ namespace Pulumi.Aws.S3 /// Key = "error.html", /// }, /// RoutingRuleDetails = @"[{ - /// ""Condition"": { - /// ""KeyPrefixEquals"": ""docs/"" + /// \""Condition\"": { + /// \""KeyPrefixEquals\"": \""docs/\"" /// }, - /// ""Redirect"": { - /// ""ReplaceKeyPrefixWith"": """" + /// \""Redirect\"": { + /// \""ReplaceKeyPrefixWith\"": \""\"" /// } /// }] /// ", diff --git a/sdk/dotnet/S3/BucketWebsiteConfigurationV2.cs b/sdk/dotnet/S3/BucketWebsiteConfigurationV2.cs index 60841632b5d..6f8958deb0d 100644 --- a/sdk/dotnet/S3/BucketWebsiteConfigurationV2.cs +++ b/sdk/dotnet/S3/BucketWebsiteConfigurationV2.cs @@ -78,11 +78,11 @@ namespace Pulumi.Aws.S3 /// Key = "error.html", /// }, /// RoutingRuleDetails = @"[{ - /// ""Condition"": { - /// ""KeyPrefixEquals"": ""docs/"" + /// \""Condition\"": { + /// \""KeyPrefixEquals\"": \""docs/\"" /// }, - /// ""Redirect"": { - /// ""ReplaceKeyPrefixWith"": """" + /// \""Redirect\"": { + /// \""ReplaceKeyPrefixWith\"": \""\"" /// } /// }] /// ", diff --git a/sdk/dotnet/S3Control/AccessGrantsInstanceResourcePolicy.cs b/sdk/dotnet/S3Control/AccessGrantsInstanceResourcePolicy.cs index e9ca0f532bd..899bc1a7537 100644 --- a/sdk/dotnet/S3Control/AccessGrantsInstanceResourcePolicy.cs +++ b/sdk/dotnet/S3Control/AccessGrantsInstanceResourcePolicy.cs @@ -28,20 +28,20 @@ namespace Pulumi.Aws.S3Control /// var exampleAccessGrantsInstanceResourcePolicy = new Aws.S3Control.AccessGrantsInstanceResourcePolicy("example", new() /// { /// Policy = example.AccessGrantsInstanceArn.Apply(accessGrantsInstanceArn => @$"{{ - /// ""Version"": ""2012-10-17"", - /// ""Id"": ""S3AccessGrantsPolicy"", - /// ""Statement"": [{{ - /// ""Sid"": ""AllowAccessToS3AccessGrants"", - /// ""Effect"": ""Allow"", - /// ""Principal"": {{ - /// ""AWS"": ""123456789456"" + /// \""Version\"": \""2012-10-17\"", + /// \""Id\"": \""S3AccessGrantsPolicy\"", + /// \""Statement\"": [{{ + /// \""Sid\"": \""AllowAccessToS3AccessGrants\"", + /// \""Effect\"": \""Allow\"", + /// \""Principal\"": {{ + /// \""AWS\"": \""123456789456\"" /// }}, - /// ""Action"": [ - /// ""s3:ListAccessGrants"", - /// ""s3:ListAccessGrantsLocations"", - /// ""s3:GetDataAccess"" + /// \""Action\"": [ + /// \""s3:ListAccessGrants\"", + /// \""s3:ListAccessGrantsLocations\"", + /// \""s3:GetDataAccess\"" /// ], - /// ""Resource"": ""{accessGrantsInstanceArn}"" + /// \""Resource\"": \""{accessGrantsInstanceArn}\"" /// }}] /// }} /// "), diff --git a/sdk/dotnet/Sagemaker/FlowDefinition.cs b/sdk/dotnet/Sagemaker/FlowDefinition.cs index a670bfcada8..8045524b687 100644 --- a/sdk/dotnet/Sagemaker/FlowDefinition.cs +++ b/sdk/dotnet/Sagemaker/FlowDefinition.cs @@ -118,15 +118,15 @@ namespace Pulumi.Aws.Sagemaker /// HumanLoopActivationConditionsConfig = new Aws.Sagemaker.Inputs.FlowDefinitionHumanLoopActivationConfigHumanLoopActivationConditionsConfigArgs /// { /// HumanLoopActivationConditions = @" { - /// ""Conditions"": [ - /// { - /// ""ConditionType"": ""Sampling"", - /// ""ConditionParameters"": { - /// ""RandomSamplingPercentage"": 5 - /// } - /// } - /// ] - /// } + /// \t\t\t\""Conditions\"": [ + /// \t\t\t { + /// \t\t\t\t\""ConditionType\"": \""Sampling\"", + /// \t\t\t\t\""ConditionParameters\"": { + /// \t\t\t\t \""RandomSamplingPercentage\"": 5 + /// \t\t\t\t} + /// \t\t\t } + /// \t\t\t] + /// \t\t} /// ", /// }, /// }, diff --git a/sdk/dotnet/Sagemaker/ModelPackageGroupPolicy.cs b/sdk/dotnet/Sagemaker/ModelPackageGroupPolicy.cs index 273b369382f..e3d81b0e29b 100644 --- a/sdk/dotnet/Sagemaker/ModelPackageGroupPolicy.cs +++ b/sdk/dotnet/Sagemaker/ModelPackageGroupPolicy.cs @@ -14,6 +14,68 @@ namespace Pulumi.Aws.Sagemaker /// /// ## Example Usage /// + /// ### Basic usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using System.Text.Json; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var current = Aws.GetCallerIdentity.Invoke(); + /// + /// var exampleModelPackageGroup = new Aws.Sagemaker.ModelPackageGroup("example", new() + /// { + /// ModelPackageGroupName = "example", + /// }); + /// + /// var example = Aws.Iam.GetPolicyDocument.Invoke(new() + /// { + /// Statements = new[] + /// { + /// new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs + /// { + /// Sid = "AddPermModelPackageGroup", + /// Actions = new[] + /// { + /// "sagemaker:DescribeModelPackage", + /// "sagemaker:ListModelPackages", + /// }, + /// Resources = new[] + /// { + /// exampleModelPackageGroup.Arn, + /// }, + /// Principals = new[] + /// { + /// new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs + /// { + /// Identifiers = new[] + /// { + /// current.Apply(getCallerIdentityResult => getCallerIdentityResult.AccountId), + /// }, + /// Type = "AWS", + /// }, + /// }, + /// }, + /// }, + /// }); + /// + /// var exampleModelPackageGroupPolicy = new Aws.Sagemaker.ModelPackageGroupPolicy("example", new() + /// { + /// ModelPackageGroupName = exampleModelPackageGroup.ModelPackageGroupName, + /// ResourcePolicy = Output.JsonSerialize(Output.Create(Std.Jsondecode.Invoke(new() + /// { + /// Input = example.Apply(getPolicyDocumentResult => getPolicyDocumentResult.Json), + /// }).Apply(invoke => invoke.Result))), + /// }); + /// + /// }); + /// ``` + /// /// ## Import /// /// Using `pulumi import`, import SageMaker AI Model Package Groups using the `name`. For example: diff --git a/sdk/dotnet/SecretsManager/GetSecretVersion.cs b/sdk/dotnet/SecretsManager/GetSecretVersion.cs index 5cad9ce0dbc..a3dcca2b7e9 100644 --- a/sdk/dotnet/SecretsManager/GetSecretVersion.cs +++ b/sdk/dotnet/SecretsManager/GetSecretVersion.cs @@ -54,6 +54,28 @@ public static class GetSecretVersion /// /// }); /// ``` + /// + /// ### Handling Key-Value Secret Strings in JSON + /// + /// Reading key-value pairs from JSON back into a native map + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// return new Dictionary<string, object?> + /// { + /// ["example"] = Std.Jsondecode.Invoke(new() + /// { + /// Input = exampleAwsSecretsmanagerSecretVersion.SecretString, + /// }).Apply(invoke => invoke.Result?.Key1), + /// }; + /// }); + /// ``` /// public static Task InvokeAsync(GetSecretVersionArgs args, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.InvokeAsync("aws:secretsmanager/getSecretVersion:getSecretVersion", args ?? new GetSecretVersionArgs(), options.WithDefaults()); @@ -101,6 +123,28 @@ public static Task InvokeAsync(GetSecretVersionArgs args /// /// }); /// ``` + /// + /// ### Handling Key-Value Secret Strings in JSON + /// + /// Reading key-value pairs from JSON back into a native map + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// return new Dictionary<string, object?> + /// { + /// ["example"] = Std.Jsondecode.Invoke(new() + /// { + /// Input = exampleAwsSecretsmanagerSecretVersion.SecretString, + /// }).Apply(invoke => invoke.Result?.Key1), + /// }; + /// }); + /// ``` /// public static Output Invoke(GetSecretVersionInvokeArgs args, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.Invoke("aws:secretsmanager/getSecretVersion:getSecretVersion", args ?? new GetSecretVersionInvokeArgs(), options.WithDefaults()); @@ -148,6 +192,28 @@ public static Output Invoke(GetSecretVersionInvokeArgs a /// /// }); /// ``` + /// + /// ### Handling Key-Value Secret Strings in JSON + /// + /// Reading key-value pairs from JSON back into a native map + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// return new Dictionary<string, object?> + /// { + /// ["example"] = Std.Jsondecode.Invoke(new() + /// { + /// Input = exampleAwsSecretsmanagerSecretVersion.SecretString, + /// }).Apply(invoke => invoke.Result?.Key1), + /// }; + /// }); + /// ``` /// public static Output Invoke(GetSecretVersionInvokeArgs args, InvokeOutputOptions options) => global::Pulumi.Deployment.Instance.Invoke("aws:secretsmanager/getSecretVersion:getSecretVersion", args ?? new GetSecretVersionInvokeArgs(), options.WithDefaults()); diff --git a/sdk/dotnet/SecretsManager/SecretVersion.cs b/sdk/dotnet/SecretsManager/SecretVersion.cs index 45c1ca21085..2de825f7ac3 100644 --- a/sdk/dotnet/SecretsManager/SecretVersion.cs +++ b/sdk/dotnet/SecretsManager/SecretVersion.cs @@ -64,6 +64,46 @@ namespace Pulumi.Aws.SecretsManager /// ``` /// /// Reading key-value pairs from JSON back into a native map + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// return new Dictionary<string, object?> + /// { + /// ["example"] = Std.Jsondecode.Invoke(new() + /// { + /// Input = exampleAwsSecretsmanagerSecretVersion.SecretString, + /// }).Apply(invoke => invoke.Result?.Key1), + /// }; + /// }); + /// ``` + /// + /// ## Import + /// + /// ### Identity Schema + /// + /// #### Required + /// + /// * `secret_id` - (String) ID of the secret. + /// + /// * `version_id` - (String) ID of the secret version. + /// + /// #### Optional + /// + /// * `account_id` (String) AWS Account where this resource is managed. + /// + /// * `region` (String) Region where this resource is managed. + /// + /// Using `pulumi import`, import `aws_secretsmanager_secret_version` using the secret ID and version ID. For example: + /// + /// console + /// + /// % pulumi import aws_secretsmanager_secret_version.example 'arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456|xxxxx-xxxxxxx-xxxxxxx-xxxxx' /// [AwsResourceType("aws:secretsmanager/secretVersion:SecretVersion")] public partial class SecretVersion : global::Pulumi.CustomResource diff --git a/sdk/dotnet/SecurityHub/StandardsControlAssociation.cs b/sdk/dotnet/SecurityHub/StandardsControlAssociation.cs index 35a397d332f..165cdb45b5a 100644 --- a/sdk/dotnet/SecurityHub/StandardsControlAssociation.cs +++ b/sdk/dotnet/SecurityHub/StandardsControlAssociation.cs @@ -45,6 +45,39 @@ namespace Pulumi.Aws.SecurityHub /// /// }); /// ``` + /// + /// ## Disabling security control in all standards + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using System.Threading.Tasks; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(async() => + /// { + /// var example = new Aws.SecurityHub.Account("example"); + /// + /// var iam1 = await Aws.SecurityHub.GetStandardsControlAssociations.InvokeAsync(new() + /// { + /// SecurityControlId = "IAM.1", + /// }); + /// + /// var iam1StandardsControlAssociation = new List<Aws.SecurityHub.StandardsControlAssociation>(); + /// foreach (var range in ) + /// { + /// iam1StandardsControlAssociation.Add(new Aws.SecurityHub.StandardsControlAssociation($"iam_1-{range.Key}", new() + /// { + /// StandardsArn = range.Key, + /// SecurityControlId = iam1.SecurityControlId, + /// AssociationStatus = "DISABLED", + /// UpdatedReason = "Not needed", + /// })); + /// } + /// }); + /// ``` /// [AwsResourceType("aws:securityhub/standardsControlAssociation:StandardsControlAssociation")] public partial class StandardsControlAssociation : global::Pulumi.CustomResource diff --git a/sdk/dotnet/SesV2/EmailIdentityPolicy.cs b/sdk/dotnet/SesV2/EmailIdentityPolicy.cs index 3f67b8c8f37..0d745d36b01 100644 --- a/sdk/dotnet/SesV2/EmailIdentityPolicy.cs +++ b/sdk/dotnet/SesV2/EmailIdentityPolicy.cs @@ -34,22 +34,22 @@ namespace Pulumi.Aws.SesV2 /// EmailIdentity = example.EmailIdentityDetails, /// PolicyName = "example", /// Policy = example.Arn.Apply(arn => @$"{{ - /// ""Id"":""ExampleAuthorizationPolicy"", - /// ""Version"":""2012-10-17"", - /// ""Statement"":[ + /// \""Id\"":\""ExampleAuthorizationPolicy\"", + /// \""Version\"":\""2012-10-17\"", + /// \""Statement\"":[ /// {{ - /// ""Sid"":""AuthorizeIAMUser"", - /// ""Effect"":""Allow"", - /// ""Resource"":""{arn}"", - /// ""Principal"":{{ - /// ""AWS"":[ - /// ""arn:aws:iam::123456789012:user/John"", - /// ""arn:aws:iam::123456789012:user/Jane"" + /// \""Sid\"":\""AuthorizeIAMUser\"", + /// \""Effect\"":\""Allow\"", + /// \""Resource\"":\""{arn}\"", + /// \""Principal\"":{{ + /// \""AWS\"":[ + /// \""arn:aws:iam::123456789012:user/John\"", + /// \""arn:aws:iam::123456789012:user/Jane\"" /// ] /// }}, - /// ""Action"":[ - /// ""ses:DeleteEmailIdentity"", - /// ""ses:PutEmailIdentityDkimSigningAttributes"" + /// \""Action\"":[ + /// \""ses:DeleteEmailIdentity\"", + /// \""ses:PutEmailIdentityDkimSigningAttributes\"" /// ] /// }} /// ] diff --git a/sdk/dotnet/Sfn/StateMachine.cs b/sdk/dotnet/Sfn/StateMachine.cs index 2f94c5de6da..b147e656113 100644 --- a/sdk/dotnet/Sfn/StateMachine.cs +++ b/sdk/dotnet/Sfn/StateMachine.cs @@ -30,13 +30,13 @@ namespace Pulumi.Aws.Sfn /// Name = "my-state-machine", /// RoleArn = iamForSfn.Arn, /// Definition = @$"{{ - /// ""Comment"": ""A Hello World example of the Amazon States Language using an AWS Lambda Function"", - /// ""StartAt"": ""HelloWorld"", - /// ""States"": {{ - /// ""HelloWorld"": {{ - /// ""Type"": ""Task"", - /// ""Resource"": ""{lambda.Arn}"", - /// ""End"": true + /// \""Comment\"": \""A Hello World example of the Amazon States Language using an AWS Lambda Function\"", + /// \""StartAt\"": \""HelloWorld\"", + /// \""States\"": {{ + /// \""HelloWorld\"": {{ + /// \""Type\"": \""Task\"", + /// \""Resource\"": \""{lambda.Arn}\"", + /// \""End\"": true /// }} /// }} /// }} @@ -63,13 +63,13 @@ namespace Pulumi.Aws.Sfn /// RoleArn = iamForSfn.Arn, /// Type = "EXPRESS", /// Definition = @$"{{ - /// ""Comment"": ""A Hello World example of the Amazon States Language using an AWS Lambda Function"", - /// ""StartAt"": ""HelloWorld"", - /// ""States"": {{ - /// ""HelloWorld"": {{ - /// ""Type"": ""Task"", - /// ""Resource"": ""{lambda.Arn}"", - /// ""End"": true + /// \""Comment\"": \""A Hello World example of the Amazon States Language using an AWS Lambda Function\"", + /// \""StartAt\"": \""HelloWorld\"", + /// \""States\"": {{ + /// \""HelloWorld\"": {{ + /// \""Type\"": \""Task\"", + /// \""Resource\"": \""{lambda.Arn}\"", + /// \""End\"": true /// }} /// }} /// }} @@ -97,13 +97,13 @@ namespace Pulumi.Aws.Sfn /// Publish = true, /// Type = "EXPRESS", /// Definition = @$"{{ - /// ""Comment"": ""A Hello World example of the Amazon States Language using an AWS Lambda Function"", - /// ""StartAt"": ""HelloWorld"", - /// ""States"": {{ - /// ""HelloWorld"": {{ - /// ""Type"": ""Task"", - /// ""Resource"": ""{lambda.Arn}"", - /// ""End"": true + /// \""Comment\"": \""A Hello World example of the Amazon States Language using an AWS Lambda Function\"", + /// \""StartAt\"": \""HelloWorld\"", + /// \""States\"": {{ + /// \""HelloWorld\"": {{ + /// \""Type\"": \""Task\"", + /// \""Resource\"": \""{lambda.Arn}\"", + /// \""End\"": true /// }} /// }} /// }} @@ -131,13 +131,13 @@ namespace Pulumi.Aws.Sfn /// Name = "my-state-machine", /// RoleArn = iamForSfn.Arn, /// Definition = @$"{{ - /// ""Comment"": ""A Hello World example of the Amazon States Language using an AWS Lambda Function"", - /// ""StartAt"": ""HelloWorld"", - /// ""States"": {{ - /// ""HelloWorld"": {{ - /// ""Type"": ""Task"", - /// ""Resource"": ""{lambda.Arn}"", - /// ""End"": true + /// \""Comment\"": \""A Hello World example of the Amazon States Language using an AWS Lambda Function\"", + /// \""StartAt\"": \""HelloWorld\"", + /// \""States\"": {{ + /// \""HelloWorld\"": {{ + /// \""Type\"": \""Task\"", + /// \""Resource\"": \""{lambda.Arn}\"", + /// \""End\"": true /// }} /// }} /// }} @@ -171,13 +171,13 @@ namespace Pulumi.Aws.Sfn /// Name = "my-state-machine", /// RoleArn = iamForSfn.Arn, /// Definition = @$"{{ - /// ""Comment"": ""A Hello World example of the Amazon States Language using an AWS Lambda Function"", - /// ""StartAt"": ""HelloWorld"", - /// ""States"": {{ - /// ""HelloWorld"": {{ - /// ""Type"": ""Task"", - /// ""Resource"": ""{lambda.Arn}"", - /// ""End"": true + /// \""Comment\"": \""A Hello World example of the Amazon States Language using an AWS Lambda Function\"", + /// \""StartAt\"": \""HelloWorld\"", + /// \""States\"": {{ + /// \""HelloWorld\"": {{ + /// \""Type\"": \""Task\"", + /// \""Resource\"": \""{lambda.Arn}\"", + /// \""End\"": true /// }} /// }} /// }} diff --git a/sdk/dotnet/Sns/Topic.cs b/sdk/dotnet/Sns/Topic.cs index 5bd7106d96b..3539b3029fb 100644 --- a/sdk/dotnet/Sns/Topic.cs +++ b/sdk/dotnet/Sns/Topic.cs @@ -44,19 +44,19 @@ namespace Pulumi.Aws.Sns /// { /// Name = "user-updates-topic", /// DeliveryPolicy = @"{ - /// ""http"": { - /// ""defaultHealthyRetryPolicy"": { - /// ""minDelayTarget"": 20, - /// ""maxDelayTarget"": 20, - /// ""numRetries"": 3, - /// ""numMaxDelayRetries"": 0, - /// ""numNoDelayRetries"": 0, - /// ""numMinDelayRetries"": 0, - /// ""backoffFunction"": ""linear"" + /// \""http\"": { + /// \""defaultHealthyRetryPolicy\"": { + /// \""minDelayTarget\"": 20, + /// \""maxDelayTarget\"": 20, + /// \""numRetries\"": 3, + /// \""numMaxDelayRetries\"": 0, + /// \""numNoDelayRetries\"": 0, + /// \""numMinDelayRetries\"": 0, + /// \""backoffFunction\"": \""linear\"" /// }, - /// ""disableSubscriptionOverrides"": false, - /// ""defaultThrottlePolicy"": { - /// ""maxReceivesPerSecond"": 1 + /// \""disableSubscriptionOverrides\"": false, + /// \""defaultThrottlePolicy\"": { + /// \""maxReceivesPerSecond\"": 1 /// } /// } /// } diff --git a/sdk/dotnet/Sns/TopicSubscription.cs b/sdk/dotnet/Sns/TopicSubscription.cs index a33f553ca7a..84e2a237df8 100644 --- a/sdk/dotnet/Sns/TopicSubscription.cs +++ b/sdk/dotnet/Sns/TopicSubscription.cs @@ -301,21 +301,21 @@ namespace Pulumi.Aws.Sns /// Endpoint = "https://example.com/endpoint", /// RawMessageDelivery = true, /// DeliveryPolicy = @"{ - /// ""healthyRetryPolicy"": { - /// ""minDelayTarget"": 20, - /// ""maxDelayTarget"": 20, - /// ""numRetries"": 3, - /// ""numMaxDelayRetries"": 0, - /// ""numNoDelayRetries"": 0, - /// ""numMinDelayRetries"": 0, - /// ""backoffFunction"": ""linear"" + /// \""healthyRetryPolicy\"": { + /// \""minDelayTarget\"": 20, + /// \""maxDelayTarget\"": 20, + /// \""numRetries\"": 3, + /// \""numMaxDelayRetries\"": 0, + /// \""numNoDelayRetries\"": 0, + /// \""numMinDelayRetries\"": 0, + /// \""backoffFunction\"": \""linear\"" /// }, - /// ""sicklyRetryPolicy"": null, - /// ""throttlePolicy"": null, - /// ""requestPolicy"": { - /// ""headerContentType"": ""text/plain; application/json"" + /// \""sicklyRetryPolicy\"": null, + /// \""throttlePolicy\"": null, + /// \""requestPolicy\"": { + /// \""headerContentType\"": \""text/plain; application/json\"" /// }, - /// ""guaranteed"": false + /// \""guaranteed\"": false /// } /// ", /// }); diff --git a/sdk/dotnet/Ssm/Association.cs b/sdk/dotnet/Ssm/Association.cs index 0e81d99aee3..a7349875d03 100644 --- a/sdk/dotnet/Ssm/Association.cs +++ b/sdk/dotnet/Ssm/Association.cs @@ -296,7 +296,7 @@ namespace Pulumi.Aws.Ssm /// yum install -y httpd /// systemctl enable httpd /// systemctl start httpd - /// echo ""<h1>Web Server - {prefix}</h1>"" > /var/www/html/index.html + /// echo \""<h1>Web Server - {prefix}</h1>\"" > /var/www/html/index.html /// ", /// }).Apply(invoke => invoke.Result), /// Tags = diff --git a/sdk/dotnet/Ssm/Document.cs b/sdk/dotnet/Ssm/Document.cs index 9feaa6420b3..8ea20cd2126 100644 --- a/sdk/dotnet/Ssm/Document.cs +++ b/sdk/dotnet/Ssm/Document.cs @@ -32,17 +32,17 @@ namespace Pulumi.Aws.Ssm /// Name = "test_document", /// DocumentType = "Command", /// Content = @" { - /// ""schemaVersion"": ""1.2"", - /// ""description"": ""Check ip configuration of a Linux instance."", - /// ""parameters"": { + /// \""schemaVersion\"": \""1.2\"", + /// \""description\"": \""Check ip configuration of a Linux instance.\"", + /// \""parameters\"": { /// /// }, - /// ""runtimeConfig"": { - /// ""aws:runShellScript"": { - /// ""properties"": [ + /// \""runtimeConfig\"": { + /// \""aws:runShellScript\"": { + /// \""properties\"": [ /// { - /// ""id"": ""0.aws:runShellScript"", - /// ""runCommand"": [""ifconfig""] + /// \""id\"": \""0.aws:runShellScript\"", + /// \""runCommand\"": [\""ifconfig\""] /// } /// ] /// } diff --git a/sdk/dotnet/TimestreamQuery/ScheduledQuery.cs b/sdk/dotnet/TimestreamQuery/ScheduledQuery.cs index 7a8d0aa9e6b..ad9dbb879ca 100644 --- a/sdk/dotnet/TimestreamQuery/ScheduledQuery.cs +++ b/sdk/dotnet/TimestreamQuery/ScheduledQuery.cs @@ -33,10 +33,10 @@ namespace Pulumi.Aws.TimestreamQuery /// ExecutionRoleArn = exampleAwsIamRole.Arn, /// Name = exampleAwsTimestreamwriteTable.TableName, /// QueryString = @"SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp, - /// ROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, - /// ROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, - /// ROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, - /// ROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization + /// \tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, + /// \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, + /// \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, + /// \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization /// FROM exampledatabase.exampletable /// WHERE measure_name = 'metrics' AND time > ago(2h) /// GROUP BY region, hostname, az, BIN(time, 15s) @@ -310,10 +310,10 @@ namespace Pulumi.Aws.TimestreamQuery /// ExecutionRoleArn = exampleAwsIamRole.Arn, /// Name = exampleAwsTimestreamwriteTable.TableName, /// QueryString = @"SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp, - /// ROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, - /// ROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, - /// ROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, - /// ROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization + /// \tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, + /// \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, + /// \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, + /// \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization /// FROM exampledatabase.exampletable /// WHERE measure_name = 'metrics' AND time > ago(2h) /// GROUP BY region, hostname, az, BIN(time, 15s) diff --git a/sdk/dotnet/Transfer/SshKey.cs b/sdk/dotnet/Transfer/SshKey.cs index 086f9e6a003..e733965dd7a 100644 --- a/sdk/dotnet/Transfer/SshKey.cs +++ b/sdk/dotnet/Transfer/SshKey.cs @@ -24,7 +24,7 @@ namespace Pulumi.Aws.Transfer /// /// return await Deployment.RunAsync(() => /// { - /// var examplePrivateKey = new Tls.Index.PrivateKey("example", new() + /// var examplePrivateKey = new Tls.PrivateKey("example", new() /// { /// Algorithm = "RSA", /// RsaBits = 4096, diff --git a/sdk/go/aws/acm/certificate.go b/sdk/go/aws/acm/certificate.go index e8f5d8ed138..126cc33ff25 100644 --- a/sdk/go/aws/acm/certificate.go +++ b/sdk/go/aws/acm/certificate.go @@ -86,57 +86,6 @@ import ( // // ### Existing Certificate Body Import // -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/acm" -// "github.com/pulumi/pulumi-tls/sdk/v4/go/tls" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// example, err := tls.NewPrivateKey(ctx, "example", &tls.PrivateKeyArgs{ -// Algorithm: "RSA", -// }) -// if err != nil { -// return err -// } -// exampleSelfSignedCert, err := tls.NewSelfSignedCert(ctx, "example", &tls.SelfSignedCertArgs{ -// KeyAlgorithm: "RSA", -// PrivateKeyPem: example.PrivateKeyPem, -// Subject: []map[string]interface{}{ -// map[string]interface{}{ -// "commonName": "example.com", -// "organization": "ACME Examples, Inc", -// }, -// }, -// ValidityPeriodHours: 12, -// AllowedUses: []string{ -// "key_encipherment", -// "digital_signature", -// "server_auth", -// }, -// }) -// if err != nil { -// return err -// } -// _, err = acm.NewCertificate(ctx, "cert", &acm.CertificateArgs{ -// PrivateKey: example.PrivateKeyPem, -// CertificateBody: exampleSelfSignedCert.CertPem, -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// // ### Referencing domainValidationOptions With forEach Based Resources // // See the `acm.CertificateValidation` resource for a full example of performing DNS validation. diff --git a/sdk/go/aws/acmpca/certificate.go b/sdk/go/aws/acmpca/certificate.go index fd05ac2736a..a112eaf3962 100644 --- a/sdk/go/aws/acmpca/certificate.go +++ b/sdk/go/aws/acmpca/certificate.go @@ -23,67 +23,6 @@ import ( // // ### Basic // -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/acmpca" -// "github.com/pulumi/pulumi-tls/sdk/v4/go/tls" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// exampleCertificateAuthority, err := acmpca.NewCertificateAuthority(ctx, "example", &acmpca.CertificateAuthorityArgs{ -// CertificateAuthorityConfiguration: &acmpca.CertificateAuthorityCertificateAuthorityConfigurationArgs{ -// KeyAlgorithm: pulumi.String("RSA_4096"), -// SigningAlgorithm: pulumi.String("SHA512WITHRSA"), -// Subject: &acmpca.CertificateAuthorityCertificateAuthorityConfigurationSubjectArgs{ -// CommonName: pulumi.String("example.com"), -// }, -// }, -// PermanentDeletionTimeInDays: pulumi.Int(7), -// }) -// if err != nil { -// return err -// } -// key, err := tls.NewPrivateKey(ctx, "key", &tls.PrivateKeyArgs{ -// Algorithm: "RSA", -// }) -// if err != nil { -// return err -// } -// csr, err := tls.NewCertRequest(ctx, "csr", &tls.CertRequestArgs{ -// PrivateKeyPem: key.PrivateKeyPem, -// Subject: []map[string]interface{}{ -// map[string]interface{}{ -// "commonName": "example", -// }, -// }, -// }) -// if err != nil { -// return err -// } -// _, err = acmpca.NewCertificate(ctx, "example", &acmpca.CertificateArgs{ -// CertificateAuthorityArn: exampleCertificateAuthority.Arn, -// CertificateSigningRequest: csr.CertRequestPem, -// SigningAlgorithm: pulumi.String("SHA256WITHRSA"), -// Validity: &acmpca.CertificateValidityArgs{ -// Type: pulumi.String("YEARS"), -// Value: pulumi.String("1"), -// }, -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// // ## Import // // ### Identity Schema diff --git a/sdk/go/aws/amplify/app.go b/sdk/go/aws/amplify/app.go index 561233e154c..1eea1e37bc8 100644 --- a/sdk/go/aws/amplify/app.go +++ b/sdk/go/aws/amplify/app.go @@ -269,7 +269,7 @@ import ( // - key: 'X-Content-Type-Options' // value: 'nosniff' // - key: 'Content-Security-Policy' -// value: "default-src 'self'" +// value: \"default-src 'self'\" // // `), // diff --git a/sdk/go/aws/apigateway/integration.go b/sdk/go/aws/apigateway/integration.go index 94b43807253..f82bea70134 100644 --- a/sdk/go/aws/apigateway/integration.go +++ b/sdk/go/aws/apigateway/integration.go @@ -66,7 +66,7 @@ import ( // "integration.request.header.X-Authorization": pulumi.String("'static'"), // }, // RequestTemplates: pulumi.StringMap{ -// "application/xml": pulumi.String("{\n \"body\" : $input.json('$')\n}\n"), +// "application/xml": pulumi.String("{\n \\\"body\\\" : $input.json('$')\n}\n"), // }, // }) // if err != nil { diff --git a/sdk/go/aws/apigateway/integrationResponse.go b/sdk/go/aws/apigateway/integrationResponse.go index a4c7bed3b93..0b69322d0e3 100644 --- a/sdk/go/aws/apigateway/integrationResponse.go +++ b/sdk/go/aws/apigateway/integrationResponse.go @@ -81,7 +81,7 @@ import ( // ResponseTemplates: pulumi.StringMap{ // "application/xml": pulumi.String(`#set($inputRoot = $input.path('$')) // -// +// // // // $inputRoot.body diff --git a/sdk/go/aws/appsync/function.go b/sdk/go/aws/appsync/function.go index 3987806e782..70d7ae82e47 100644 --- a/sdk/go/aws/appsync/function.go +++ b/sdk/go/aws/appsync/function.go @@ -71,11 +71,11 @@ import ( // DataSource: exampleDataSource.Name, // Name: pulumi.String("example"), // RequestMappingTemplate: pulumi.String(`{ -// "version": "2018-05-29", -// "method": "GET", -// "resourcePath": "/", -// "params":{ -// "headers": $utils.http.copyheaders($ctx.request.headers) +// \"version\": \"2018-05-29\", +// \"method\": \"GET\", +// \"resourcePath\": \"/\", +// \"params\":{ +// \"headers\": $utils.http.copyheaders($ctx.request.headers) // } // } // diff --git a/sdk/go/aws/appsync/graphQLApi.go b/sdk/go/aws/appsync/graphQLApi.go index 2f1e46a1fda..55e34bc1c76 100644 --- a/sdk/go/aws/appsync/graphQLApi.go +++ b/sdk/go/aws/appsync/graphQLApi.go @@ -223,8 +223,9 @@ import ( // AuthenticationType: pulumi.String("AWS_IAM"), // Name: pulumi.String("example"), // Schema: pulumi.String(`schema { -// query: Query -// } +// +// \tquery: Query +// } // // type Query { // test: Int diff --git a/sdk/go/aws/appsync/resolver.go b/sdk/go/aws/appsync/resolver.go index 0f02a49f670..84661dab0f6 100644 --- a/sdk/go/aws/appsync/resolver.go +++ b/sdk/go/aws/appsync/resolver.go @@ -32,23 +32,23 @@ import ( // AuthenticationType: pulumi.String("API_KEY"), // Name: pulumi.String("tf-example"), // Schema: pulumi.String(`type Mutation { -// putPost(id: ID!, title: String!): Post -// } // -// type Post { -// id: ID! -// title: String! -// } +// \tputPost(id: ID!, title: String!): Post +// } // -// type Query { -// singlePost(id: ID!): Post -// } +// type Post { +// \tid: ID! +// \ttitle: String! +// } // -// schema { -// query: Query -// mutation: Mutation -// } +// type Query { +// \tsinglePost(id: ID!): Post +// } // +// schema { +// \tquery: Query +// \tmutation: Mutation +// } // `), // // }) @@ -73,11 +73,11 @@ import ( // Type: pulumi.String("Query"), // DataSource: testDataSource.Name, // RequestTemplate: pulumi.String(`{ -// "version": "2018-05-29", -// "method": "GET", -// "resourcePath": "/", -// "params":{ -// "headers": $utils.http.copyheaders($ctx.request.headers) +// \"version\": \"2018-05-29\", +// \"method\": \"GET\", +// \"resourcePath\": \"/\", +// \"params\":{ +// \"headers\": $utils.http.copyheaders($ctx.request.headers) // } // } // diff --git a/sdk/go/aws/autoscaling/tag.go b/sdk/go/aws/autoscaling/tag.go index 8d35a810cd1..c1859ae4580 100644 --- a/sdk/go/aws/autoscaling/tag.go +++ b/sdk/go/aws/autoscaling/tag.go @@ -18,6 +18,8 @@ import ( // // > **NOTE:** This tagging resource does not use the provider `ignoreTags` configuration. // +// ## Example Usage +// // ## Import // // Using `pulumi import`, import `aws_autoscaling_group_tag` using the ASG name and key, separated by a comma (`,`). For example: diff --git a/sdk/go/aws/autoscalingplans/scalingPlan.go b/sdk/go/aws/autoscalingplans/scalingPlan.go index e14ed641060..855a76a00d6 100644 --- a/sdk/go/aws/autoscalingplans/scalingPlan.go +++ b/sdk/go/aws/autoscalingplans/scalingPlan.go @@ -21,6 +21,190 @@ import ( // // ## Example Usage // +// ### Basic Dynamic Scaling +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws" +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/autoscaling" +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/autoscalingplans" +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// available, err := aws.GetAvailabilityZones(ctx, &aws.GetAvailabilityZonesArgs{}, nil) +// if err != nil { +// return err +// } +// example, err := autoscaling.NewGroup(ctx, "example", &autoscaling.GroupArgs{ +// NamePrefix: pulumi.String("example"), +// LaunchConfiguration: pulumi.Any(exampleAwsLaunchConfiguration.Name), +// AvailabilityZones: pulumi.StringArray{ +// pulumi.String(available.Names[0]), +// }, +// MinSize: pulumi.Int(0), +// MaxSize: pulumi.Int(3), +// Tags: autoscaling.GroupTagArray{ +// &autoscaling.GroupTagArgs{ +// Key: pulumi.String("application"), +// Value: pulumi.String("example"), +// PropagateAtLaunch: pulumi.Bool(true), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// invokeFormat, err := std.Format(ctx, &std.FormatArgs{ +// Input: "autoScalingGroup/%s", +// Args: pulumi.StringArray{ +// example.Name, +// }, +// }, nil) +// if err != nil { +// return err +// } +// _, err = autoscalingplans.NewScalingPlan(ctx, "example", &autoscalingplans.ScalingPlanArgs{ +// Name: pulumi.String("example-dynamic-cost-optimization"), +// ApplicationSource: &autoscalingplans.ScalingPlanApplicationSourceArgs{ +// TagFilters: autoscalingplans.ScalingPlanApplicationSourceTagFilterArray{ +// &autoscalingplans.ScalingPlanApplicationSourceTagFilterArgs{ +// Key: pulumi.String("application"), +// Values: pulumi.StringArray{ +// pulumi.String("example"), +// }, +// }, +// }, +// }, +// ScalingInstructions: autoscalingplans.ScalingPlanScalingInstructionArray{ +// &autoscalingplans.ScalingPlanScalingInstructionArgs{ +// MaxCapacity: pulumi.Int(3), +// MinCapacity: pulumi.Int(0), +// ResourceId: pulumi.String(invokeFormat.Result), +// ScalableDimension: pulumi.String("autoscaling:autoScalingGroup:DesiredCapacity"), +// ServiceNamespace: pulumi.String("autoscaling"), +// TargetTrackingConfigurations: autoscalingplans.ScalingPlanScalingInstructionTargetTrackingConfigurationArray{ +// &autoscalingplans.ScalingPlanScalingInstructionTargetTrackingConfigurationArgs{ +// PredefinedScalingMetricSpecification: &autoscalingplans.ScalingPlanScalingInstructionTargetTrackingConfigurationPredefinedScalingMetricSpecificationArgs{ +// PredefinedScalingMetricType: pulumi.String("ASGAverageCPUUtilization"), +// }, +// TargetValue: pulumi.Float64(70), +// }, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Basic Predictive Scaling +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws" +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/autoscaling" +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/autoscalingplans" +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// available, err := aws.GetAvailabilityZones(ctx, &aws.GetAvailabilityZonesArgs{}, nil) +// if err != nil { +// return err +// } +// example, err := autoscaling.NewGroup(ctx, "example", &autoscaling.GroupArgs{ +// NamePrefix: pulumi.String("example"), +// LaunchConfiguration: pulumi.Any(exampleAwsLaunchConfiguration.Name), +// AvailabilityZones: pulumi.StringArray{ +// pulumi.String(available.Names[0]), +// }, +// MinSize: pulumi.Int(0), +// MaxSize: pulumi.Int(3), +// Tags: autoscaling.GroupTagArray{ +// &autoscaling.GroupTagArgs{ +// Key: pulumi.String("application"), +// Value: pulumi.String("example"), +// PropagateAtLaunch: pulumi.Bool(true), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// invokeFormat, err := std.Format(ctx, &std.FormatArgs{ +// Input: "autoScalingGroup/%s", +// Args: pulumi.StringArray{ +// example.Name, +// }, +// }, nil) +// if err != nil { +// return err +// } +// _, err = autoscalingplans.NewScalingPlan(ctx, "example", &autoscalingplans.ScalingPlanArgs{ +// Name: pulumi.String("example-predictive-cost-optimization"), +// ApplicationSource: &autoscalingplans.ScalingPlanApplicationSourceArgs{ +// TagFilters: autoscalingplans.ScalingPlanApplicationSourceTagFilterArray{ +// &autoscalingplans.ScalingPlanApplicationSourceTagFilterArgs{ +// Key: pulumi.String("application"), +// Values: pulumi.StringArray{ +// pulumi.String("example"), +// }, +// }, +// }, +// }, +// ScalingInstructions: autoscalingplans.ScalingPlanScalingInstructionArray{ +// &autoscalingplans.ScalingPlanScalingInstructionArgs{ +// DisableDynamicScaling: pulumi.Bool(true), +// MaxCapacity: pulumi.Int(3), +// MinCapacity: pulumi.Int(0), +// ResourceId: pulumi.String(invokeFormat.Result), +// ScalableDimension: pulumi.String("autoscaling:autoScalingGroup:DesiredCapacity"), +// ServiceNamespace: pulumi.String("autoscaling"), +// TargetTrackingConfigurations: autoscalingplans.ScalingPlanScalingInstructionTargetTrackingConfigurationArray{ +// &autoscalingplans.ScalingPlanScalingInstructionTargetTrackingConfigurationArgs{ +// PredefinedScalingMetricSpecification: &autoscalingplans.ScalingPlanScalingInstructionTargetTrackingConfigurationPredefinedScalingMetricSpecificationArgs{ +// PredefinedScalingMetricType: pulumi.String("ASGAverageCPUUtilization"), +// }, +// TargetValue: pulumi.Float64(70), +// }, +// }, +// PredictiveScalingMaxCapacityBehavior: pulumi.String("SetForecastCapacityToMaxCapacity"), +// PredictiveScalingMode: pulumi.String("ForecastAndScale"), +// PredefinedLoadMetricSpecification: &autoscalingplans.ScalingPlanScalingInstructionPredefinedLoadMetricSpecificationArgs{ +// PredefinedLoadMetricType: pulumi.String("ASGTotalCPUUtilization"), +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// // ## Import // // Using `pulumi import`, import Auto Scaling scaling plans using the `name`. For example: diff --git a/sdk/go/aws/bedrockmodel/invocationLoggingConfiguration.go b/sdk/go/aws/bedrockmodel/invocationLoggingConfiguration.go index 21e1f8ce735..b09ae6a200b 100644 --- a/sdk/go/aws/bedrockmodel/invocationLoggingConfiguration.go +++ b/sdk/go/aws/bedrockmodel/invocationLoggingConfiguration.go @@ -50,25 +50,25 @@ import ( // Bucket: example.Bucket, // Policy: example.Arn.ApplyT(func(arn string) (string, error) { // return fmt.Sprintf(`{ -// "Version": "2012-10-17", -// "Statement": [ +// \"Version\": \"2012-10-17\", +// \"Statement\": [ // { -// "Effect": "Allow", -// "Principal": { -// "Service": "bedrock.amazonaws.com" +// \"Effect\": \"Allow\", +// \"Principal\": { +// \"Service\": \"bedrock.amazonaws.com\" // }, -// "Action": [ -// "s3:*" +// \"Action\": [ +// \"s3:*\" // ], -// "Resource": [ -// "%v/*" +// \"Resource\": [ +// \"%v/*\" // ], -// "Condition": { -// "StringEquals": { -// "aws:SourceAccount": "%v" +// \"Condition\": { +// \"StringEquals\": { +// \"aws:SourceAccount\": \"%v\" // }, -// "ArnLike": { -// "aws:SourceArn": "arn:aws:bedrock:us-east-1:%v:*" +// \"ArnLike\": { +// \"aws:SourceArn\": \"arn:aws:bedrock:us-east-1:%v:*\" // } // } // } diff --git a/sdk/go/aws/cfg/organizationCustomPolicyRule.go b/sdk/go/aws/cfg/organizationCustomPolicyRule.go index 893b48242a5..0334bb14397 100644 --- a/sdk/go/aws/cfg/organizationCustomPolicyRule.go +++ b/sdk/go/aws/cfg/organizationCustomPolicyRule.go @@ -39,16 +39,16 @@ import ( // // rule tableisactive when // -// resourceType == "AWS::DynamoDB::Table" { +// resourceType == \"AWS::DynamoDB::Table\" { // configuration.tableStatus == %status // } // // rule checkcompliance when // -// resourceType == "AWS::DynamoDB::Table" +// resourceType == \"AWS::DynamoDB::Table\" // tableisactive { // let pitr = supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus -// %pitr == "ENABLED" +// %pitr == \"ENABLED\" // } // // `), diff --git a/sdk/go/aws/cfg/rule.go b/sdk/go/aws/cfg/rule.go index bdf090013c0..4da7f93f66e 100644 --- a/sdk/go/aws/cfg/rule.go +++ b/sdk/go/aws/cfg/rule.go @@ -189,17 +189,17 @@ import ( // }, // CustomPolicyDetails: &cfg.RuleSourceCustomPolicyDetailsArgs{ // PolicyRuntime: pulumi.String("guard-2.x.x"), -// PolicyText: pulumi.String(` rule tableisactive when -// resourceType == "AWS::DynamoDB::Table" { -// configuration.tableStatus == ['ACTIVE'] -// } -// -// rule checkcompliance when -// resourceType == "AWS::DynamoDB::Table" -// tableisactive { -// supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == "ENABLED" -// } -// +// PolicyText: pulumi.String(`\t rule tableisactive when +// +// \t\t resourceType == \"AWS::DynamoDB::Table\" { +// \t\t configuration.tableStatus == ['ACTIVE'] +// \t } +// \t +// \t rule checkcompliance when +// \t\t resourceType == \"AWS::DynamoDB::Table\" +// \t\t tableisactive { +// \t\t\t supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == \"ENABLED\" +// \t } // `), // // }, diff --git a/sdk/go/aws/cloudwatch/eventTarget.go b/sdk/go/aws/cloudwatch/eventTarget.go index 1166326df1e..fdac6b28ab7 100644 --- a/sdk/go/aws/cloudwatch/eventTarget.go +++ b/sdk/go/aws/cloudwatch/eventTarget.go @@ -595,7 +595,7 @@ import ( // "instance": pulumi.String("$.detail.instance"), // "status": pulumi.String("$.detail.status"), // }, -// InputTemplate: pulumi.String("{\n \"instance_id\": ,\n \"instance_status\": \n}\n"), +// InputTemplate: pulumi.String("{\n \\\"instance_id\\\": ,\n \\\"instance_status\\\": \n}\n"), // }, // }) // if err != nil { @@ -861,7 +861,7 @@ import ( // InputPaths: pulumi.StringMap{ // "input": pulumi.String("$.detail.input"), // }, -// InputTemplate: pulumi.String(" {\n \"input\": \n }\n"), +// InputTemplate: pulumi.String(" {\n \\\"input\\\": \n }\n"), // }, // AppsyncTarget: &cloudwatch.EventTargetAppsyncTargetArgs{ // GraphqlOperation: pulumi.String("mutation TestMutation($input:MutationInput!){testMutation(input: $input) {test}}"), diff --git a/sdk/go/aws/cloudwatch/metricAlarm.go b/sdk/go/aws/cloudwatch/metricAlarm.go index 563ed52d442..3f14dcbe365 100644 --- a/sdk/go/aws/cloudwatch/metricAlarm.go +++ b/sdk/go/aws/cloudwatch/metricAlarm.go @@ -249,7 +249,7 @@ import ( // Expression: pulumi.String(`SELECT // MAX(DBLoadRelativeToNumVCPUs) // -// FROM SCHEMA("AWS/RDS", DBInstanceIdentifier) +// FROM SCHEMA(\"AWS/RDS\", DBInstanceIdentifier) // WHERE DBInstanceIdentifier != 'example-rds-instance' // GROUP BY DBInstanceIdentifier // ORDER BY MIN() ASC diff --git a/sdk/go/aws/cognito/identityPoolProviderPrincipalTag.go b/sdk/go/aws/cognito/identityPoolProviderPrincipalTag.go index 3cd08f2419a..7ecce49f9eb 100644 --- a/sdk/go/aws/cognito/identityPoolProviderPrincipalTag.go +++ b/sdk/go/aws/cognito/identityPoolProviderPrincipalTag.go @@ -14,6 +14,77 @@ import ( // Provides an AWS Cognito Identity Principal Mapping. // +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cognito" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := cognito.NewUserPool(ctx, "example", &cognito.UserPoolArgs{ +// Name: pulumi.String("user pool"), +// AutoVerifiedAttributes: pulumi.StringArray{ +// pulumi.String("email"), +// }, +// }) +// if err != nil { +// return err +// } +// invokeCompact, err := std.Compact(ctx, &std.CompactArgs{ +// Input: []string{ +// "COGNITO", +// }, +// }, nil) +// if err != nil { +// return err +// } +// exampleUserPoolClient, err := cognito.NewUserPoolClient(ctx, "example", &cognito.UserPoolClientArgs{ +// Name: pulumi.String("client"), +// UserPoolId: example.ID(), +// SupportedIdentityProviders: pulumi.StringArray(invokeCompact.Result), +// }) +// if err != nil { +// return err +// } +// exampleIdentityPool, err := cognito.NewIdentityPool(ctx, "example", &cognito.IdentityPoolArgs{ +// IdentityPoolName: pulumi.String("identity pool"), +// AllowUnauthenticatedIdentities: pulumi.Bool(false), +// CognitoIdentityProviders: cognito.IdentityPoolCognitoIdentityProviderArray{ +// &cognito.IdentityPoolCognitoIdentityProviderArgs{ +// ClientId: exampleUserPoolClient.ID(), +// ProviderName: example.Endpoint, +// ServerSideTokenCheck: pulumi.Bool(false), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// _, err = cognito.NewIdentityPoolProviderPrincipalTag(ctx, "example", &cognito.IdentityPoolProviderPrincipalTagArgs{ +// IdentityPoolId: exampleIdentityPool.ID(), +// IdentityProviderName: example.Endpoint, +// UseDefaults: pulumi.Bool(false), +// PrincipalTags: pulumi.StringMap{ +// "test": pulumi.String("value"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// // ## Import // // Using `pulumi import`, import Cognito Identity Pool Roles Attachment using the Identity Pool ID and provider name. For example: diff --git a/sdk/go/aws/datazone/formType.go b/sdk/go/aws/datazone/formType.go index e594821f086..7c162da4834 100644 --- a/sdk/go/aws/datazone/formType.go +++ b/sdk/go/aws/datazone/formType.go @@ -127,18 +127,18 @@ import ( // OwningProjectIdentifier: testProject.ID(), // Status: pulumi.String("DISABLED"), // Model: &datazone.FormTypeModelArgs{ -// Smithy: pulumi.String(` structure SageMakerModelFormType { -// @required -// @amazon.datazone#searchable -// modelName: String +// Smithy: pulumi.String(`\tstructure SageMakerModelFormType { // -// @required -// modelArn: String +// \t\t\t@required +// \t\t\t@amazon.datazone#searchable +// \t\t\tmodelName: String // -// @required -// creationTime: String -// } +// \t\t\t@required +// \t\t\tmodelArn: String // +// \t\t\t@required +// \t\t\tcreationTime: String +// \t\t\t} // `), // // }, diff --git a/sdk/go/aws/dms/replicationConfig.go b/sdk/go/aws/dms/replicationConfig.go index c4dd86c88e7..4b41afca448 100644 --- a/sdk/go/aws/dms/replicationConfig.go +++ b/sdk/go/aws/dms/replicationConfig.go @@ -36,7 +36,7 @@ import ( // ReplicationType: pulumi.String("cdc"), // SourceEndpointArn: pulumi.Any(source.EndpointArn), // TargetEndpointArn: pulumi.Any(target.EndpointArn), -// TableMappings: pulumi.String(" {\n \"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"1\",\"rule-action\":\"include\",\"object-locator\":{\"schema-name\":\"%%\",\"table-name\":\"%%\"}}]\n }\n"), +// TableMappings: pulumi.String(" {\n \\\"rules\\\":[{\\\"rule-type\\\":\\\"selection\\\",\\\"rule-id\\\":\\\"1\\\",\\\"rule-name\\\":\\\"1\\\",\\\"rule-action\\\":\\\"include\\\",\\\"object-locator\\\":{\\\"schema-name\\\":\\\"%%\\\",\\\"table-name\\\":\\\"%%\\\"}}]\n }\n"), // StartReplication: pulumi.Bool(true), // ComputeConfig: &dms.ReplicationConfigComputeConfigArgs{ // ReplicationSubnetGroupId: pulumi.Any(_default.ReplicationSubnetGroupId), diff --git a/sdk/go/aws/dynamodb/getTableItem.go b/sdk/go/aws/dynamodb/getTableItem.go index a69ca9fcdb3..1b2e0e4c661 100644 --- a/sdk/go/aws/dynamodb/getTableItem.go +++ b/sdk/go/aws/dynamodb/getTableItem.go @@ -35,7 +35,7 @@ import ( // "#P": "Percentile", // }, // ProjectionExpression: pulumi.StringRef("#P"), -// Key: "{\n \"hashKey\": {\"S\": \"example\"}\n}\n", +// Key: "{\n\\t\\\"hashKey\\\": {\\\"S\\\": \\\"example\\\"}\n}\n", // }, nil) // if err != nil { // return err diff --git a/sdk/go/aws/dynamodb/tableItem.go b/sdk/go/aws/dynamodb/tableItem.go index 3e4bfcb3fd6..c8eb6e82bbd 100644 --- a/sdk/go/aws/dynamodb/tableItem.go +++ b/sdk/go/aws/dynamodb/tableItem.go @@ -51,11 +51,11 @@ import ( // TableName: exampleTable.Name, // HashKey: exampleTable.HashKey, // Item: pulumi.String(`{ -// "exampleHashKey": {"S": "something"}, -// "one": {"N": "11111"}, -// "two": {"N": "22222"}, -// "three": {"N": "33333"}, -// "four": {"N": "44444"} +// \"exampleHashKey\": {\"S\": \"something\"}, +// \"one\": {\"N\": \"11111\"}, +// \"two\": {\"N\": \"22222\"}, +// \"three\": {\"N\": \"33333\"}, +// \"four\": {\"N\": \"44444\"} // } // // `), diff --git a/sdk/go/aws/ec2/getSubnets.go b/sdk/go/aws/ec2/getSubnets.go index 47fd1ebeb73..4187484dba8 100644 --- a/sdk/go/aws/ec2/getSubnets.go +++ b/sdk/go/aws/ec2/getSubnets.go @@ -12,6 +12,61 @@ import ( ) // This resource can be useful for getting back a set of subnet IDs. +// +// ## Example Usage +// +// The following shows outputting all CIDR blocks for every subnet ID in a VPC. +// +// The following example retrieves a set of all subnets in a VPC with a custom +// tag of `Tier` set to a value of "Private" so that the `ec2.Instance` resource +// can loop through the subnets, putting instances across availability zones. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// private, err := ec2.GetSubnets(ctx, &ec2.GetSubnetsArgs{ +// Filters: []ec2.GetSubnetsFilter{ +// { +// Name: "vpc-id", +// Values: interface{}{ +// vpcId, +// }, +// }, +// }, +// Tags: map[string]interface{}{ +// "Tier": "Private", +// }, +// }, nil); +// if err != nil { +// return err +// } +// var app []*ec2.Instance +// for key0, val0 := range interface{}(std.Toset(ctx, &std.TosetArgs{ +// Input: private.Ids, +// }, nil).Result) { +// __res, err := ec2.NewInstance(ctx, fmt.Sprintf("app-%v", key0), &ec2.InstanceArgs{ +// Ami: pulumi.Any(ami), +// InstanceType: pulumi.String(ec2.InstanceType_T2_Micro), +// SubnetId: pulumi.Any(val0), +// }) +// if err != nil { +// return err +// } +// app = append(app, __res) +// } +// return nil +// }) +// } +// ``` func GetSubnets(ctx *pulumi.Context, args *GetSubnetsArgs, opts ...pulumi.InvokeOption) (*GetSubnetsResult, error) { opts = internal.PkgInvokeDefaultOpts(opts) var rv GetSubnetsResult diff --git a/sdk/go/aws/ec2/securityGroup.go b/sdk/go/aws/ec2/securityGroup.go index 370cfdf29fb..83d4b5597cc 100644 --- a/sdk/go/aws/ec2/securityGroup.go +++ b/sdk/go/aws/ec2/securityGroup.go @@ -292,7 +292,7 @@ import ( // _, err = local.NewCommand(ctx, "exampleProvisioner0", &local.CommandArgs{ // Create: "true", // Update: "true", -// Delete: fmt.Sprintf(" ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters \"Name=tag:Name,Values=%v\" --query \"VpcEndpoints[0].VpcEndpointId\" --output text` &&\n aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${ENDPOINT_ID} --add-security-group-ids %v --remove-security-group-ids %v\n", tags.Workaround1, tags.Workaround2, id), +// Delete: fmt.Sprintf(" ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters \\\"Name=tag:Name,Values=%v\\\" --query \\\"VpcEndpoints[0].VpcEndpointId\\\" --output text` &&\n aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${ENDPOINT_ID} --add-security-group-ids %v --remove-security-group-ids %v\n", tags.Workaround1, tags.Workaround2, id), // }, pulumi.DependsOn([]pulumi.Resource{ // example, // })) @@ -308,7 +308,7 @@ import ( // } // exampleResource, err := null.NewResource(ctx, "example", &null.ResourceArgs{ // Triggers: pulumi.StringMap{ -// "rerun_upon_change_of": pulumi.String(invokeJoin.Result), +// "rerunUponChangeOf": pulumi.String(invokeJoin.Result), // }, // }) // if err != nil { diff --git a/sdk/go/aws/ecr/lifecyclePolicy.go b/sdk/go/aws/ecr/lifecyclePolicy.go index 3e4b20b83f6..0e625df4f77 100644 --- a/sdk/go/aws/ecr/lifecyclePolicy.go +++ b/sdk/go/aws/ecr/lifecyclePolicy.go @@ -43,18 +43,18 @@ import ( // _, err = ecr.NewLifecyclePolicy(ctx, "example", &ecr.LifecyclePolicyArgs{ // Repository: example.Name, // Policy: pulumi.Any(`{ -// "rules": [ +// \"rules\": [ // { -// "rulePriority": 1, -// "description": "Expire images older than 14 days", -// "selection": { -// "tagStatus": "untagged", -// "countType": "sinceImagePushed", -// "countUnit": "days", -// "countNumber": 14 +// \"rulePriority\": 1, +// \"description\": \"Expire images older than 14 days\", +// \"selection\": { +// \"tagStatus\": \"untagged\", +// \"countType\": \"sinceImagePushed\", +// \"countUnit\": \"days\", +// \"countNumber\": 14 // }, -// "action": { -// "type": "expire" +// \"action\": { +// \"type\": \"expire\" // } // } // ] @@ -95,18 +95,18 @@ import ( // _, err = ecr.NewLifecyclePolicy(ctx, "example", &ecr.LifecyclePolicyArgs{ // Repository: example.Name, // Policy: pulumi.Any(`{ -// "rules": [ +// \"rules\": [ // { -// "rulePriority": 1, -// "description": "Keep last 30 images", -// "selection": { -// "tagStatus": "tagged", -// "tagPrefixList": ["v"], -// "countType": "imageCountMoreThan", -// "countNumber": 30 +// \"rulePriority\": 1, +// \"description\": \"Keep last 30 images\", +// \"selection\": { +// \"tagStatus\": \"tagged\", +// \"tagPrefixList\": [\"v\"], +// \"countType\": \"imageCountMoreThan\", +// \"countNumber\": 30 // }, -// "action": { -// "type": "expire" +// \"action\": { +// \"type\": \"expire\" // } // } // ] diff --git a/sdk/go/aws/ecr/repositoryCreationTemplate.go b/sdk/go/aws/ecr/repositoryCreationTemplate.go index 6eacf14e6c5..a4e615dceaa 100644 --- a/sdk/go/aws/ecr/repositoryCreationTemplate.go +++ b/sdk/go/aws/ecr/repositoryCreationTemplate.go @@ -79,18 +79,18 @@ import ( // }, // RepositoryPolicy: pulumi.String(example.Json), // LifecyclePolicy: pulumi.String(`{ -// "rules": [ +// \"rules\": [ // { -// "rulePriority": 1, -// "description": "Expire images older than 14 days", -// "selection": { -// "tagStatus": "untagged", -// "countType": "sinceImagePushed", -// "countUnit": "days", -// "countNumber": 14 +// \"rulePriority\": 1, +// \"description\": \"Expire images older than 14 days\", +// \"selection\": { +// \"tagStatus\": \"untagged\", +// \"countType\": \"sinceImagePushed\", +// \"countUnit\": \"days\", +// \"countNumber\": 14 // }, -// "action": { -// "type": "expire" +// \"action\": { +// \"type\": \"expire\" // } // } // ] diff --git a/sdk/go/aws/ecs/getTaskDefinition.go b/sdk/go/aws/ecs/getTaskDefinition.go index 261a4241c21..c0bb0184263 100644 --- a/sdk/go/aws/ecs/getTaskDefinition.go +++ b/sdk/go/aws/ecs/getTaskDefinition.go @@ -32,16 +32,16 @@ import ( // Family: pulumi.String("mongodb"), // ContainerDefinitions: pulumi.String(`[ // { -// "cpu": 128, -// "environment": [{ -// "name": "SECRET", -// "value": "KEY" +// \"cpu\": 128, +// \"environment\": [{ +// \"name\": \"SECRET\", +// \"value\": \"KEY\" // }], -// "essential": true, -// "image": "mongo:latest", -// "memory": 128, -// "memoryReservation": 64, -// "name": "mongodb" +// \"essential\": true, +// \"image\": \"mongo:latest\", +// \"memory\": 128, +// \"memoryReservation\": 64, +// \"name\": \"mongodb\" // } // // ] diff --git a/sdk/go/aws/eks/getClusters.go b/sdk/go/aws/eks/getClusters.go index 5a65e4f96f8..66dd3e895b3 100644 --- a/sdk/go/aws/eks/getClusters.go +++ b/sdk/go/aws/eks/getClusters.go @@ -12,6 +12,8 @@ import ( ) // Retrieve EKS Clusters list +// +// ## Example Usage func GetClusters(ctx *pulumi.Context, args *GetClustersArgs, opts ...pulumi.InvokeOption) (*GetClustersResult, error) { opts = internal.PkgInvokeDefaultOpts(opts) var rv GetClustersResult diff --git a/sdk/go/aws/elasticsearch/domain.go b/sdk/go/aws/elasticsearch/domain.go index f4f893ceaa7..615fc6e2c06 100644 --- a/sdk/go/aws/elasticsearch/domain.go +++ b/sdk/go/aws/elasticsearch/domain.go @@ -84,15 +84,15 @@ import ( // _, err = elasticsearch.NewDomain(ctx, "example", &elasticsearch.DomainArgs{ // DomainName: pulumi.String(domain), // AccessPolicies: pulumi.Any(fmt.Sprintf(`{ -// "Version": "2012-10-17", -// "Statement": [ +// \"Version\": \"2012-10-17\", +// \"Statement\": [ // { -// "Action": "es:*", -// "Principal": "*", -// "Effect": "Allow", -// "Resource": "arn:aws:es:%v:%v:domain/%v/*", -// "Condition": { -// "IpAddress": {"aws:SourceIp": ["66.193.100.22/32"]} +// \"Action\": \"es:*\", +// \"Principal\": \"*\", +// \"Effect\": \"Allow\", +// \"Resource\": \"arn:aws:es:%v:%v:domain/%v/*\", +// \"Condition\": { +// \"IpAddress\": {\"aws:SourceIp\": [\"66.193.100.22/32\"]} // } // } // ] @@ -284,19 +284,17 @@ import ( // AdvancedOptions: pulumi.StringMap{ // "rest.action.multi.allow_explicit_index": pulumi.String("true"), // }, -// -// AccessPolicies: pulumi.Any(fmt.Sprintf(`{ -// "Version": "2012-10-17", -// "Statement": [ -// { -// "Action": "es:*", -// "Principal": "*", -// "Effect": "Allow", -// "Resource": "arn:aws:es:%v:%v:domain/%v/*" -// } -// ] -// } -// +// AccessPolicies: pulumi.Any(fmt.Sprintf(`{ +// \t\"Version\": \"2012-10-17\", +// \t\"Statement\": [ +// \t\t{ +// \t\t\t\"Action\": \"es:*\", +// \t\t\t\"Principal\": \"*\", +// \t\t\t\"Effect\": \"Allow\", +// \t\t\t\"Resource\": \"arn:aws:es:%v:%v:domain/%v/*\" +// \t\t} +// \t] +// } // `, current.Region, currentGetCallerIdentity.AccountId, domain)), // Tags: pulumi.StringMap{ // "Domain": pulumi.String("TestDomain"), diff --git a/sdk/go/aws/elasticsearch/domainPolicy.go b/sdk/go/aws/elasticsearch/domainPolicy.go index efde02302b7..d8d2492393b 100644 --- a/sdk/go/aws/elasticsearch/domainPolicy.go +++ b/sdk/go/aws/elasticsearch/domainPolicy.go @@ -41,16 +41,16 @@ import ( // DomainName: example.DomainName, // AccessPolicies: example.Arn.ApplyT(func(arn string) (string, error) { // return fmt.Sprintf(`{ -// "Version": "2012-10-17", -// "Statement": [ +// \"Version\": \"2012-10-17\", +// \"Statement\": [ // { -// "Action": "es:*", -// "Principal": "*", -// "Effect": "Allow", -// "Condition": { -// "IpAddress": {"aws:SourceIp": "127.0.0.1/32"} +// \"Action\": \"es:*\", +// \"Principal\": \"*\", +// \"Effect\": \"Allow\", +// \"Condition\": { +// \"IpAddress\": {\"aws:SourceIp\": \"127.0.0.1/32\"} // }, -// "Resource": "%v/*" +// \"Resource\": \"%v/*\" // } // ] // } diff --git a/sdk/go/aws/emr/cluster.go b/sdk/go/aws/emr/cluster.go index 79081cb7c94..6551bf32c6c 100644 --- a/sdk/go/aws/emr/cluster.go +++ b/sdk/go/aws/emr/cluster.go @@ -37,9 +37,9 @@ import ( // pulumi.String("Spark"), // }, // AdditionalInfo: pulumi.String(`{ -// "instanceAwsClientConfiguration": { -// "proxyPort": 8099, -// "proxyHost": "myproxy.example.com" +// \"instanceAwsClientConfiguration\": { +// \"proxyPort\": 8099, +// \"proxyHost\": \"myproxy.example.com\" // } // } // @@ -69,33 +69,33 @@ import ( // BidPrice: pulumi.String("0.30"), // AutoscalingPolicy: pulumi.String(`{ // -// "Constraints": { -// "MinCapacity": 1, -// "MaxCapacity": 2 +// \"Constraints\": { +// \"MinCapacity\": 1, +// \"MaxCapacity\": 2 // }, // -// "Rules": [ +// \"Rules\": [ // // { -// "Name": "ScaleOutMemoryPercentage", -// "Description": "Scale out if YARNMemoryAvailablePercentage is less than 15", -// "Action": { -// "SimpleScalingPolicyConfiguration": { -// "AdjustmentType": "CHANGE_IN_CAPACITY", -// "ScalingAdjustment": 1, -// "CoolDown": 300 +// \"Name\": \"ScaleOutMemoryPercentage\", +// \"Description\": \"Scale out if YARNMemoryAvailablePercentage is less than 15\", +// \"Action\": { +// \"SimpleScalingPolicyConfiguration\": { +// \"AdjustmentType\": \"CHANGE_IN_CAPACITY\", +// \"ScalingAdjustment\": 1, +// \"CoolDown\": 300 // } // }, -// "Trigger": { -// "CloudWatchAlarmDefinition": { -// "ComparisonOperator": "LESS_THAN", -// "EvaluationPeriods": 1, -// "MetricName": "YARNMemoryAvailablePercentage", -// "Namespace": "AWS/ElasticMapReduce", -// "Period": 300, -// "Statistic": "AVERAGE", -// "Threshold": 15.0, -// "Unit": "PERCENT" +// \"Trigger\": { +// \"CloudWatchAlarmDefinition\": { +// \"ComparisonOperator\": \"LESS_THAN\", +// \"EvaluationPeriods\": 1, +// \"MetricName\": \"YARNMemoryAvailablePercentage\", +// \"Namespace\": \"AWS/ElasticMapReduce\", +// \"Period\": 300, +// \"Statistic\": \"AVERAGE\", +// \"Threshold\": 15.0, +// \"Unit\": \"PERCENT\" // } // } // } @@ -122,28 +122,28 @@ import ( // }, // ConfigurationsJson: pulumi.String(` [ // { -// "Classification": "hadoop-env", -// "Configurations": [ +// \"Classification\": \"hadoop-env\", +// \"Configurations\": [ // { -// "Classification": "export", -// "Properties": { -// "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" +// \"Classification\": \"export\", +// \"Properties\": { +// \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" // } // } // ], -// "Properties": {} +// \"Properties\": {} // }, // { -// "Classification": "spark-env", -// "Configurations": [ +// \"Classification\": \"spark-env\", +// \"Configurations\": [ // { -// "Classification": "export", -// "Properties": { -// "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" +// \"Classification\": \"export\", +// \"Properties\": { +// \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" // } // } // ], -// "Properties": {} +// \"Properties\": {} // } // ] // @@ -423,16 +423,16 @@ type Cluster struct { // _, err := emr.NewCluster(ctx, "cluster", &emr.ClusterArgs{ // ConfigurationsJson: pulumi.String(`[ // { - // "Classification": "hadoop-env", - // "Configurations": [ + // \"Classification\": \"hadoop-env\", + // \"Configurations\": [ // { - // "Classification": "export", - // "Properties": { - // "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + // \"Classification\": \"export\", + // \"Properties\": { + // \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" // } // } // ], - // "Properties": {} + // \"Properties\": {} // } // ] // `), @@ -575,16 +575,16 @@ type clusterState struct { // _, err := emr.NewCluster(ctx, "cluster", &emr.ClusterArgs{ // ConfigurationsJson: pulumi.String(`[ // { - // "Classification": "hadoop-env", - // "Configurations": [ + // \"Classification\": \"hadoop-env\", + // \"Configurations\": [ // { - // "Classification": "export", - // "Properties": { - // "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + // \"Classification\": \"export\", + // \"Properties\": { + // \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" // } // } // ], - // "Properties": {} + // \"Properties\": {} // } // ] // `), @@ -692,16 +692,16 @@ type ClusterState struct { // _, err := emr.NewCluster(ctx, "cluster", &emr.ClusterArgs{ // ConfigurationsJson: pulumi.String(`[ // { - // "Classification": "hadoop-env", - // "Configurations": [ + // \"Classification\": \"hadoop-env\", + // \"Configurations\": [ // { - // "Classification": "export", - // "Properties": { - // "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + // \"Classification\": \"export\", + // \"Properties\": { + // \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" // } // } // ], - // "Properties": {} + // \"Properties\": {} // } // ] // `), @@ -810,16 +810,16 @@ type clusterArgs struct { // _, err := emr.NewCluster(ctx, "cluster", &emr.ClusterArgs{ // ConfigurationsJson: pulumi.String(`[ // { - // "Classification": "hadoop-env", - // "Configurations": [ + // \"Classification\": \"hadoop-env\", + // \"Configurations\": [ // { - // "Classification": "export", - // "Properties": { - // "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + // \"Classification\": \"export\", + // \"Properties\": { + // \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" // } // } // ], - // "Properties": {} + // \"Properties\": {} // } // ] // `), @@ -921,16 +921,16 @@ type ClusterArgs struct { // _, err := emr.NewCluster(ctx, "cluster", &emr.ClusterArgs{ // ConfigurationsJson: pulumi.String(`[ // { - // "Classification": "hadoop-env", - // "Configurations": [ + // \"Classification\": \"hadoop-env\", + // \"Configurations\": [ // { - // "Classification": "export", - // "Properties": { - // "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + // \"Classification\": \"export\", + // \"Properties\": { + // \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" // } // } // ], - // "Properties": {} + // \"Properties\": {} // } // ] // `), @@ -1147,16 +1147,16 @@ func (o ClusterOutput) Configurations() pulumi.StringPtrOutput { // ConfigurationsJson: pulumi.String(`[ // // { -// "Classification": "hadoop-env", -// "Configurations": [ +// \"Classification\": \"hadoop-env\", +// \"Configurations\": [ // { -// "Classification": "export", -// "Properties": { -// "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" +// \"Classification\": \"export\", +// \"Properties\": { +// \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" // } // } // ], -// "Properties": {} +// \"Properties\": {} // } // ] // `), diff --git a/sdk/go/aws/emr/instanceGroup.go b/sdk/go/aws/emr/instanceGroup.go index 8720f7e8e38..52b25658ee0 100644 --- a/sdk/go/aws/emr/instanceGroup.go +++ b/sdk/go/aws/emr/instanceGroup.go @@ -79,16 +79,16 @@ type InstanceGroup struct { // _, err := emr.NewInstanceGroup(ctx, "task", &emr.InstanceGroupArgs{ // ConfigurationsJson: pulumi.String(`[ // { - // "Classification": "hadoop-env", - // "Configurations": [ + // \"Classification\": \"hadoop-env\", + // \"Configurations\": [ // { - // "Classification": "export", - // "Properties": { - // "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + // \"Classification\": \"export\", + // \"Properties\": { + // \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" // } // } // ], - // "Properties": {} + // \"Properties\": {} // } // ] // `), @@ -176,16 +176,16 @@ type instanceGroupState struct { // _, err := emr.NewInstanceGroup(ctx, "task", &emr.InstanceGroupArgs{ // ConfigurationsJson: pulumi.String(`[ // { - // "Classification": "hadoop-env", - // "Configurations": [ + // \"Classification\": \"hadoop-env\", + // \"Configurations\": [ // { - // "Classification": "export", - // "Properties": { - // "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + // \"Classification\": \"export\", + // \"Properties\": { + // \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" // } // } // ], - // "Properties": {} + // \"Properties\": {} // } // ] // `), @@ -238,16 +238,16 @@ type InstanceGroupState struct { // _, err := emr.NewInstanceGroup(ctx, "task", &emr.InstanceGroupArgs{ // ConfigurationsJson: pulumi.String(`[ // { - // "Classification": "hadoop-env", - // "Configurations": [ + // \"Classification\": \"hadoop-env\", + // \"Configurations\": [ // { - // "Classification": "export", - // "Properties": { - // "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + // \"Classification\": \"export\", + // \"Properties\": { + // \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" // } // } // ], - // "Properties": {} + // \"Properties\": {} // } // ] // `), @@ -304,16 +304,16 @@ type instanceGroupArgs struct { // _, err := emr.NewInstanceGroup(ctx, "task", &emr.InstanceGroupArgs{ // ConfigurationsJson: pulumi.String(`[ // { - // "Classification": "hadoop-env", - // "Configurations": [ + // \"Classification\": \"hadoop-env\", + // \"Configurations\": [ // { - // "Classification": "export", - // "Properties": { - // "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + // \"Classification\": \"export\", + // \"Properties\": { + // \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" // } // } // ], - // "Properties": {} + // \"Properties\": {} // } // ] // `), @@ -363,16 +363,16 @@ type InstanceGroupArgs struct { // _, err := emr.NewInstanceGroup(ctx, "task", &emr.InstanceGroupArgs{ // ConfigurationsJson: pulumi.String(`[ // { - // "Classification": "hadoop-env", - // "Configurations": [ + // \"Classification\": \"hadoop-env\", + // \"Configurations\": [ // { - // "Classification": "export", - // "Properties": { - // "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + // \"Classification\": \"export\", + // \"Properties\": { + // \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" // } // } // ], - // "Properties": {} + // \"Properties\": {} // } // ] // `), @@ -519,16 +519,16 @@ func (o InstanceGroupOutput) ClusterId() pulumi.StringOutput { // ConfigurationsJson: pulumi.String(`[ // // { -// "Classification": "hadoop-env", -// "Configurations": [ +// \"Classification\": \"hadoop-env\", +// \"Configurations\": [ // { -// "Classification": "export", -// "Properties": { -// "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" +// \"Classification\": \"export\", +// \"Properties\": { +// \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" // } // } // ], -// "Properties": {} +// \"Properties\": {} // } // ] // `), diff --git a/sdk/go/aws/emr/securityConfiguration.go b/sdk/go/aws/emr/securityConfiguration.go index dc628f9e5c6..0f90d87cdab 100644 --- a/sdk/go/aws/emr/securityConfiguration.go +++ b/sdk/go/aws/emr/securityConfiguration.go @@ -31,18 +31,18 @@ import ( // _, err := emr.NewSecurityConfiguration(ctx, "foo", &emr.SecurityConfigurationArgs{ // Name: pulumi.String("emrsc_other"), // Configuration: pulumi.String(`{ -// "EncryptionConfiguration": { -// "AtRestEncryptionConfiguration": { -// "S3EncryptionConfiguration": { -// "EncryptionMode": "SSE-S3" +// \"EncryptionConfiguration\": { +// \"AtRestEncryptionConfiguration\": { +// \"S3EncryptionConfiguration\": { +// \"EncryptionMode\": \"SSE-S3\" // }, -// "LocalDiskEncryptionConfiguration": { -// "EncryptionKeyProviderType": "AwsKms", -// "AwsKmsKey": "arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key" +// \"LocalDiskEncryptionConfiguration\": { +// \"EncryptionKeyProviderType\": \"AwsKms\", +// \"AwsKmsKey\": \"arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key\" // } // }, -// "EnableInTransitEncryption": false, -// "EnableAtRestEncryption": true +// \"EnableInTransitEncryption\": false, +// \"EnableAtRestEncryption\": true // } // } // diff --git a/sdk/go/aws/evidently/segment.go b/sdk/go/aws/evidently/segment.go index 9974d1724c6..7f2e69bd021 100644 --- a/sdk/go/aws/evidently/segment.go +++ b/sdk/go/aws/evidently/segment.go @@ -65,9 +65,9 @@ import ( // _, err := evidently.NewSegment(ctx, "example", &evidently.SegmentArgs{ // Name: pulumi.String("example"), // Pattern: pulumi.String(` { -// "Price": [ +// \"Price\": [ // { -// "numeric": [">",10,"<=",20] +// \"numeric\": [\">\",10,\"<=\",20] // } // ] // } diff --git a/sdk/go/aws/glue/connection.go b/sdk/go/aws/glue/connection.go index de7fb4b04a9..40835e218a0 100644 --- a/sdk/go/aws/glue/connection.go +++ b/sdk/go/aws/glue/connection.go @@ -352,17 +352,21 @@ import ( // tmpJSON0, err := json.Marshal(map[string]interface{}{ // "credentials": std.Base64encode(ctx, map[string]interface{}{ // "input": `{ -// "type": "service_account", -// "project_id": "example-project", -// "private_key_id": "example-key", -// "private_key": "-----BEGIN RSA PRIVATE KEY-----\nREDACTED\n-----END RSA PRIVATE KEY-----", -// "client_email": "example-project@appspot.gserviceaccount.com", -// "client_id": example-client", -// "auth_uri": "https://accounts.google.com/o/oauth2/auth", -// "token_uri": "https://oauth2.googleapis.com/token", -// "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", -// "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com", -// "universe_domain": "googleapis.com" +// \"type\": \"service_account\", +// \"project_id\": \"example-project\", +// \"private_key_id\": \"example-key\", +// \"private_key\": \"-----BEGIN RSA PRIVATE KEY-----\ +// +// REDACTED\ +// -----END RSA PRIVATE KEY-----\", +// +// \"client_email\": \"example-project@appspot.gserviceaccount.com\", +// \"client_id\": example-client\", +// \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\", +// \"token_uri\": \"https://oauth2.googleapis.com/token\", +// \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\", +// \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com\", +// \"universe_domain\": \"googleapis.com\" // } // // `, diff --git a/sdk/go/aws/glue/crawler.go b/sdk/go/aws/glue/crawler.go index c94f6ee2365..8c556c23cdd 100644 --- a/sdk/go/aws/glue/crawler.go +++ b/sdk/go/aws/glue/crawler.go @@ -148,9 +148,9 @@ import ( // DeleteBehavior: pulumi.String("LOG"), // }, // Configuration: pulumi.String(`{ -// "Version":1.0, -// "Grouping": { -// "TableGroupingPolicy": "CombineCompatibleSchemas" +// \"Version\":1.0, +// \"Grouping\": { +// \"TableGroupingPolicy\": \"CombineCompatibleSchemas\" // } // } // diff --git a/sdk/go/aws/imagebuilder/workflow.go b/sdk/go/aws/imagebuilder/workflow.go index a5f56db7978..3b0b3053f96 100644 --- a/sdk/go/aws/imagebuilder/workflow.go +++ b/sdk/go/aws/imagebuilder/workflow.go @@ -51,19 +51,19 @@ import ( // action: LaunchInstance // onFailure: Abort // inputs: -// waitFor: "ssmAgent" +// waitFor: \"ssmAgent\" // // - name: TerminateTestInstance // action: TerminateInstance // onFailure: Continue // inputs: -// instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId" +// instanceId.$: \"$.stepOutputs.LaunchTestInstance.instanceId\" // // - name: WaitForActionAtEnd // action: WaitForAction // if: // booleanEquals: true -// value: "$.parameters.waitForActionAtEnd" +// value: \"$.parameters.waitForActionAtEnd\" // // `), // diff --git a/sdk/go/aws/iot/caCertificate.go b/sdk/go/aws/iot/caCertificate.go index 8b9f9641f57..a599d8f642c 100644 --- a/sdk/go/aws/iot/caCertificate.go +++ b/sdk/go/aws/iot/caCertificate.go @@ -15,94 +15,6 @@ import ( // Creates and manages an AWS IoT CA Certificate. // // ## Example Usage -// -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iot" -// "github.com/pulumi/pulumi-tls/sdk/v4/go/tls" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// caPrivateKey, err := tls.NewPrivateKey(ctx, "ca", &tls.PrivateKeyArgs{ -// Algorithm: "RSA", -// }) -// if err != nil { -// return err -// } -// ca, err := tls.NewSelfSignedCert(ctx, "ca", &tls.SelfSignedCertArgs{ -// PrivateKeyPem: caPrivateKey.PrivateKeyPem, -// Subject: []map[string]interface{}{ -// map[string]interface{}{ -// "commonName": "example.com", -// "organization": "ACME Examples, Inc", -// }, -// }, -// ValidityPeriodHours: 12, -// AllowedUses: []string{ -// "key_encipherment", -// "digital_signature", -// "server_auth", -// }, -// IsCaCertificate: true, -// }) -// if err != nil { -// return err -// } -// verificationPrivateKey, err := tls.NewPrivateKey(ctx, "verification", &tls.PrivateKeyArgs{ -// Algorithm: "RSA", -// }) -// if err != nil { -// return err -// } -// example, err := iot.GetRegistrationCode(ctx, &iot.GetRegistrationCodeArgs{}, nil) -// if err != nil { -// return err -// } -// verification, err := tls.NewCertRequest(ctx, "verification", &tls.CertRequestArgs{ -// PrivateKeyPem: verificationPrivateKey.PrivateKeyPem, -// Subject: []map[string]interface{}{ -// map[string]interface{}{ -// "commonName": example.RegistrationCode, -// }, -// }, -// }) -// if err != nil { -// return err -// } -// verificationLocallySignedCert, err := tls.NewLocallySignedCert(ctx, "verification", &tls.LocallySignedCertArgs{ -// CertRequestPem: verification.CertRequestPem, -// CaPrivateKeyPem: caPrivateKey.PrivateKeyPem, -// CaCertPem: ca.CertPem, -// ValidityPeriodHours: 12, -// AllowedUses: []string{ -// "key_encipherment", -// "digital_signature", -// "server_auth", -// }, -// }) -// if err != nil { -// return err -// } -// _, err = iot.NewCaCertificate(ctx, "example", &iot.CaCertificateArgs{ -// Active: pulumi.Bool(true), -// CaCertificatePem: ca.CertPem, -// VerificationCertificatePem: verificationLocallySignedCert.CertPem, -// AllowAutoRegistration: pulumi.Bool(true), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` type CaCertificate struct { pulumi.CustomResourceState diff --git a/sdk/go/aws/iot/getEndpoint.go b/sdk/go/aws/iot/getEndpoint.go index baf04d254ff..601f3013c18 100644 --- a/sdk/go/aws/iot/getEndpoint.go +++ b/sdk/go/aws/iot/getEndpoint.go @@ -14,6 +14,55 @@ import ( // Returns a unique endpoint specific to the AWS account making the call. // // ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iot" +// "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := iot.GetEndpoint(ctx, &iot.GetEndpointArgs{}, nil) +// if err != nil { +// return err +// } +// _, err = kubernetes.NewPod(ctx, "agent", &kubernetes.PodArgs{ +// Metadata: []map[string]interface{}{ +// map[string]interface{}{ +// "name": "my-device", +// }, +// }, +// Spec: []map[string]interface{}{ +// map[string]interface{}{ +// "container": []map[string]interface{}{ +// map[string]interface{}{ +// "image": "gcr.io/my-project/image-name", +// "name": "image-name", +// "env": []map[string]interface{}{ +// map[string]interface{}{ +// "name": "IOT_ENDPOINT", +// "value": example.EndpointAddress, +// }, +// }, +// }, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` func GetEndpoint(ctx *pulumi.Context, args *GetEndpointArgs, opts ...pulumi.InvokeOption) (*GetEndpointResult, error) { opts = internal.PkgInvokeDefaultOpts(opts) var rv GetEndpointResult diff --git a/sdk/go/aws/iot/getRegistrationCode.go b/sdk/go/aws/iot/getRegistrationCode.go index e098b1c5ee9..7830e6871e4 100644 --- a/sdk/go/aws/iot/getRegistrationCode.go +++ b/sdk/go/aws/iot/getRegistrationCode.go @@ -14,47 +14,6 @@ import ( // Gets a registration code used to register a CA certificate with AWS IoT. // // ## Example Usage -// -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iot" -// "github.com/pulumi/pulumi-tls/sdk/v4/go/tls" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// example, err := iot.GetRegistrationCode(ctx, &iot.GetRegistrationCodeArgs{}, nil) -// if err != nil { -// return err -// } -// verification, err := tls.NewPrivateKey(ctx, "verification", &tls.PrivateKeyArgs{ -// Algorithm: "RSA", -// }) -// if err != nil { -// return err -// } -// _, err = tls.NewCertRequest(ctx, "verification", &tls.CertRequestArgs{ -// KeyAlgorithm: "RSA", -// PrivateKeyPem: verification.PrivateKeyPem, -// Subject: []map[string]interface{}{ -// map[string]interface{}{ -// "commonName": example.RegistrationCode, -// }, -// }, -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` func GetRegistrationCode(ctx *pulumi.Context, args *GetRegistrationCodeArgs, opts ...pulumi.InvokeOption) (*GetRegistrationCodeResult, error) { opts = internal.PkgInvokeDefaultOpts(opts) var rv GetRegistrationCodeResult diff --git a/sdk/go/aws/kinesis/firehoseDeliveryStream.go b/sdk/go/aws/kinesis/firehoseDeliveryStream.go index 58da746d6bd..956421ea7de 100644 --- a/sdk/go/aws/kinesis/firehoseDeliveryStream.go +++ b/sdk/go/aws/kinesis/firehoseDeliveryStream.go @@ -637,32 +637,32 @@ import ( // testClusterArn := _args[0].(string) // testClusterArn1 := _args[1].(string) // return fmt.Sprintf(`{ -// "Version": "2012-10-17", -// "Statement": [ +// \"Version\": \"2012-10-17\", +// \"Statement\": [ // { -// "Effect": "Allow", -// "Action": [ -// "es:*" +// \"Effect\": \"Allow\", +// \"Action\": [ +// \"es:*\" // ], -// "Resource": [ -// "%v", -// "%v/*" +// \"Resource\": [ +// \"%v\", +// \"%v/*\" // ] // }, // { -// "Effect": "Allow", -// "Action": [ -// "ec2:DescribeVpcs", -// "ec2:DescribeVpcAttribute", -// "ec2:DescribeSubnets", -// "ec2:DescribeSecurityGroups", -// "ec2:DescribeNetworkInterfaces", -// "ec2:CreateNetworkInterface", -// "ec2:CreateNetworkInterfacePermission", -// "ec2:DeleteNetworkInterface" +// \"Effect\": \"Allow\", +// \"Action\": [ +// \"ec2:DescribeVpcs\", +// \"ec2:DescribeVpcAttribute\", +// \"ec2:DescribeSubnets\", +// \"ec2:DescribeSecurityGroups\", +// \"ec2:DescribeNetworkInterfaces\", +// \"ec2:CreateNetworkInterface\", +// \"ec2:CreateNetworkInterfacePermission\", +// \"ec2:DeleteNetworkInterface\" // ], -// "Resource": [ -// "*" +// \"Resource\": [ +// \"*\" // ] // } // ] diff --git a/sdk/go/aws/kinesis/resourcePolicy.go b/sdk/go/aws/kinesis/resourcePolicy.go index c4e7e219a7b..b8b2c0e83d3 100644 --- a/sdk/go/aws/kinesis/resourcePolicy.go +++ b/sdk/go/aws/kinesis/resourcePolicy.go @@ -34,21 +34,21 @@ import ( // _, err := kinesis.NewResourcePolicy(ctx, "example", &kinesis.ResourcePolicyArgs{ // ResourceArn: pulumi.Any(exampleAwsKinesisStream.Arn), // Policy: pulumi.Sprintf(`{ -// "Version": "2012-10-17", -// "Id": "writePolicy", -// "Statement": [{ -// "Sid": "writestatement", -// "Effect": "Allow", -// "Principal": { -// "AWS": "123456789456" +// \"Version\": \"2012-10-17\", +// \"Id\": \"writePolicy\", +// \"Statement\": [{ +// \"Sid\": \"writestatement\", +// \"Effect\": \"Allow\", +// \"Principal\": { +// \"AWS\": \"123456789456\" // }, -// "Action": [ -// "kinesis:DescribeStreamSummary", -// "kinesis:ListShards", -// "kinesis:PutRecord", -// "kinesis:PutRecords" +// \"Action\": [ +// \"kinesis:DescribeStreamSummary\", +// \"kinesis:ListShards\", +// \"kinesis:PutRecord\", +// \"kinesis:PutRecords\" // ], -// "Resource": "%v" +// \"Resource\": \"%v\" // }] // } // diff --git a/sdk/go/aws/kms/ciphertext.go b/sdk/go/aws/kms/ciphertext.go index 92b674d63b6..e0010412473 100644 --- a/sdk/go/aws/kms/ciphertext.go +++ b/sdk/go/aws/kms/ciphertext.go @@ -40,7 +40,7 @@ import ( // } // _, err = kms.NewCiphertext(ctx, "oauth", &kms.CiphertextArgs{ // KeyId: oauthConfig.KeyId, -// Plaintext: pulumi.String("{\n \"client_id\": \"e587dbae22222f55da22\",\n \"client_secret\": \"8289575d00000ace55e1815ec13673955721b8a5\"\n}\n"), +// Plaintext: pulumi.String("{\n \\\"client_id\\\": \\\"e587dbae22222f55da22\\\",\n \\\"client_secret\\\": \\\"8289575d00000ace55e1815ec13673955721b8a5\\\"\n}\n"), // }) // if err != nil { // return err diff --git a/sdk/go/aws/kms/getCipherText.go b/sdk/go/aws/kms/getCipherText.go index 3242e646a86..d03dd4697bc 100644 --- a/sdk/go/aws/kms/getCipherText.go +++ b/sdk/go/aws/kms/getCipherText.go @@ -39,7 +39,7 @@ import ( // } // _ = kms.GetCipherTextOutput(ctx, kms.GetCipherTextOutputArgs{ // KeyId: oauthConfig.KeyId, -// Plaintext: pulumi.String("{\n \"client_id\": \"e587dbae22222f55da22\",\n \"client_secret\": \"8289575d00000ace55e1815ec13673955721b8a5\"\n}\n"), +// Plaintext: pulumi.String("{\n \\\"client_id\\\": \\\"e587dbae22222f55da22\\\",\n \\\"client_secret\\\": \\\"8289575d00000ace55e1815ec13673955721b8a5\\\"\n}\n"), // }, nil) // return nil // }) diff --git a/sdk/go/aws/lambda/getCodeSigningConfig.go b/sdk/go/aws/lambda/getCodeSigningConfig.go index 65e97c09d6d..6fbb5f8f27b 100644 --- a/sdk/go/aws/lambda/getCodeSigningConfig.go +++ b/sdk/go/aws/lambda/getCodeSigningConfig.go @@ -91,6 +91,74 @@ import ( // // ``` // +// ### Validate Signing Profiles +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := lambda.LookupCodeSigningConfig(ctx, &lambda.LookupCodeSigningConfigArgs{ +// Arn: codeSigningConfigArn, +// }, nil) +// if err != nil { +// return err +// } +// allowedProfiles := example.AllowedPublishers[0].SigningProfileVersionArns +// requiredProfile := "arn:aws:signer:us-west-2:123456789012:/signing-profiles/MyProfile" +// profileAllowed := std.Contains(ctx, &std.ContainsArgs{ +// Input: allowedProfiles, +// Element: requiredProfile, +// }, nil).Result +// // Conditional resource creation based on signing profile validation +// var tmp0 float64 +// if profileAllowed { +// tmp0 = 1 +// } else { +// tmp0 = 0 +// } +// var conditional []*lambda.Function +// for index := 0; index < tmp0; index++ { +// key0 := index +// _ := index +// __res, err := lambda.NewFunction(ctx, fmt.Sprintf("conditional-%v", key0), &lambda.FunctionArgs{ +// Code: pulumi.NewFileArchive("function.zip"), +// Name: pulumi.String("conditional-function"), +// Role: pulumi.Any(lambdaRole.Arn), +// Handler: pulumi.String("index.handler"), +// Runtime: pulumi.String(lambda.RuntimePython3d12), +// CodeSigningConfigArn: pulumi.String(example.Arn), +// }) +// if err != nil { +// return err +// } +// conditional = append(conditional, __res) +// } +// var tmp1 string +// if profileAllowed { +// tmp1 = "Function deployed with valid signing profile" +// } else { +// tmp1 = "Deployment blocked - signing profile not allowed" +// } +// ctx.Export("deploymentStatus", pulumi.Map{ +// "profileAllowed": profileAllowed, +// "functionCreated": profileAllowed, +// "message": tmp1, +// }) +// return nil +// }) +// } +// +// ``` +// // ### Multi-Environment Configuration // // ```go diff --git a/sdk/go/aws/lambda/getInvocation.go b/sdk/go/aws/lambda/getInvocation.go index f6d33616e15..13e8f71a0fc 100644 --- a/sdk/go/aws/lambda/getInvocation.go +++ b/sdk/go/aws/lambda/getInvocation.go @@ -20,6 +20,104 @@ import ( // > **Note:** If you get a `KMSAccessDeniedException: Lambda was unable to decrypt the environment variables because KMS access was denied` error when invoking a Lambda function with environment variables, the IAM role associated with the function may have been deleted and recreated after the function was created. You can fix the problem two ways: 1) updating the function's role to another role and then updating it back again to the recreated role. (When you create a function, Lambda grants permissions on the KMS key to the function's IAM role. If the IAM role is recreated, the grant is no longer valid. Changing the function's role or recreating the function causes Lambda to update the grant.) // // ## Example Usage +// +// ### Basic Invocation +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "operation": "getStatus", +// "id": "123456", +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// example, err := lambda.LookupInvocation(ctx, &lambda.LookupInvocationArgs{ +// FunctionName: exampleAwsLambdaFunction.FunctionName, +// Input: json0, +// }, nil) +// if err != nil { +// return err +// } +// ctx.Export("result", pulumi.Any(std.Jsondecode(ctx, &std.JsondecodeArgs{ +// Input: example.Result, +// }, nil).Result)) +// return nil +// }) +// } +// +// ``` +// +// ### Dynamic Resource Configuration +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/elasticache" +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "environment": environment, +// "region": current.Region, +// "service": "api", +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// // Get resource configuration from Lambda +// resourceConfig, err := lambda.LookupInvocation(ctx, &lambda.LookupInvocationArgs{ +// FunctionName: "resource-config-generator", +// Qualifier: pulumi.StringRef("production"), +// Input: json0, +// }, nil) +// if err != nil { +// return err +// } +// config := std.Jsondecode(ctx, &std.JsondecodeArgs{ +// Input: resourceConfig.Result, +// }, nil).Result +// // Use dynamic configuration +// _, err = elasticache.NewCluster(ctx, "example", &elasticache.ClusterArgs{ +// ClusterId: pulumi.Any(config.Cache.ClusterId), +// Engine: pulumi.Any(config.Cache.Engine), +// NodeType: pulumi.Any(config.Cache.NodeType), +// NumCacheNodes: pulumi.Any(config.Cache.Nodes), +// ParameterGroupName: pulumi.Any(config.Cache.ParameterGroup), +// Tags: pulumi.Any(config.Tags), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` func LookupInvocation(ctx *pulumi.Context, args *LookupInvocationArgs, opts ...pulumi.InvokeOption) (*LookupInvocationResult, error) { opts = internal.PkgInvokeDefaultOpts(opts) var rv LookupInvocationResult diff --git a/sdk/go/aws/lambda/invocation.go b/sdk/go/aws/lambda/invocation.go index 08db1d893bf..9a5458da9db 100644 --- a/sdk/go/aws/lambda/invocation.go +++ b/sdk/go/aws/lambda/invocation.go @@ -20,6 +20,62 @@ import ( // // ## Example Usage // +// ### Basic Invocation +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// // Lambda function to invoke +// example, err := lambda.NewFunction(ctx, "example", &lambda.FunctionArgs{ +// Code: pulumi.NewFileArchive("function.zip"), +// Name: pulumi.String("data_processor"), +// Role: pulumi.Any(lambdaRole.Arn), +// Handler: pulumi.String("index.handler"), +// Runtime: pulumi.String(lambda.RuntimePython3d12), +// }) +// if err != nil { +// return err +// } +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "operation": "initialize", +// "config": map[string]interface{}{ +// "environment": "production", +// "debug": false, +// }, +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// // Invoke the function once during resource creation +// exampleInvocation, err := lambda.NewInvocation(ctx, "example", &lambda.InvocationArgs{ +// FunctionName: example.Name, +// Input: pulumi.String(json0), +// }) +// if err != nil { +// return err +// } +// ctx.Export("initializationResult", std.JsondecodeOutput(ctx, std.JsondecodeOutputArgs{ +// Input: exampleInvocation.Result, +// }, nil).ApplyT(func(invoke std.JsondecodeResult) (*interface{}, error) { +// return invoke.Result.Status, nil +// }).(pulumi.Interface{}PtrOutput)) +// return nil +// }) +// } +// ``` +// // ### Dynamic Invocation with Triggers // // ```go diff --git a/sdk/go/aws/m2/application.go b/sdk/go/aws/m2/application.go index 18592bb4ff2..d102eb4eeb7 100644 --- a/sdk/go/aws/m2/application.go +++ b/sdk/go/aws/m2/application.go @@ -37,28 +37,28 @@ import ( // EngineType: pulumi.String("bluage"), // Definition: &m2.ApplicationDefinitionArgs{ // Content: pulumi.Sprintf(`{ -// "definition": { -// "listeners": [ +// \"definition\": { +// \"listeners\": [ // { -// "port": 8196, -// "type": "http" +// \"port\": 8196, +// \"type\": \"http\" // } // ], -// "ba-application": { -// "app-location": "%v/PlanetsDemo-v1.zip" +// \"ba-application\": { +// \"app-location\": \"%v/PlanetsDemo-v1.zip\" // } // }, -// "source-locations": [ +// \"source-locations\": [ // { -// "source-id": "s3-source", -// "source-type": "s3", -// "properties": { -// "s3-bucket": "example-bucket", -// "s3-key-prefix": "v1" +// \"source-id\": \"s3-source\", +// \"source-type\": \"s3\", +// \"properties\": { +// \"s3-bucket\": \"example-bucket\", +// \"s3-key-prefix\": \"v1\" // } // } // ], -// "template-version": "2.0" +// \"template-version\": \"2.0\" // } // // `, s3_source), diff --git a/sdk/go/aws/mq/configuration.go b/sdk/go/aws/mq/configuration.go index 724bd04e11e..9a80fcb72c0 100644 --- a/sdk/go/aws/mq/configuration.go +++ b/sdk/go/aws/mq/configuration.go @@ -35,14 +35,14 @@ import ( // Name: pulumi.String("example"), // EngineType: pulumi.String("ActiveMQ"), // EngineVersion: pulumi.String("5.17.6"), -// Data: pulumi.String(` +// Data: pulumi.String(` // -// +// // // -// +// // -// +// // // // diff --git a/sdk/go/aws/networkmanager/siteToSiteVpnAttachment.go b/sdk/go/aws/networkmanager/siteToSiteVpnAttachment.go index afdc7264e4d..315db9e3dd8 100644 --- a/sdk/go/aws/networkmanager/siteToSiteVpnAttachment.go +++ b/sdk/go/aws/networkmanager/siteToSiteVpnAttachment.go @@ -43,6 +43,133 @@ import ( // // ``` // +// ### Full Usage +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2" +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/networkmanager" +// "github.com/pulumi/pulumi-awscc/sdk/go/awscc" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// testCustomerGateway, err := ec2.NewCustomerGateway(ctx, "test", &ec2.CustomerGatewayArgs{ +// BgpAsn: pulumi.String("65000"), +// IpAddress: pulumi.String("172.0.0.1"), +// Type: pulumi.String("ipsec.1"), +// }) +// if err != nil { +// return err +// } +// testVpnConnection, err := ec2.NewVpnConnection(ctx, "test", &ec2.VpnConnectionArgs{ +// CustomerGatewayId: testCustomerGateway.ID(), +// Type: pulumi.String("ipsec.1"), +// Tags: pulumi.StringMap{ +// "Name": pulumi.String("test"), +// }, +// }) +// if err != nil { +// return err +// } +// testGlobalNetwork, err := networkmanager.NewGlobalNetwork(ctx, "test", &networkmanager.GlobalNetworkArgs{ +// Tags: pulumi.StringMap{ +// "Name": pulumi.String("test"), +// }, +// }) +// if err != nil { +// return err +// } +// test, err := networkmanager.GetCoreNetworkPolicyDocument(ctx, &networkmanager.GetCoreNetworkPolicyDocumentArgs{ +// CoreNetworkConfigurations: []networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfiguration{ +// { +// VpnEcmpSupport: pulumi.BoolRef(false), +// AsnRanges: []string{ +// "64512-64555", +// }, +// EdgeLocations: []networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationEdgeLocation{ +// { +// Location: current.Region, +// Asn: pulumi.StringRef("64512"), +// }, +// }, +// }, +// }, +// Segments: []networkmanager.GetCoreNetworkPolicyDocumentSegment{ +// { +// Name: "shared", +// Description: pulumi.StringRef("SegmentForSharedServices"), +// RequireAttachmentAcceptance: pulumi.BoolRef(true), +// }, +// }, +// SegmentActions: []networkmanager.GetCoreNetworkPolicyDocumentSegmentAction{ +// { +// Action: "share", +// Mode: pulumi.StringRef("attachment-route"), +// Segment: "shared", +// ShareWiths: []string{ +// "*", +// }, +// }, +// }, +// AttachmentPolicies: []networkmanager.GetCoreNetworkPolicyDocumentAttachmentPolicy{ +// { +// RuleNumber: 1, +// ConditionLogic: pulumi.StringRef("or"), +// Conditions: []networkmanager.GetCoreNetworkPolicyDocumentAttachmentPolicyCondition{ +// { +// Type: "tag-value", +// Operator: pulumi.StringRef("equals"), +// Key: pulumi.StringRef("segment"), +// Value: pulumi.StringRef("shared"), +// }, +// }, +// Action: { +// AssociationMethod: pulumi.StringRef("constant"), +// Segment: pulumi.StringRef("shared"), +// }, +// }, +// }, +// }, nil); +// if err != nil { +// return err +// } +// testNetworkmanagerCoreNetwork, err := awscc.NewNetworkmanagerCoreNetwork(ctx, "test", &awscc.NetworkmanagerCoreNetworkArgs{ +// GlobalNetworkId: testGlobalNetwork.ID(), +// PolicyDocument: %!v(PANIC=Format method: fatal: An assertion has failed: unlowered function toJSON), +// }) +// if err != nil { +// return err +// } +// testSiteToSiteVpnAttachment, err := networkmanager.NewSiteToSiteVpnAttachment(ctx, "test", &networkmanager.SiteToSiteVpnAttachmentArgs{ +// CoreNetworkId: testNetworkmanagerCoreNetwork.Id, +// VpnConnectionArn: testVpnConnection.Arn, +// Tags: pulumi.StringMap{ +// "segment": pulumi.String("shared"), +// }, +// }) +// if err != nil { +// return err +// } +// _, err = networkmanager.NewAttachmentAccepter(ctx, "test", &networkmanager.AttachmentAccepterArgs{ +// AttachmentId: testSiteToSiteVpnAttachment.ID(), +// AttachmentType: testSiteToSiteVpnAttachment.AttachmentType, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// ``` +// // ## Import // // Using `pulumi import`, import `aws_networkmanager_site_to_site_vpn_attachment` using the attachment ID. For example: diff --git a/sdk/go/aws/opensearchingest/pipeline.go b/sdk/go/aws/opensearchingest/pipeline.go index 91c206e20bf..10954395a88 100644 --- a/sdk/go/aws/opensearchingest/pipeline.go +++ b/sdk/go/aws/opensearchingest/pipeline.go @@ -65,21 +65,21 @@ import ( // _, err = opensearchingest.NewPipeline(ctx, "example", &opensearchingest.PipelineArgs{ // PipelineName: pulumi.String("example"), // PipelineConfigurationBody: example.Arn.ApplyT(func(arn string) (string, error) { -// return fmt.Sprintf(`version: "2" +// return fmt.Sprintf(`version: \"2\" // // example-pipeline: // // source: // http: -// path: "/example" +// path: \"/example\" // sink: // - s3: // aws: -// sts_role_arn: "%v" -// region: "%v" -// bucket: "example" +// sts_role_arn: \"%v\" +// region: \"%v\" +// bucket: \"example\" // threshold: -// event_collect_timeout: "60s" +// event_collect_timeout: \"60s\" // codec: // ndjson: // diff --git a/sdk/go/aws/organizations/getPolicies.go b/sdk/go/aws/organizations/getPolicies.go index aa5ef0aa508..dbd796cb1fd 100644 --- a/sdk/go/aws/organizations/getPolicies.go +++ b/sdk/go/aws/organizations/getPolicies.go @@ -14,6 +14,8 @@ import ( // Data source for managing an AWS Organizations Policies. // // ## Example Usage +// +// ### Basic Usage func GetPolicies(ctx *pulumi.Context, args *GetPoliciesArgs, opts ...pulumi.InvokeOption) (*GetPoliciesResult, error) { opts = internal.PkgInvokeDefaultOpts(opts) var rv GetPoliciesResult diff --git a/sdk/go/aws/organizations/getPoliciesForTarget.go b/sdk/go/aws/organizations/getPoliciesForTarget.go index 9c529e2204e..7de96865dde 100644 --- a/sdk/go/aws/organizations/getPoliciesForTarget.go +++ b/sdk/go/aws/organizations/getPoliciesForTarget.go @@ -14,6 +14,8 @@ import ( // Data source for managing an AWS Organizations Policies For Target. // // ## Example Usage +// +// ### Basic Usage func GetPoliciesForTarget(ctx *pulumi.Context, args *GetPoliciesForTargetArgs, opts ...pulumi.InvokeOption) (*GetPoliciesForTargetResult, error) { opts = internal.PkgInvokeDefaultOpts(opts) var rv GetPoliciesForTargetResult diff --git a/sdk/go/aws/organizations/resourcePolicy.go b/sdk/go/aws/organizations/resourcePolicy.go index 2fbcb5fde8e..ab9aa9743fc 100644 --- a/sdk/go/aws/organizations/resourcePolicy.go +++ b/sdk/go/aws/organizations/resourcePolicy.go @@ -30,32 +30,32 @@ import ( // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := organizations.NewResourcePolicy(ctx, "example", &organizations.ResourcePolicyArgs{ // Content: pulumi.String(`{ -// "Version": "2012-10-17", -// "Statement": [ +// \"Version\": \"2012-10-17\", +// \"Statement\": [ // { -// "Sid": "DelegatingNecessaryDescribeListActions", -// "Effect": "Allow", -// "Principal": { -// "AWS": "arn:aws:iam::123456789012:root" +// \"Sid\": \"DelegatingNecessaryDescribeListActions\", +// \"Effect\": \"Allow\", +// \"Principal\": { +// \"AWS\": \"arn:aws:iam::123456789012:root\" // }, -// "Action": [ -// "organizations:DescribeOrganization", -// "organizations:DescribeOrganizationalUnit", -// "organizations:DescribeAccount", -// "organizations:DescribePolicy", -// "organizations:DescribeEffectivePolicy", -// "organizations:ListRoots", -// "organizations:ListOrganizationalUnitsForParent", -// "organizations:ListParents", -// "organizations:ListChildren", -// "organizations:ListAccounts", -// "organizations:ListAccountsForParent", -// "organizations:ListPolicies", -// "organizations:ListPoliciesForTarget", -// "organizations:ListTargetsForPolicy", -// "organizations:ListTagsForResource" +// \"Action\": [ +// \"organizations:DescribeOrganization\", +// \"organizations:DescribeOrganizationalUnit\", +// \"organizations:DescribeAccount\", +// \"organizations:DescribePolicy\", +// \"organizations:DescribeEffectivePolicy\", +// \"organizations:ListRoots\", +// \"organizations:ListOrganizationalUnitsForParent\", +// \"organizations:ListParents\", +// \"organizations:ListChildren\", +// \"organizations:ListAccounts\", +// \"organizations:ListAccountsForParent\", +// \"organizations:ListPolicies\", +// \"organizations:ListPoliciesForTarget\", +// \"organizations:ListTargetsForPolicy\", +// \"organizations:ListTagsForResource\" // ], -// "Resource": "*" +// \"Resource\": \"*\" // } // ] // } diff --git a/sdk/go/aws/rds/customDbEngineVersion.go b/sdk/go/aws/rds/customDbEngineVersion.go index 6fb582d8232..2cfc483c056 100644 --- a/sdk/go/aws/rds/customDbEngineVersion.go +++ b/sdk/go/aws/rds/customDbEngineVersion.go @@ -43,7 +43,7 @@ import ( // Engine: pulumi.String("custom-oracle-ee-cdb"), // EngineVersion: pulumi.String("19.cdb_cev1"), // KmsKeyId: example.Arn, -// Manifest: pulumi.String(" {\n \"databaseInstallationFileNames\":[\"V982063-01.zip\"]\n }\n"), +// Manifest: pulumi.String(" {\n\\t\\\"databaseInstallationFileNames\\\":[\\\"V982063-01.zip\\\"]\n }\n"), // Tags: pulumi.StringMap{ // "Name": pulumi.String("example"), // "Key": pulumi.String("value"), diff --git a/sdk/go/aws/resourcegroups/group.go b/sdk/go/aws/resourcegroups/group.go index a94c65afb07..566a95ff00c 100644 --- a/sdk/go/aws/resourcegroups/group.go +++ b/sdk/go/aws/resourcegroups/group.go @@ -31,13 +31,13 @@ import ( // Name: pulumi.String("test-group"), // ResourceQuery: &resourcegroups.GroupResourceQueryArgs{ // Query: pulumi.String(`{ -// "ResourceTypeFilters": [ -// "AWS::EC2::Instance" +// \"ResourceTypeFilters\": [ +// \"AWS::EC2::Instance\" // ], -// "TagFilters": [ +// \"TagFilters\": [ // { -// "Key": "Stage", -// "Values": ["Test"] +// \"Key\": \"Stage\", +// \"Values\": [\"Test\"] // } // ] // } diff --git a/sdk/go/aws/route53/trafficPolicy.go b/sdk/go/aws/route53/trafficPolicy.go index f7560436cd2..1f0708b8c15 100644 --- a/sdk/go/aws/route53/trafficPolicy.go +++ b/sdk/go/aws/route53/trafficPolicy.go @@ -32,15 +32,15 @@ import ( // Name: pulumi.String("example"), // Comment: pulumi.String("example comment"), // Document: pulumi.String(`{ -// "AWSPolicyFormatVersion": "2015-10-01", -// "RecordType": "A", -// "Endpoints": { -// "endpoint-start-NkPh": { -// "Type": "value", -// "Value": "10.0.0.2" +// \"AWSPolicyFormatVersion\": \"2015-10-01\", +// \"RecordType\": \"A\", +// \"Endpoints\": { +// \"endpoint-start-NkPh\": { +// \"Type\": \"value\", +// \"Value\": \"10.0.0.2\" // } // }, -// "StartEndpoint": "endpoint-start-NkPh" +// \"StartEndpoint\": \"endpoint-start-NkPh\" // } // // `), diff --git a/sdk/go/aws/s3/bucketWebsiteConfiguration.go b/sdk/go/aws/s3/bucketWebsiteConfiguration.go index 838ef6dc9b4..3b04001b7d1 100644 --- a/sdk/go/aws/s3/bucketWebsiteConfiguration.go +++ b/sdk/go/aws/s3/bucketWebsiteConfiguration.go @@ -83,11 +83,11 @@ import ( // Key: pulumi.String("error.html"), // }, // RoutingRuleDetails: pulumi.String(`[{ -// "Condition": { -// "KeyPrefixEquals": "docs/" +// \"Condition\": { +// \"KeyPrefixEquals\": \"docs/\" // }, -// "Redirect": { -// "ReplaceKeyPrefixWith": "" +// \"Redirect\": { +// \"ReplaceKeyPrefixWith\": \"\" // } // }] // diff --git a/sdk/go/aws/s3/bucketWebsiteConfigurationV2.go b/sdk/go/aws/s3/bucketWebsiteConfigurationV2.go index 4e720861400..5547abed0b7 100644 --- a/sdk/go/aws/s3/bucketWebsiteConfigurationV2.go +++ b/sdk/go/aws/s3/bucketWebsiteConfigurationV2.go @@ -83,11 +83,11 @@ import ( // Key: pulumi.String("error.html"), // }, // RoutingRuleDetails: pulumi.String(`[{ -// "Condition": { -// "KeyPrefixEquals": "docs/" +// \"Condition\": { +// \"KeyPrefixEquals\": \"docs/\" // }, -// "Redirect": { -// "ReplaceKeyPrefixWith": "" +// \"Redirect\": { +// \"ReplaceKeyPrefixWith\": \"\" // } // }] // diff --git a/sdk/go/aws/s3control/accessGrantsInstanceResourcePolicy.go b/sdk/go/aws/s3control/accessGrantsInstanceResourcePolicy.go index c0642f44826..193673453e0 100644 --- a/sdk/go/aws/s3control/accessGrantsInstanceResourcePolicy.go +++ b/sdk/go/aws/s3control/accessGrantsInstanceResourcePolicy.go @@ -38,20 +38,20 @@ import ( // _, err = s3control.NewAccessGrantsInstanceResourcePolicy(ctx, "example", &s3control.AccessGrantsInstanceResourcePolicyArgs{ // Policy: example.AccessGrantsInstanceArn.ApplyT(func(accessGrantsInstanceArn string) (string, error) { // return fmt.Sprintf(`{ -// "Version": "2012-10-17", -// "Id": "S3AccessGrantsPolicy", -// "Statement": [{ -// "Sid": "AllowAccessToS3AccessGrants", -// "Effect": "Allow", -// "Principal": { -// "AWS": "123456789456" +// \"Version\": \"2012-10-17\", +// \"Id\": \"S3AccessGrantsPolicy\", +// \"Statement\": [{ +// \"Sid\": \"AllowAccessToS3AccessGrants\", +// \"Effect\": \"Allow\", +// \"Principal\": { +// \"AWS\": \"123456789456\" // }, -// "Action": [ -// "s3:ListAccessGrants", -// "s3:ListAccessGrantsLocations", -// "s3:GetDataAccess" +// \"Action\": [ +// \"s3:ListAccessGrants\", +// \"s3:ListAccessGrantsLocations\", +// \"s3:GetDataAccess\" // ], -// "Resource": "%v" +// \"Resource\": \"%v\" // }] // } // diff --git a/sdk/go/aws/sagemaker/flowDefinition.go b/sdk/go/aws/sagemaker/flowDefinition.go index 35b27b5509f..9662be30704 100644 --- a/sdk/go/aws/sagemaker/flowDefinition.go +++ b/sdk/go/aws/sagemaker/flowDefinition.go @@ -135,16 +135,16 @@ import ( // HumanLoopActivationConfig: &sagemaker.FlowDefinitionHumanLoopActivationConfigArgs{ // HumanLoopActivationConditionsConfig: &sagemaker.FlowDefinitionHumanLoopActivationConfigHumanLoopActivationConditionsConfigArgs{ // HumanLoopActivationConditions: pulumi.String(` { -// "Conditions": [ -// { -// "ConditionType": "Sampling", -// "ConditionParameters": { -// "RandomSamplingPercentage": 5 -// } -// } -// ] -// } // +// \t\t\t\"Conditions\": [ +// \t\t\t { +// \t\t\t\t\"ConditionType\": \"Sampling\", +// \t\t\t\t\"ConditionParameters\": { +// \t\t\t\t \"RandomSamplingPercentage\": 5 +// \t\t\t\t} +// \t\t\t } +// \t\t\t] +// \t\t} // `), // // }, diff --git a/sdk/go/aws/sagemaker/modelPackageGroupPolicy.go b/sdk/go/aws/sagemaker/modelPackageGroupPolicy.go index 623b3e4e8fc..f0c031a955c 100644 --- a/sdk/go/aws/sagemaker/modelPackageGroupPolicy.go +++ b/sdk/go/aws/sagemaker/modelPackageGroupPolicy.go @@ -16,6 +16,81 @@ import ( // // ## Example Usage // +// ### Basic usage +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws" +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam" +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sagemaker" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// current, err := aws.GetCallerIdentity(ctx, &aws.GetCallerIdentityArgs{ +// }, nil); +// if err != nil { +// return err +// } +// exampleModelPackageGroup, err := sagemaker.NewModelPackageGroup(ctx, "example", &sagemaker.ModelPackageGroupArgs{ +// ModelPackageGroupName: pulumi.String("example"), +// }) +// if err != nil { +// return err +// } +// example := exampleModelPackageGroup.Arn.ApplyT(func(arn string) (iam.GetPolicyDocumentResult, error) { +// return iam.GetPolicyDocumentResult(iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Sid: pulumi.StringRef(pulumi.String(pulumi.StringRef("AddPermModelPackageGroup"))), +// Actions: []string{ +// "sagemaker:DescribeModelPackage", +// "sagemaker:ListModelPackages", +// }, +// Resources: []string{ +// arn, +// }, +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Identifiers: interface{}{ +// current.AccountId, +// }, +// Type: "AWS", +// }, +// }, +// }, +// }, +// }, nil)), nil +// }).(iam.GetPolicyDocumentResultOutput) +// _, err = sagemaker.NewModelPackageGroupPolicy(ctx, "example", &sagemaker.ModelPackageGroupPolicyArgs{ +// ModelPackageGroupName: exampleModelPackageGroup.ModelPackageGroupName, +// ResourcePolicy: std.JsondecodeOutput(ctx, std.JsondecodeOutputArgs{ +// Input: example.Json, +// }, nil).ApplyT(func(invoke std.JsondecodeResult) (pulumi.String, error) { +// var _zero pulumi.String +// tmpJSON0, err := json.Marshal(invoke.Result) +// if err != nil { +// return _zero, err +// } +// json0 := string(tmpJSON0) +// return pulumi.String(json0), nil +// }).(pulumi.StringOutput), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// ``` +// // ## Import // // Using `pulumi import`, import SageMaker AI Model Package Groups using the `name`. For example: diff --git a/sdk/go/aws/secretsmanager/getSecretVersion.go b/sdk/go/aws/secretsmanager/getSecretVersion.go index 31ca1a70dc2..78717ab1c65 100644 --- a/sdk/go/aws/secretsmanager/getSecretVersion.go +++ b/sdk/go/aws/secretsmanager/getSecretVersion.go @@ -69,6 +69,31 @@ import ( // } // // ``` +// +// ### Handling Key-Value Secret Strings in JSON +// +// # Reading key-value pairs from JSON back into a native map +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// ctx.Export("example", pulumi.Any(std.Jsondecode(ctx, &std.JsondecodeArgs{ +// Input: exampleAwsSecretsmanagerSecretVersion.SecretString, +// }, nil).Result.Key1)) +// return nil +// }) +// } +// +// ``` func LookupSecretVersion(ctx *pulumi.Context, args *LookupSecretVersionArgs, opts ...pulumi.InvokeOption) (*LookupSecretVersionResult, error) { opts = internal.PkgInvokeDefaultOpts(opts) var rv LookupSecretVersionResult diff --git a/sdk/go/aws/secretsmanager/secretVersion.go b/sdk/go/aws/secretsmanager/secretVersion.go index ebadd3897e8..3fa588bffaf 100644 --- a/sdk/go/aws/secretsmanager/secretVersion.go +++ b/sdk/go/aws/secretsmanager/secretVersion.go @@ -90,7 +90,50 @@ import ( // // ``` // -// Reading key-value pairs from JSON back into a native map +// # Reading key-value pairs from JSON back into a native map +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// ctx.Export("example", pulumi.Any(std.Jsondecode(ctx, &std.JsondecodeArgs{ +// Input: exampleAwsSecretsmanagerSecretVersion.SecretString, +// }, nil).Result.Key1)) +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// ### Identity Schema +// +// #### Required +// +// * `secret_id` - (String) ID of the secret. +// +// * `version_id` - (String) ID of the secret version. +// +// #### Optional +// +// * `account_id` (String) AWS Account where this resource is managed. +// +// * `region` (String) Region where this resource is managed. +// +// Using `pulumi import`, import `aws_secretsmanager_secret_version` using the secret ID and version ID. For example: +// +// console +// +// % pulumi import aws_secretsmanager_secret_version.example 'arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456|xxxxx-xxxxxxx-xxxxxxx-xxxxx' type SecretVersion struct { pulumi.CustomResourceState diff --git a/sdk/go/aws/securityhub/standardsControlAssociation.go b/sdk/go/aws/securityhub/standardsControlAssociation.go index 2485d9d670a..cb3c166ee54 100644 --- a/sdk/go/aws/securityhub/standardsControlAssociation.go +++ b/sdk/go/aws/securityhub/standardsControlAssociation.go @@ -54,6 +54,50 @@ import ( // } // // ``` +// +// ## Disabling security control in all standards +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/securityhub" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := securityhub.NewAccount(ctx, "example", nil) +// if err != nil { +// return err +// } +// iam1, err := securityhub.GetStandardsControlAssociations(ctx, &securityhub.GetStandardsControlAssociationsArgs{ +// SecurityControlId: "IAM.1", +// }, nil); +// if err != nil { +// return err +// } +// var iam1StandardsControlAssociation []*securityhub.StandardsControlAssociation +// for key0, _ := range interface{}(std.Toset(ctx, &std.TosetArgs{ +// Input: %!v(PANIC=Format method: fatal: A failure has occurred: unlowered splat expression @ example.pp:11,15-64), +// }, nil).Result) { +// __res, err := securityhub.NewStandardsControlAssociation(ctx, fmt.Sprintf("iam_1-%v", key0), &securityhub.StandardsControlAssociationArgs{ +// StandardsArn: pulumi.Float64(key0), +// SecurityControlId: pulumi.String(iam1.SecurityControlId), +// AssociationStatus: pulumi.String("DISABLED"), +// UpdatedReason: pulumi.String("Not needed"), +// }) +// if err != nil { +// return err +// } +// iam1StandardsControlAssociation = append(iam1StandardsControlAssociation, __res) +// } +// return nil +// }) +// } +// ``` type StandardsControlAssociation struct { pulumi.CustomResourceState diff --git a/sdk/go/aws/sesv2/emailIdentityPolicy.go b/sdk/go/aws/sesv2/emailIdentityPolicy.go index 0788438e0ab..386884848ab 100644 --- a/sdk/go/aws/sesv2/emailIdentityPolicy.go +++ b/sdk/go/aws/sesv2/emailIdentityPolicy.go @@ -43,22 +43,22 @@ import ( // PolicyName: pulumi.String("example"), // Policy: example.Arn.ApplyT(func(arn string) (string, error) { // return fmt.Sprintf(`{ -// "Id":"ExampleAuthorizationPolicy", -// "Version":"2012-10-17", -// "Statement":[ +// \"Id\":\"ExampleAuthorizationPolicy\", +// \"Version\":\"2012-10-17\", +// \"Statement\":[ // { -// "Sid":"AuthorizeIAMUser", -// "Effect":"Allow", -// "Resource":"%v", -// "Principal":{ -// "AWS":[ -// "arn:aws:iam::123456789012:user/John", -// "arn:aws:iam::123456789012:user/Jane" +// \"Sid\":\"AuthorizeIAMUser\", +// \"Effect\":\"Allow\", +// \"Resource\":\"%v\", +// \"Principal\":{ +// \"AWS\":[ +// \"arn:aws:iam::123456789012:user/John\", +// \"arn:aws:iam::123456789012:user/Jane\" // ] // }, -// "Action":[ -// "ses:DeleteEmailIdentity", -// "ses:PutEmailIdentityDkimSigningAttributes" +// \"Action\":[ +// \"ses:DeleteEmailIdentity\", +// \"ses:PutEmailIdentityDkimSigningAttributes\" // ] // } // ] diff --git a/sdk/go/aws/sfn/stateMachine.go b/sdk/go/aws/sfn/stateMachine.go index 22d5a456b56..05440eb5807 100644 --- a/sdk/go/aws/sfn/stateMachine.go +++ b/sdk/go/aws/sfn/stateMachine.go @@ -37,13 +37,13 @@ import ( // Name: pulumi.String("my-state-machine"), // RoleArn: pulumi.Any(iamForSfn.Arn), // Definition: pulumi.Sprintf(`{ -// "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", -// "StartAt": "HelloWorld", -// "States": { -// "HelloWorld": { -// "Type": "Task", -// "Resource": "%v", -// "End": true +// \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\", +// \"StartAt\": \"HelloWorld\", +// \"States\": { +// \"HelloWorld\": { +// \"Type\": \"Task\", +// \"Resource\": \"%v\", +// \"End\": true // } // } // } @@ -82,13 +82,13 @@ import ( // RoleArn: pulumi.Any(iamForSfn.Arn), // Type: pulumi.String("EXPRESS"), // Definition: pulumi.Sprintf(`{ -// "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", -// "StartAt": "HelloWorld", -// "States": { -// "HelloWorld": { -// "Type": "Task", -// "Resource": "%v", -// "End": true +// \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\", +// \"StartAt\": \"HelloWorld\", +// \"States\": { +// \"HelloWorld\": { +// \"Type\": \"Task\", +// \"Resource\": \"%v\", +// \"End\": true // } // } // } @@ -128,13 +128,13 @@ import ( // Publish: pulumi.Bool(true), // Type: pulumi.String("EXPRESS"), // Definition: pulumi.Sprintf(`{ -// "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", -// "StartAt": "HelloWorld", -// "States": { -// "HelloWorld": { -// "Type": "Task", -// "Resource": "%v", -// "End": true +// \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\", +// \"StartAt\": \"HelloWorld\", +// \"States\": { +// \"HelloWorld\": { +// \"Type\": \"Task\", +// \"Resource\": \"%v\", +// \"End\": true // } // } // } @@ -174,13 +174,13 @@ import ( // Name: pulumi.String("my-state-machine"), // RoleArn: pulumi.Any(iamForSfn.Arn), // Definition: pulumi.Sprintf(`{ -// "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", -// "StartAt": "HelloWorld", -// "States": { -// "HelloWorld": { -// "Type": "Task", -// "Resource": "%v", -// "End": true +// \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\", +// \"StartAt\": \"HelloWorld\", +// \"States\": { +// \"HelloWorld\": { +// \"Type\": \"Task\", +// \"Resource\": \"%v\", +// \"End\": true // } // } // } @@ -225,13 +225,13 @@ import ( // Name: pulumi.String("my-state-machine"), // RoleArn: pulumi.Any(iamForSfn.Arn), // Definition: pulumi.Sprintf(`{ -// "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", -// "StartAt": "HelloWorld", -// "States": { -// "HelloWorld": { -// "Type": "Task", -// "Resource": "%v", -// "End": true +// \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\", +// \"StartAt\": \"HelloWorld\", +// \"States\": { +// \"HelloWorld\": { +// \"Type\": \"Task\", +// \"Resource\": \"%v\", +// \"End\": true // } // } // } diff --git a/sdk/go/aws/sns/topic.go b/sdk/go/aws/sns/topic.go index 09b18e55dde..270a5061c45 100644 --- a/sdk/go/aws/sns/topic.go +++ b/sdk/go/aws/sns/topic.go @@ -56,19 +56,19 @@ import ( // _, err := sns.NewTopic(ctx, "user_updates", &sns.TopicArgs{ // Name: pulumi.String("user-updates-topic"), // DeliveryPolicy: pulumi.String(`{ -// "http": { -// "defaultHealthyRetryPolicy": { -// "minDelayTarget": 20, -// "maxDelayTarget": 20, -// "numRetries": 3, -// "numMaxDelayRetries": 0, -// "numNoDelayRetries": 0, -// "numMinDelayRetries": 0, -// "backoffFunction": "linear" +// \"http\": { +// \"defaultHealthyRetryPolicy\": { +// \"minDelayTarget\": 20, +// \"maxDelayTarget\": 20, +// \"numRetries\": 3, +// \"numMaxDelayRetries\": 0, +// \"numNoDelayRetries\": 0, +// \"numMinDelayRetries\": 0, +// \"backoffFunction\": \"linear\" // }, -// "disableSubscriptionOverrides": false, -// "defaultThrottlePolicy": { -// "maxReceivesPerSecond": 1 +// \"disableSubscriptionOverrides\": false, +// \"defaultThrottlePolicy\": { +// \"maxReceivesPerSecond\": 1 // } // } // } diff --git a/sdk/go/aws/sns/topicSubscription.go b/sdk/go/aws/sns/topicSubscription.go index 17aa52bf593..da5d6454940 100644 --- a/sdk/go/aws/sns/topicSubscription.go +++ b/sdk/go/aws/sns/topicSubscription.go @@ -298,21 +298,21 @@ import ( // Endpoint: pulumi.String("https://example.com/endpoint"), // RawMessageDelivery: pulumi.Bool(true), // DeliveryPolicy: pulumi.String(`{ -// "healthyRetryPolicy": { -// "minDelayTarget": 20, -// "maxDelayTarget": 20, -// "numRetries": 3, -// "numMaxDelayRetries": 0, -// "numNoDelayRetries": 0, -// "numMinDelayRetries": 0, -// "backoffFunction": "linear" +// \"healthyRetryPolicy\": { +// \"minDelayTarget\": 20, +// \"maxDelayTarget\": 20, +// \"numRetries\": 3, +// \"numMaxDelayRetries\": 0, +// \"numNoDelayRetries\": 0, +// \"numMinDelayRetries\": 0, +// \"backoffFunction\": \"linear\" // }, -// "sicklyRetryPolicy": null, -// "throttlePolicy": null, -// "requestPolicy": { -// "headerContentType": "text/plain; application/json" +// \"sicklyRetryPolicy\": null, +// \"throttlePolicy\": null, +// \"requestPolicy\": { +// \"headerContentType\": \"text/plain; application/json\" // }, -// "guaranteed": false +// \"guaranteed\": false // } // // `), diff --git a/sdk/go/aws/ssm/association.go b/sdk/go/aws/ssm/association.go index 82caba22347..c2d314d9cfc 100644 --- a/sdk/go/aws/ssm/association.go +++ b/sdk/go/aws/ssm/association.go @@ -321,7 +321,7 @@ import ( // yum install -y httpd // systemctl enable httpd // systemctl start httpd -// echo "

Web Server - %v

" > /var/www/html/index.html +// echo \"

Web Server - %v

\" > /var/www/html/index.html // `, prefix), // // }, nil) diff --git a/sdk/go/aws/ssm/document.go b/sdk/go/aws/ssm/document.go index d0a69b534f0..a2746c58ac2 100644 --- a/sdk/go/aws/ssm/document.go +++ b/sdk/go/aws/ssm/document.go @@ -37,17 +37,17 @@ import ( // Name: pulumi.String("test_document"), // DocumentType: pulumi.String("Command"), // Content: pulumi.String(` { -// "schemaVersion": "1.2", -// "description": "Check ip configuration of a Linux instance.", -// "parameters": { +// \"schemaVersion\": \"1.2\", +// \"description\": \"Check ip configuration of a Linux instance.\", +// \"parameters\": { // // }, -// "runtimeConfig": { -// "aws:runShellScript": { -// "properties": [ +// \"runtimeConfig\": { +// \"aws:runShellScript\": { +// \"properties\": [ // { -// "id": "0.aws:runShellScript", -// "runCommand": ["ifconfig"] +// \"id\": \"0.aws:runShellScript\", +// \"runCommand\": [\"ifconfig\"] // } // ] // } diff --git a/sdk/go/aws/timestreamquery/scheduledQuery.go b/sdk/go/aws/timestreamquery/scheduledQuery.go index c898f2db098..274bff824c6 100644 --- a/sdk/go/aws/timestreamquery/scheduledQuery.go +++ b/sdk/go/aws/timestreamquery/scheduledQuery.go @@ -38,11 +38,11 @@ import ( // ExecutionRoleArn: pulumi.Any(exampleAwsIamRole.Arn), // Name: pulumi.Any(exampleAwsTimestreamwriteTable.TableName), // QueryString: pulumi.String(`SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp, -// ROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, -// ROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, -// ROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, -// ROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization // +// \tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, +// \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, +// \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, +// \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization // FROM exampledatabase.exampletable // WHERE measure_name = 'metrics' AND time > ago(2h) // GROUP BY region, hostname, az, BIN(time, 15s) @@ -331,11 +331,11 @@ import ( // ExecutionRoleArn: pulumi.Any(exampleAwsIamRole.Arn), // Name: pulumi.Any(exampleAwsTimestreamwriteTable.TableName), // QueryString: pulumi.String(`SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp, -// ROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, -// ROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, -// ROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, -// ROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization // +// \tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, +// \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, +// \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, +// \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization // FROM exampledatabase.exampletable // WHERE measure_name = 'metrics' AND time > ago(2h) // GROUP BY region, hostname, az, BIN(time, 15s) diff --git a/sdk/go/aws/transfer/sshKey.go b/sdk/go/aws/transfer/sshKey.go index 59517761760..6250a0cfef5 100644 --- a/sdk/go/aws/transfer/sshKey.go +++ b/sdk/go/aws/transfer/sshKey.go @@ -24,7 +24,7 @@ import ( // "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam" // "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/transfer" // "github.com/pulumi/pulumi-std/sdk/go/std" -// "github.com/pulumi/pulumi-tls/sdk/v4/go/tls" +// "github.com/pulumi/pulumi-tls/sdk/v5/go/tls" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // // ) @@ -32,8 +32,8 @@ import ( // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // examplePrivateKey, err := tls.NewPrivateKey(ctx, "example", &tls.PrivateKeyArgs{ -// Algorithm: "RSA", -// RsaBits: 4096, +// Algorithm: pulumi.String("RSA"), +// RsaBits: pulumi.Int(4096), // }) // if err != nil { // return err @@ -86,16 +86,14 @@ import ( // if err != nil { // return err // } -// invokeTrimspace, err := std.Trimspace(ctx, &std.TrimspaceArgs{ -// Input: examplePrivateKey.PublicKeyOpenssh, -// }, nil) -// if err != nil { -// return err -// } // _, err = transfer.NewSshKey(ctx, "example", &transfer.SshKeyArgs{ // ServerId: exampleServer.ID(), // UserName: exampleUser.UserName, -// Body: pulumi.String(invokeTrimspace.Result), +// Body: pulumi.String(std.TrimspaceOutput(ctx, std.TrimspaceOutputArgs{ +// Input: examplePrivateKey.PublicKeyOpenssh, +// }, nil).ApplyT(func(invoke std.TrimspaceResult) (*string, error) { +// return invoke.Result, nil +// }).(pulumi.StringPtrOutput)), // }) // if err != nil { // return err diff --git a/sdk/java/src/main/java/com/pulumi/aws/acm/Certificate.java b/sdk/java/src/main/java/com/pulumi/aws/acm/Certificate.java index d4b3bc71784..ac98f17b4b1 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/acm/Certificate.java +++ b/sdk/java/src/main/java/com/pulumi/aws/acm/Certificate.java @@ -103,60 +103,6 @@ * * ### Existing Certificate Body Import * - *
- * {@code
- * package generated_program;
- * 
- * import com.pulumi.Context;
- * import com.pulumi.Pulumi;
- * import com.pulumi.core.Output;
- * import com.pulumi.tls.privateKey;
- * import com.pulumi.tls.privateKeyArgs;
- * import com.pulumi.tls.selfSignedCert;
- * import com.pulumi.tls.selfSignedCertArgs;
- * import com.pulumi.aws.acm.Certificate;
- * import com.pulumi.aws.acm.CertificateArgs;
- * import java.util.List;
- * import java.util.ArrayList;
- * import java.util.Map;
- * import java.io.File;
- * import java.nio.file.Files;
- * import java.nio.file.Paths;
- * 
- * public class App {
- *     public static void main(String[] args) {
- *         Pulumi.run(App::stack);
- *     }
- * 
- *     public static void stack(Context ctx) {
- *         var example = new PrivateKey("example", PrivateKeyArgs.builder()
- *             .algorithm("RSA")
- *             .build());
- * 
- *         var exampleSelfSignedCert = new SelfSignedCert("exampleSelfSignedCert", SelfSignedCertArgs.builder()
- *             .keyAlgorithm("RSA")
- *             .privateKeyPem(example.privateKeyPem())
- *             .subject(List.of(Map.ofEntries(
- *                 Map.entry("commonName", "example.com"),
- *                 Map.entry("organization", "ACME Examples, Inc")
- *             )))
- *             .validityPeriodHours(12)
- *             .allowedUses(List.of(            
- *                 "key_encipherment",
- *                 "digital_signature",
- *                 "server_auth"))
- *             .build());
- * 
- *         var cert = new Certificate("cert", CertificateArgs.builder()
- *             .privateKey(example.privateKeyPem())
- *             .certificateBody(exampleSelfSignedCert.certPem())
- *             .build());
- * 
- *     }
- * }
- * }
- * 
- * * ### Referencing domainValidationOptions With forEach Based Resources * * See the `aws.acm.CertificateValidation` resource for a full example of performing DNS validation. diff --git a/sdk/java/src/main/java/com/pulumi/aws/acmpca/Certificate.java b/sdk/java/src/main/java/com/pulumi/aws/acmpca/Certificate.java index 94987344573..0a013b193f2 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/acmpca/Certificate.java +++ b/sdk/java/src/main/java/com/pulumi/aws/acmpca/Certificate.java @@ -27,72 +27,6 @@ * * ### Basic * - *
- * {@code
- * package generated_program;
- * 
- * import com.pulumi.Context;
- * import com.pulumi.Pulumi;
- * import com.pulumi.core.Output;
- * import com.pulumi.aws.acmpca.CertificateAuthority;
- * import com.pulumi.aws.acmpca.CertificateAuthorityArgs;
- * import com.pulumi.aws.acmpca.inputs.CertificateAuthorityCertificateAuthorityConfigurationArgs;
- * import com.pulumi.aws.acmpca.inputs.CertificateAuthorityCertificateAuthorityConfigurationSubjectArgs;
- * import com.pulumi.tls.privateKey;
- * import com.pulumi.tls.privateKeyArgs;
- * import com.pulumi.tls.certRequest;
- * import com.pulumi.tls.certRequestArgs;
- * import com.pulumi.aws.acmpca.Certificate;
- * import com.pulumi.aws.acmpca.CertificateArgs;
- * import com.pulumi.aws.acmpca.inputs.CertificateValidityArgs;
- * import java.util.List;
- * import java.util.ArrayList;
- * import java.util.Map;
- * import java.io.File;
- * import java.nio.file.Files;
- * import java.nio.file.Paths;
- * 
- * public class App {
- *     public static void main(String[] args) {
- *         Pulumi.run(App::stack);
- *     }
- * 
- *     public static void stack(Context ctx) {
- *         var exampleCertificateAuthority = new CertificateAuthority("exampleCertificateAuthority", CertificateAuthorityArgs.builder()
- *             .certificateAuthorityConfiguration(CertificateAuthorityCertificateAuthorityConfigurationArgs.builder()
- *                 .keyAlgorithm("RSA_4096")
- *                 .signingAlgorithm("SHA512WITHRSA")
- *                 .subject(CertificateAuthorityCertificateAuthorityConfigurationSubjectArgs.builder()
- *                     .commonName("example.com")
- *                     .build())
- *                 .build())
- *             .permanentDeletionTimeInDays(7)
- *             .build());
- * 
- *         var key = new PrivateKey("key", PrivateKeyArgs.builder()
- *             .algorithm("RSA")
- *             .build());
- * 
- *         var csr = new CertRequest("csr", CertRequestArgs.builder()
- *             .privateKeyPem(key.privateKeyPem())
- *             .subject(List.of(Map.of("commonName", "example")))
- *             .build());
- * 
- *         var example = new Certificate("example", CertificateArgs.builder()
- *             .certificateAuthorityArn(exampleCertificateAuthority.arn())
- *             .certificateSigningRequest(csr.certRequestPem())
- *             .signingAlgorithm("SHA256WITHRSA")
- *             .validity(CertificateValidityArgs.builder()
- *                 .type("YEARS")
- *                 .value("1")
- *                 .build())
- *             .build());
- * 
- *     }
- * }
- * }
- * 
- * * ## Import * * ### Identity Schema diff --git a/sdk/java/src/main/java/com/pulumi/aws/amplify/App.java b/sdk/java/src/main/java/com/pulumi/aws/amplify/App.java index fd6fd1df5ca..e9043f40eae 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/amplify/App.java +++ b/sdk/java/src/main/java/com/pulumi/aws/amplify/App.java @@ -323,7 +323,7 @@ * - key: 'X-Content-Type-Options' * value: 'nosniff' * - key: 'Content-Security-Policy' - * value: "default-src 'self'" + * value: \"default-src 'self'\" * """) * .build()); * diff --git a/sdk/java/src/main/java/com/pulumi/aws/apigateway/Integration.java b/sdk/java/src/main/java/com/pulumi/aws/apigateway/Integration.java index 2cc8e9cbdb5..abe2981c53f 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/apigateway/Integration.java +++ b/sdk/java/src/main/java/com/pulumi/aws/apigateway/Integration.java @@ -80,7 +80,7 @@ * .requestParameters(Map.of("integration.request.header.X-Authorization", "'static'")) * .requestTemplates(Map.of("application/xml", """ * { - * "body" : $input.json('$') + * \"body\" : $input.json('$') * } * """)) * .build()); diff --git a/sdk/java/src/main/java/com/pulumi/aws/apigateway/IntegrationResponse.java b/sdk/java/src/main/java/com/pulumi/aws/apigateway/IntegrationResponse.java index f157bffc2a9..3b176f2c6eb 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/apigateway/IntegrationResponse.java +++ b/sdk/java/src/main/java/com/pulumi/aws/apigateway/IntegrationResponse.java @@ -94,7 +94,7 @@ * .statusCode(response200.statusCode()) * .responseTemplates(Map.of("application/xml", """ * #set($inputRoot = $input.path('$')) - * + * * * $inputRoot.body * diff --git a/sdk/java/src/main/java/com/pulumi/aws/appsync/Function.java b/sdk/java/src/main/java/com/pulumi/aws/appsync/Function.java index 0cd11827e9d..618109de56c 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/appsync/Function.java +++ b/sdk/java/src/main/java/com/pulumi/aws/appsync/Function.java @@ -88,11 +88,11 @@ * .name("example") * .requestMappingTemplate(""" * { - * "version": "2018-05-29", - * "method": "GET", - * "resourcePath": "/", - * "params":{ - * "headers": $utils.http.copyheaders($ctx.request.headers) + * \"version\": \"2018-05-29\", + * \"method\": \"GET\", + * \"resourcePath\": \"/\", + * \"params\":{ + * \"headers\": $utils.http.copyheaders($ctx.request.headers) * } * } * """) diff --git a/sdk/java/src/main/java/com/pulumi/aws/appsync/GraphQLApi.java b/sdk/java/src/main/java/com/pulumi/aws/appsync/GraphQLApi.java index 55552208ab8..56b236e9fc2 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/appsync/GraphQLApi.java +++ b/sdk/java/src/main/java/com/pulumi/aws/appsync/GraphQLApi.java @@ -290,7 +290,7 @@ * .name("example") * .schema(""" * schema { - * query: Query + * \tquery: Query * } * type Query { * test: Int diff --git a/sdk/java/src/main/java/com/pulumi/aws/appsync/Resolver.java b/sdk/java/src/main/java/com/pulumi/aws/appsync/Resolver.java index 8ca196bb0fd..66308a5ed06 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/appsync/Resolver.java +++ b/sdk/java/src/main/java/com/pulumi/aws/appsync/Resolver.java @@ -58,21 +58,21 @@ * .name("tf-example") * .schema(""" * type Mutation { - * putPost(id: ID!, title: String!): Post + * \tputPost(id: ID!, title: String!): Post * } * * type Post { - * id: ID! - * title: String! + * \tid: ID! + * \ttitle: String! * } * * type Query { - * singlePost(id: ID!): Post + * \tsinglePost(id: ID!): Post * } * * schema { - * query: Query - * mutation: Mutation + * \tquery: Query + * \tmutation: Mutation * } * """) * .build()); @@ -94,11 +94,11 @@ * .dataSource(testDataSource.name()) * .requestTemplate(""" * { - * "version": "2018-05-29", - * "method": "GET", - * "resourcePath": "/", - * "params":{ - * "headers": $utils.http.copyheaders($ctx.request.headers) + * \"version\": \"2018-05-29\", + * \"method\": \"GET\", + * \"resourcePath\": \"/\", + * \"params\":{ + * \"headers\": $utils.http.copyheaders($ctx.request.headers) * } * } * """) diff --git a/sdk/java/src/main/java/com/pulumi/aws/autoscaling/Tag.java b/sdk/java/src/main/java/com/pulumi/aws/autoscaling/Tag.java index abde6e00643..9006ed6fa81 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/autoscaling/Tag.java +++ b/sdk/java/src/main/java/com/pulumi/aws/autoscaling/Tag.java @@ -21,6 +21,8 @@ * * > **NOTE:** This tagging resource does not use the provider `ignoreTags` configuration. * + * ## Example Usage + * * ## Import * * Using `pulumi import`, import `aws_autoscaling_group_tag` using the ASG name and key, separated by a comma (`,`). For example: diff --git a/sdk/java/src/main/java/com/pulumi/aws/autoscalingplans/ScalingPlan.java b/sdk/java/src/main/java/com/pulumi/aws/autoscalingplans/ScalingPlan.java index 6e674b8ee16..b861f563e44 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/autoscalingplans/ScalingPlan.java +++ b/sdk/java/src/main/java/com/pulumi/aws/autoscalingplans/ScalingPlan.java @@ -27,6 +27,173 @@ * * ## Example Usage * + * ### Basic Dynamic Scaling + * + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.aws.AwsFunctions;
+ * import com.pulumi.aws.inputs.GetAvailabilityZonesArgs;
+ * import com.pulumi.aws.autoscaling.Group;
+ * import com.pulumi.aws.autoscaling.GroupArgs;
+ * import com.pulumi.aws.autoscaling.inputs.GroupTagArgs;
+ * import com.pulumi.aws.autoscalingplans.ScalingPlan;
+ * import com.pulumi.aws.autoscalingplans.ScalingPlanArgs;
+ * import com.pulumi.aws.autoscalingplans.inputs.ScalingPlanApplicationSourceArgs;
+ * import com.pulumi.aws.autoscalingplans.inputs.ScalingPlanScalingInstructionArgs;
+ * import com.pulumi.std.StdFunctions;
+ * import com.pulumi.std.inputs.FormatArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         final var available = AwsFunctions.getAvailabilityZones(GetAvailabilityZonesArgs.builder()
+ *             .build());
+ * 
+ *         var example = new Group("example", GroupArgs.builder()
+ *             .namePrefix("example")
+ *             .launchConfiguration(exampleAwsLaunchConfiguration.name())
+ *             .availabilityZones(available.names()[0])
+ *             .minSize(0)
+ *             .maxSize(3)
+ *             .tags(GroupTagArgs.builder()
+ *                 .key("application")
+ *                 .value("example")
+ *                 .propagateAtLaunch(true)
+ *                 .build())
+ *             .build());
+ * 
+ *         var exampleScalingPlan = new ScalingPlan("exampleScalingPlan", ScalingPlanArgs.builder()
+ *             .name("example-dynamic-cost-optimization")
+ *             .applicationSource(ScalingPlanApplicationSourceArgs.builder()
+ *                 .tagFilters(ScalingPlanApplicationSourceTagFilterArgs.builder()
+ *                     .key("application")
+ *                     .values("example")
+ *                     .build())
+ *                 .build())
+ *             .scalingInstructions(ScalingPlanScalingInstructionArgs.builder()
+ *                 .maxCapacity(3)
+ *                 .minCapacity(0)
+ *                 .resourceId(StdFunctions.format(FormatArgs.builder()
+ *                     .input("autoScalingGroup/%s")
+ *                     .args(example.name())
+ *                     .build()).result())
+ *                 .scalableDimension("autoscaling:autoScalingGroup:DesiredCapacity")
+ *                 .serviceNamespace("autoscaling")
+ *                 .targetTrackingConfigurations(ScalingPlanScalingInstructionTargetTrackingConfigurationArgs.builder()
+ *                     .predefinedScalingMetricSpecification(ScalingPlanScalingInstructionTargetTrackingConfigurationPredefinedScalingMetricSpecificationArgs.builder()
+ *                         .predefinedScalingMetricType("ASGAverageCPUUtilization")
+ *                         .build())
+ *                     .targetValue(70.0)
+ *                     .build())
+ *                 .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * + * ### Basic Predictive Scaling + * + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.aws.AwsFunctions;
+ * import com.pulumi.aws.inputs.GetAvailabilityZonesArgs;
+ * import com.pulumi.aws.autoscaling.Group;
+ * import com.pulumi.aws.autoscaling.GroupArgs;
+ * import com.pulumi.aws.autoscaling.inputs.GroupTagArgs;
+ * import com.pulumi.aws.autoscalingplans.ScalingPlan;
+ * import com.pulumi.aws.autoscalingplans.ScalingPlanArgs;
+ * import com.pulumi.aws.autoscalingplans.inputs.ScalingPlanApplicationSourceArgs;
+ * import com.pulumi.aws.autoscalingplans.inputs.ScalingPlanScalingInstructionArgs;
+ * import com.pulumi.aws.autoscalingplans.inputs.ScalingPlanScalingInstructionPredefinedLoadMetricSpecificationArgs;
+ * import com.pulumi.std.StdFunctions;
+ * import com.pulumi.std.inputs.FormatArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         final var available = AwsFunctions.getAvailabilityZones(GetAvailabilityZonesArgs.builder()
+ *             .build());
+ * 
+ *         var example = new Group("example", GroupArgs.builder()
+ *             .namePrefix("example")
+ *             .launchConfiguration(exampleAwsLaunchConfiguration.name())
+ *             .availabilityZones(available.names()[0])
+ *             .minSize(0)
+ *             .maxSize(3)
+ *             .tags(GroupTagArgs.builder()
+ *                 .key("application")
+ *                 .value("example")
+ *                 .propagateAtLaunch(true)
+ *                 .build())
+ *             .build());
+ * 
+ *         var exampleScalingPlan = new ScalingPlan("exampleScalingPlan", ScalingPlanArgs.builder()
+ *             .name("example-predictive-cost-optimization")
+ *             .applicationSource(ScalingPlanApplicationSourceArgs.builder()
+ *                 .tagFilters(ScalingPlanApplicationSourceTagFilterArgs.builder()
+ *                     .key("application")
+ *                     .values("example")
+ *                     .build())
+ *                 .build())
+ *             .scalingInstructions(ScalingPlanScalingInstructionArgs.builder()
+ *                 .disableDynamicScaling(true)
+ *                 .maxCapacity(3)
+ *                 .minCapacity(0)
+ *                 .resourceId(StdFunctions.format(FormatArgs.builder()
+ *                     .input("autoScalingGroup/%s")
+ *                     .args(example.name())
+ *                     .build()).result())
+ *                 .scalableDimension("autoscaling:autoScalingGroup:DesiredCapacity")
+ *                 .serviceNamespace("autoscaling")
+ *                 .targetTrackingConfigurations(ScalingPlanScalingInstructionTargetTrackingConfigurationArgs.builder()
+ *                     .predefinedScalingMetricSpecification(ScalingPlanScalingInstructionTargetTrackingConfigurationPredefinedScalingMetricSpecificationArgs.builder()
+ *                         .predefinedScalingMetricType("ASGAverageCPUUtilization")
+ *                         .build())
+ *                     .targetValue(70.0)
+ *                     .build())
+ *                 .predictiveScalingMaxCapacityBehavior("SetForecastCapacityToMaxCapacity")
+ *                 .predictiveScalingMode("ForecastAndScale")
+ *                 .predefinedLoadMetricSpecification(ScalingPlanScalingInstructionPredefinedLoadMetricSpecificationArgs.builder()
+ *                     .predefinedLoadMetricType("ASGTotalCPUUtilization")
+ *                     .build())
+ *                 .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * * ## Import * * Using `pulumi import`, import Auto Scaling scaling plans using the `name`. For example: diff --git a/sdk/java/src/main/java/com/pulumi/aws/bedrockmodel/InvocationLoggingConfiguration.java b/sdk/java/src/main/java/com/pulumi/aws/bedrockmodel/InvocationLoggingConfiguration.java index 8410d7ffcc3..2f03736e13c 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/bedrockmodel/InvocationLoggingConfiguration.java +++ b/sdk/java/src/main/java/com/pulumi/aws/bedrockmodel/InvocationLoggingConfiguration.java @@ -67,25 +67,25 @@ * .bucket(example.bucket()) * .policy(example.arn().applyValue(_arn -> """ * { - * "Version": "2012-10-17", - * "Statement": [ + * \"Version\": \"2012-10-17\", + * \"Statement\": [ * { - * "Effect": "Allow", - * "Principal": { - * "Service": "bedrock.amazonaws.com" + * \"Effect\": \"Allow\", + * \"Principal\": { + * \"Service\": \"bedrock.amazonaws.com\" * }, - * "Action": [ - * "s3:*" + * \"Action\": [ + * \"s3:*\" * ], - * "Resource": [ - * "%s/*" + * \"Resource\": [ + * \"%s/*\" * ], - * "Condition": { - * "StringEquals": { - * "aws:SourceAccount": "%s" + * \"Condition\": { + * \"StringEquals\": { + * \"aws:SourceAccount\": \"%s\" * }, - * "ArnLike": { - * "aws:SourceArn": "arn:aws:bedrock:us-east-1:%s:*" + * \"ArnLike\": { + * \"aws:SourceArn\": \"arn:aws:bedrock:us-east-1:%s:*\" * } * } * } diff --git a/sdk/java/src/main/java/com/pulumi/aws/cfg/OrganizationCustomPolicyRule.java b/sdk/java/src/main/java/com/pulumi/aws/cfg/OrganizationCustomPolicyRule.java index 15d73d41c7c..d344fb5c052 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/cfg/OrganizationCustomPolicyRule.java +++ b/sdk/java/src/main/java/com/pulumi/aws/cfg/OrganizationCustomPolicyRule.java @@ -53,15 +53,15 @@ * let status = ['ACTIVE'] * * rule tableisactive when - * resourceType == "AWS::DynamoDB::Table" { + * resourceType == \"AWS::DynamoDB::Table\" { * configuration.tableStatus == %status * } * * rule checkcompliance when - * resourceType == "AWS::DynamoDB::Table" + * resourceType == \"AWS::DynamoDB::Table\" * tableisactive { * let pitr = supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus - * %pitr == "ENABLED" + * %pitr == \"ENABLED\" * } * """) * .resourceTypesScopes("AWS::DynamoDB::Table") diff --git a/sdk/java/src/main/java/com/pulumi/aws/cfg/Rule.java b/sdk/java/src/main/java/com/pulumi/aws/cfg/Rule.java index 09aa49ca39f..cd0b9ad222f 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/cfg/Rule.java +++ b/sdk/java/src/main/java/com/pulumi/aws/cfg/Rule.java @@ -207,16 +207,16 @@ * .customPolicyDetails(RuleSourceCustomPolicyDetailsArgs.builder() * .policyRuntime("guard-2.x.x") * .policyText(""" - * rule tableisactive when - * resourceType == "AWS::DynamoDB::Table" { - * configuration.tableStatus == ['ACTIVE'] - * } - * - * rule checkcompliance when - * resourceType == "AWS::DynamoDB::Table" - * tableisactive { - * supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == "ENABLED" - * } + * \t rule tableisactive when + * \t\t resourceType == \"AWS::DynamoDB::Table\" { + * \t\t configuration.tableStatus == ['ACTIVE'] + * \t } + * \t + * \t rule checkcompliance when + * \t\t resourceType == \"AWS::DynamoDB::Table\" + * \t\t tableisactive { + * \t\t\t supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == \"ENABLED\" + * \t } * """) * .build()) * .build()) diff --git a/sdk/java/src/main/java/com/pulumi/aws/cloudwatch/EventTarget.java b/sdk/java/src/main/java/com/pulumi/aws/cloudwatch/EventTarget.java index 1e5d981d090..8206ac792de 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/cloudwatch/EventTarget.java +++ b/sdk/java/src/main/java/com/pulumi/aws/cloudwatch/EventTarget.java @@ -565,8 +565,8 @@ * )) * .inputTemplate(""" * { - * "instance_id": , - * "instance_status": + * \"instance_id\": , + * \"instance_status\": * } * """) * .build()) @@ -816,7 +816,7 @@ * .inputPaths(Map.of("input", "$.detail.input")) * .inputTemplate(""" * { - * "input": + * \"input\": * } * """) * .build()) diff --git a/sdk/java/src/main/java/com/pulumi/aws/cloudwatch/MetricAlarm.java b/sdk/java/src/main/java/com/pulumi/aws/cloudwatch/MetricAlarm.java index 6c5964ad8be..60623755faa 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/cloudwatch/MetricAlarm.java +++ b/sdk/java/src/main/java/com/pulumi/aws/cloudwatch/MetricAlarm.java @@ -283,7 +283,7 @@ * .expression(""" * SELECT * MAX(DBLoadRelativeToNumVCPUs) - * FROM SCHEMA("AWS/RDS", DBInstanceIdentifier) + * FROM SCHEMA(\"AWS/RDS\", DBInstanceIdentifier) * WHERE DBInstanceIdentifier != 'example-rds-instance' * GROUP BY DBInstanceIdentifier * ORDER BY MIN() ASC diff --git a/sdk/java/src/main/java/com/pulumi/aws/cognito/IdentityPoolProviderPrincipalTag.java b/sdk/java/src/main/java/com/pulumi/aws/cognito/IdentityPoolProviderPrincipalTag.java index 00cc44400bc..0a00f780e0b 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/cognito/IdentityPoolProviderPrincipalTag.java +++ b/sdk/java/src/main/java/com/pulumi/aws/cognito/IdentityPoolProviderPrincipalTag.java @@ -19,6 +19,74 @@ /** * Provides an AWS Cognito Identity Principal Mapping. * + * ## Example Usage + * + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.aws.cognito.UserPool;
+ * import com.pulumi.aws.cognito.UserPoolArgs;
+ * import com.pulumi.aws.cognito.UserPoolClient;
+ * import com.pulumi.aws.cognito.UserPoolClientArgs;
+ * import com.pulumi.std.StdFunctions;
+ * import com.pulumi.std.inputs.CompactArgs;
+ * import com.pulumi.aws.cognito.IdentityPool;
+ * import com.pulumi.aws.cognito.IdentityPoolArgs;
+ * import com.pulumi.aws.cognito.inputs.IdentityPoolCognitoIdentityProviderArgs;
+ * import com.pulumi.aws.cognito.IdentityPoolProviderPrincipalTag;
+ * import com.pulumi.aws.cognito.IdentityPoolProviderPrincipalTagArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var example = new UserPool("example", UserPoolArgs.builder()
+ *             .name("user pool")
+ *             .autoVerifiedAttributes("email")
+ *             .build());
+ * 
+ *         var exampleUserPoolClient = new UserPoolClient("exampleUserPoolClient", UserPoolClientArgs.builder()
+ *             .name("client")
+ *             .userPoolId(example.id())
+ *             .supportedIdentityProviders(StdFunctions.compact(CompactArgs.builder()
+ *                 .input("COGNITO")
+ *                 .build()).result())
+ *             .build());
+ * 
+ *         var exampleIdentityPool = new IdentityPool("exampleIdentityPool", IdentityPoolArgs.builder()
+ *             .identityPoolName("identity pool")
+ *             .allowUnauthenticatedIdentities(false)
+ *             .cognitoIdentityProviders(IdentityPoolCognitoIdentityProviderArgs.builder()
+ *                 .clientId(exampleUserPoolClient.id())
+ *                 .providerName(example.endpoint())
+ *                 .serverSideTokenCheck(false)
+ *                 .build())
+ *             .build());
+ * 
+ *         var exampleIdentityPoolProviderPrincipalTag = new IdentityPoolProviderPrincipalTag("exampleIdentityPoolProviderPrincipalTag", IdentityPoolProviderPrincipalTagArgs.builder()
+ *             .identityPoolId(exampleIdentityPool.id())
+ *             .identityProviderName(example.endpoint())
+ *             .useDefaults(false)
+ *             .principalTags(Map.of("test", "value"))
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * * ## Import * * Using `pulumi import`, import Cognito Identity Pool Roles Attachment using the Identity Pool ID and provider name. For example: diff --git a/sdk/java/src/main/java/com/pulumi/aws/datazone/FormType.java b/sdk/java/src/main/java/com/pulumi/aws/datazone/FormType.java index 249b9fa6122..f29a47e3842 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/datazone/FormType.java +++ b/sdk/java/src/main/java/com/pulumi/aws/datazone/FormType.java @@ -130,17 +130,17 @@ * .status("DISABLED") * .model(FormTypeModelArgs.builder() * .smithy(""" - * structure SageMakerModelFormType }{{@code - * }{@literal @}{@code required - * }{@literal @}{@code amazon.datazone#searchable - * modelName: String + * \tstructure SageMakerModelFormType }{{@code + * \t\t\t}{@literal @}{@code required + * \t\t\t}{@literal @}{@code amazon.datazone#searchable + * \t\t\tmodelName: String * - * }{@literal @}{@code required - * modelArn: String + * \t\t\t}{@literal @}{@code required + * \t\t\tmodelArn: String * - * }{@literal @}{@code required - * creationTime: String - * }}{@code + * \t\t\t}{@literal @}{@code required + * \t\t\tcreationTime: String + * \t\t\t}}{@code * """) * .build()) * .build()); diff --git a/sdk/java/src/main/java/com/pulumi/aws/dms/ReplicationConfig.java b/sdk/java/src/main/java/com/pulumi/aws/dms/ReplicationConfig.java index d676525de4b..d41669dfff4 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/dms/ReplicationConfig.java +++ b/sdk/java/src/main/java/com/pulumi/aws/dms/ReplicationConfig.java @@ -55,7 +55,7 @@ * .targetEndpointArn(target.endpointArn()) * .tableMappings(""" * { - * "rules":[{"rule-type":"selection","rule-id":"1","rule-name":"1","rule-action":"include","object-locator":{"schema-name":"%%","table-name":"%%"}}] + * \"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"1\",\"rule-action\":\"include\",\"object-locator\":{\"schema-name\":\"%%\",\"table-name\":\"%%\"}}] * } * """) * .startReplication(true) diff --git a/sdk/java/src/main/java/com/pulumi/aws/dynamodb/DynamodbFunctions.java b/sdk/java/src/main/java/com/pulumi/aws/dynamodb/DynamodbFunctions.java index 0fb9747654a..f664d8a9d45 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/dynamodb/DynamodbFunctions.java +++ b/sdk/java/src/main/java/com/pulumi/aws/dynamodb/DynamodbFunctions.java @@ -256,7 +256,7 @@ public static CompletableFuture getTablePlain(GetTablePlainArgs * .projectionExpression("#P") * .key(""" * { - * "hashKey": {"S": "example"} + * \t\"hashKey\": {\"S\": \"example\"} * } * """) * .build()); @@ -305,7 +305,7 @@ public static Output getTableItem(GetTableItemArgs args) { * .projectionExpression("#P") * .key(""" * { - * "hashKey": {"S": "example"} + * \t\"hashKey\": {\"S\": \"example\"} * } * """) * .build()); @@ -354,7 +354,7 @@ public static CompletableFuture getTableItemPlain(GetTableIt * .projectionExpression("#P") * .key(""" * { - * "hashKey": {"S": "example"} + * \t\"hashKey\": {\"S\": \"example\"} * } * """) * .build()); @@ -403,7 +403,7 @@ public static Output getTableItem(GetTableItemArgs args, Inv * .projectionExpression("#P") * .key(""" * { - * "hashKey": {"S": "example"} + * \t\"hashKey\": {\"S\": \"example\"} * } * """) * .build()); @@ -452,7 +452,7 @@ public static Output getTableItem(GetTableItemArgs args, Inv * .projectionExpression("#P") * .key(""" * { - * "hashKey": {"S": "example"} + * \t\"hashKey\": {\"S\": \"example\"} * } * """) * .build()); diff --git a/sdk/java/src/main/java/com/pulumi/aws/dynamodb/TableItem.java b/sdk/java/src/main/java/com/pulumi/aws/dynamodb/TableItem.java index 3195a412f9e..40c6cc1722b 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/dynamodb/TableItem.java +++ b/sdk/java/src/main/java/com/pulumi/aws/dynamodb/TableItem.java @@ -63,11 +63,11 @@ * .hashKey(exampleTable.hashKey()) * .item(""" * { - * "exampleHashKey": {"S": "something"}, - * "one": {"N": "11111"}, - * "two": {"N": "22222"}, - * "three": {"N": "33333"}, - * "four": {"N": "44444"} + * \"exampleHashKey\": {\"S\": \"something\"}, + * \"one\": {\"N\": \"11111\"}, + * \"two\": {\"N\": \"22222\"}, + * \"three\": {\"N\": \"33333\"}, + * \"four\": {\"N\": \"44444\"} * } * """) * .build()); diff --git a/sdk/java/src/main/java/com/pulumi/aws/ec2/Ec2Functions.java b/sdk/java/src/main/java/com/pulumi/aws/ec2/Ec2Functions.java index 2cc9adcc457..73007d65023 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/ec2/Ec2Functions.java +++ b/sdk/java/src/main/java/com/pulumi/aws/ec2/Ec2Functions.java @@ -17909,6 +17909,62 @@ public static CompletableFuture getSubnetPlain(GetSubnetPlainAr /** * This resource can be useful for getting back a set of subnet IDs. * + * ## Example Usage + * + * The following shows outputting all CIDR blocks for every subnet ID in a VPC. + * + * The following example retrieves a set of all subnets in a VPC with a custom + * tag of `Tier` set to a value of "Private" so that the `aws.ec2.Instance` resource + * can loop through the subnets, putting instances across availability zones. + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.ec2.Ec2Functions;
+     * import com.pulumi.aws.ec2.inputs.GetSubnetsArgs;
+     * import com.pulumi.aws.ec2.Instance;
+     * import com.pulumi.aws.ec2.InstanceArgs;
+     * import com.pulumi.codegen.internal.KeyedValue;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var private = Ec2Functions.getSubnets(GetSubnetsArgs.builder()
+     *             .filters(GetSubnetsFilterArgs.builder()
+     *                 .name("vpc-id")
+     *                 .values(vpcId)
+     *                 .build())
+     *             .tags(Map.of("Tier", "Private"))
+     *             .build());
+     * 
+     *         for (var range : KeyedValue.of(com.pulumi.std.StdFunctions(TosetArgs.builder()
+     *             .input(private_.ids())
+     *             .build()).result())) {
+     *             new Instance("app-" + range.key(), InstanceArgs.builder()
+     *                 .ami(ami)
+     *                 .instanceType("t2.micro")
+     *                 .subnetId(range.value())
+     *                 .build());
+     *         }
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * */ public static Output getSubnets() { return getSubnets(GetSubnetsArgs.Empty, InvokeOptions.Empty); @@ -17916,6 +17972,62 @@ public static Output getSubnets() { /** * This resource can be useful for getting back a set of subnet IDs. * + * ## Example Usage + * + * The following shows outputting all CIDR blocks for every subnet ID in a VPC. + * + * The following example retrieves a set of all subnets in a VPC with a custom + * tag of `Tier` set to a value of "Private" so that the `aws.ec2.Instance` resource + * can loop through the subnets, putting instances across availability zones. + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.ec2.Ec2Functions;
+     * import com.pulumi.aws.ec2.inputs.GetSubnetsArgs;
+     * import com.pulumi.aws.ec2.Instance;
+     * import com.pulumi.aws.ec2.InstanceArgs;
+     * import com.pulumi.codegen.internal.KeyedValue;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var private = Ec2Functions.getSubnets(GetSubnetsArgs.builder()
+     *             .filters(GetSubnetsFilterArgs.builder()
+     *                 .name("vpc-id")
+     *                 .values(vpcId)
+     *                 .build())
+     *             .tags(Map.of("Tier", "Private"))
+     *             .build());
+     * 
+     *         for (var range : KeyedValue.of(com.pulumi.std.StdFunctions(TosetArgs.builder()
+     *             .input(private_.ids())
+     *             .build()).result())) {
+     *             new Instance("app-" + range.key(), InstanceArgs.builder()
+     *                 .ami(ami)
+     *                 .instanceType("t2.micro")
+     *                 .subnetId(range.value())
+     *                 .build());
+     *         }
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * */ public static CompletableFuture getSubnetsPlain() { return getSubnetsPlain(GetSubnetsPlainArgs.Empty, InvokeOptions.Empty); @@ -17923,6 +18035,62 @@ public static CompletableFuture getSubnetsPlain() { /** * This resource can be useful for getting back a set of subnet IDs. * + * ## Example Usage + * + * The following shows outputting all CIDR blocks for every subnet ID in a VPC. + * + * The following example retrieves a set of all subnets in a VPC with a custom + * tag of `Tier` set to a value of "Private" so that the `aws.ec2.Instance` resource + * can loop through the subnets, putting instances across availability zones. + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.ec2.Ec2Functions;
+     * import com.pulumi.aws.ec2.inputs.GetSubnetsArgs;
+     * import com.pulumi.aws.ec2.Instance;
+     * import com.pulumi.aws.ec2.InstanceArgs;
+     * import com.pulumi.codegen.internal.KeyedValue;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var private = Ec2Functions.getSubnets(GetSubnetsArgs.builder()
+     *             .filters(GetSubnetsFilterArgs.builder()
+     *                 .name("vpc-id")
+     *                 .values(vpcId)
+     *                 .build())
+     *             .tags(Map.of("Tier", "Private"))
+     *             .build());
+     * 
+     *         for (var range : KeyedValue.of(com.pulumi.std.StdFunctions(TosetArgs.builder()
+     *             .input(private_.ids())
+     *             .build()).result())) {
+     *             new Instance("app-" + range.key(), InstanceArgs.builder()
+     *                 .ami(ami)
+     *                 .instanceType("t2.micro")
+     *                 .subnetId(range.value())
+     *                 .build());
+     *         }
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * */ public static Output getSubnets(GetSubnetsArgs args) { return getSubnets(args, InvokeOptions.Empty); @@ -17930,6 +18098,62 @@ public static Output getSubnets(GetSubnetsArgs args) { /** * This resource can be useful for getting back a set of subnet IDs. * + * ## Example Usage + * + * The following shows outputting all CIDR blocks for every subnet ID in a VPC. + * + * The following example retrieves a set of all subnets in a VPC with a custom + * tag of `Tier` set to a value of "Private" so that the `aws.ec2.Instance` resource + * can loop through the subnets, putting instances across availability zones. + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.ec2.Ec2Functions;
+     * import com.pulumi.aws.ec2.inputs.GetSubnetsArgs;
+     * import com.pulumi.aws.ec2.Instance;
+     * import com.pulumi.aws.ec2.InstanceArgs;
+     * import com.pulumi.codegen.internal.KeyedValue;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var private = Ec2Functions.getSubnets(GetSubnetsArgs.builder()
+     *             .filters(GetSubnetsFilterArgs.builder()
+     *                 .name("vpc-id")
+     *                 .values(vpcId)
+     *                 .build())
+     *             .tags(Map.of("Tier", "Private"))
+     *             .build());
+     * 
+     *         for (var range : KeyedValue.of(com.pulumi.std.StdFunctions(TosetArgs.builder()
+     *             .input(private_.ids())
+     *             .build()).result())) {
+     *             new Instance("app-" + range.key(), InstanceArgs.builder()
+     *                 .ami(ami)
+     *                 .instanceType("t2.micro")
+     *                 .subnetId(range.value())
+     *                 .build());
+     *         }
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * */ public static CompletableFuture getSubnetsPlain(GetSubnetsPlainArgs args) { return getSubnetsPlain(args, InvokeOptions.Empty); @@ -17937,6 +18161,62 @@ public static CompletableFuture getSubnetsPlain(GetSubnetsPlai /** * This resource can be useful for getting back a set of subnet IDs. * + * ## Example Usage + * + * The following shows outputting all CIDR blocks for every subnet ID in a VPC. + * + * The following example retrieves a set of all subnets in a VPC with a custom + * tag of `Tier` set to a value of "Private" so that the `aws.ec2.Instance` resource + * can loop through the subnets, putting instances across availability zones. + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.ec2.Ec2Functions;
+     * import com.pulumi.aws.ec2.inputs.GetSubnetsArgs;
+     * import com.pulumi.aws.ec2.Instance;
+     * import com.pulumi.aws.ec2.InstanceArgs;
+     * import com.pulumi.codegen.internal.KeyedValue;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var private = Ec2Functions.getSubnets(GetSubnetsArgs.builder()
+     *             .filters(GetSubnetsFilterArgs.builder()
+     *                 .name("vpc-id")
+     *                 .values(vpcId)
+     *                 .build())
+     *             .tags(Map.of("Tier", "Private"))
+     *             .build());
+     * 
+     *         for (var range : KeyedValue.of(com.pulumi.std.StdFunctions(TosetArgs.builder()
+     *             .input(private_.ids())
+     *             .build()).result())) {
+     *             new Instance("app-" + range.key(), InstanceArgs.builder()
+     *                 .ami(ami)
+     *                 .instanceType("t2.micro")
+     *                 .subnetId(range.value())
+     *                 .build());
+     *         }
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * */ public static Output getSubnets(GetSubnetsArgs args, InvokeOptions options) { return Deployment.getInstance().invoke("aws:ec2/getSubnets:getSubnets", TypeShape.of(GetSubnetsResult.class), args, Utilities.withVersion(options)); @@ -17944,6 +18224,62 @@ public static Output getSubnets(GetSubnetsArgs args, InvokeOpt /** * This resource can be useful for getting back a set of subnet IDs. * + * ## Example Usage + * + * The following shows outputting all CIDR blocks for every subnet ID in a VPC. + * + * The following example retrieves a set of all subnets in a VPC with a custom + * tag of `Tier` set to a value of "Private" so that the `aws.ec2.Instance` resource + * can loop through the subnets, putting instances across availability zones. + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.ec2.Ec2Functions;
+     * import com.pulumi.aws.ec2.inputs.GetSubnetsArgs;
+     * import com.pulumi.aws.ec2.Instance;
+     * import com.pulumi.aws.ec2.InstanceArgs;
+     * import com.pulumi.codegen.internal.KeyedValue;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var private = Ec2Functions.getSubnets(GetSubnetsArgs.builder()
+     *             .filters(GetSubnetsFilterArgs.builder()
+     *                 .name("vpc-id")
+     *                 .values(vpcId)
+     *                 .build())
+     *             .tags(Map.of("Tier", "Private"))
+     *             .build());
+     * 
+     *         for (var range : KeyedValue.of(com.pulumi.std.StdFunctions(TosetArgs.builder()
+     *             .input(private_.ids())
+     *             .build()).result())) {
+     *             new Instance("app-" + range.key(), InstanceArgs.builder()
+     *                 .ami(ami)
+     *                 .instanceType("t2.micro")
+     *                 .subnetId(range.value())
+     *                 .build());
+     *         }
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * */ public static Output getSubnets(GetSubnetsArgs args, InvokeOutputOptions options) { return Deployment.getInstance().invoke("aws:ec2/getSubnets:getSubnets", TypeShape.of(GetSubnetsResult.class), args, Utilities.withVersion(options)); @@ -17951,6 +18287,62 @@ public static Output getSubnets(GetSubnetsArgs args, InvokeOut /** * This resource can be useful for getting back a set of subnet IDs. * + * ## Example Usage + * + * The following shows outputting all CIDR blocks for every subnet ID in a VPC. + * + * The following example retrieves a set of all subnets in a VPC with a custom + * tag of `Tier` set to a value of "Private" so that the `aws.ec2.Instance` resource + * can loop through the subnets, putting instances across availability zones. + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.ec2.Ec2Functions;
+     * import com.pulumi.aws.ec2.inputs.GetSubnetsArgs;
+     * import com.pulumi.aws.ec2.Instance;
+     * import com.pulumi.aws.ec2.InstanceArgs;
+     * import com.pulumi.codegen.internal.KeyedValue;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var private = Ec2Functions.getSubnets(GetSubnetsArgs.builder()
+     *             .filters(GetSubnetsFilterArgs.builder()
+     *                 .name("vpc-id")
+     *                 .values(vpcId)
+     *                 .build())
+     *             .tags(Map.of("Tier", "Private"))
+     *             .build());
+     * 
+     *         for (var range : KeyedValue.of(com.pulumi.std.StdFunctions(TosetArgs.builder()
+     *             .input(private_.ids())
+     *             .build()).result())) {
+     *             new Instance("app-" + range.key(), InstanceArgs.builder()
+     *                 .ami(ami)
+     *                 .instanceType("t2.micro")
+     *                 .subnetId(range.value())
+     *                 .build());
+     *         }
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * */ public static CompletableFuture getSubnetsPlain(GetSubnetsPlainArgs args, InvokeOptions options) { return Deployment.getInstance().invokeAsync("aws:ec2/getSubnets:getSubnets", TypeShape.of(GetSubnetsResult.class), args, Utilities.withVersion(options)); diff --git a/sdk/java/src/main/java/com/pulumi/aws/ec2/SecurityGroup.java b/sdk/java/src/main/java/com/pulumi/aws/ec2/SecurityGroup.java index b367e90d7ce..af23fa57eaf 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/ec2/SecurityGroup.java +++ b/sdk/java/src/main/java/com/pulumi/aws/ec2/SecurityGroup.java @@ -331,7 +331,7 @@ * .create("true") * .update("true") * .delete(""" - * ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters "Name=tag:Name,Values=%s" --query "VpcEndpoints[0].VpcEndpointId" --output text` && + * ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters \"Name=tag:Name,Values=%s\" --query \"VpcEndpoints[0].VpcEndpointId\" --output text` && * aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${ENDPOINT_ID} --add-security-group-ids %s --remove-security-group-ids %s * ", tags.workaround1(),tags.workaround2(),id)) * .build(), CustomResourceOptions.builder() @@ -339,7 +339,7 @@ * .build()); * * var exampleResource = new Resource("exampleResource", ResourceArgs.builder() - * .triggers(Map.of("rerun_upon_change_of", StdFunctions.join(JoinArgs.builder() + * .triggers(Map.of("rerunUponChangeOf", StdFunctions.join(JoinArgs.builder() * .separator(",") * .input(exampleAwsVpcEndpoint.securityGroupIds()) * .build()).result())) diff --git a/sdk/java/src/main/java/com/pulumi/aws/ecr/LifecyclePolicy.java b/sdk/java/src/main/java/com/pulumi/aws/ecr/LifecyclePolicy.java index cab62854bfd..71cf8ea703d 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/ecr/LifecyclePolicy.java +++ b/sdk/java/src/main/java/com/pulumi/aws/ecr/LifecyclePolicy.java @@ -56,18 +56,18 @@ * .repository(example.name()) * .policy(""" * { - * "rules": [ + * \"rules\": [ * { - * "rulePriority": 1, - * "description": "Expire images older than 14 days", - * "selection": { - * "tagStatus": "untagged", - * "countType": "sinceImagePushed", - * "countUnit": "days", - * "countNumber": 14 + * \"rulePriority\": 1, + * \"description\": \"Expire images older than 14 days\", + * \"selection\": { + * \"tagStatus\": \"untagged\", + * \"countType\": \"sinceImagePushed\", + * \"countUnit\": \"days\", + * \"countNumber\": 14 * }, - * "action": { - * "type": "expire" + * \"action\": { + * \"type\": \"expire\" * } * } * ] @@ -114,18 +114,18 @@ * .repository(example.name()) * .policy(""" * { - * "rules": [ + * \"rules\": [ * { - * "rulePriority": 1, - * "description": "Keep last 30 images", - * "selection": { - * "tagStatus": "tagged", - * "tagPrefixList": ["v"], - * "countType": "imageCountMoreThan", - * "countNumber": 30 + * \"rulePriority\": 1, + * \"description\": \"Keep last 30 images\", + * \"selection\": { + * \"tagStatus\": \"tagged\", + * \"tagPrefixList\": [\"v\"], + * \"countType\": \"imageCountMoreThan\", + * \"countNumber\": 30 * }, - * "action": { - * "type": "expire" + * \"action\": { + * \"type\": \"expire\" * } * } * ] diff --git a/sdk/java/src/main/java/com/pulumi/aws/ecr/RepositoryCreationTemplate.java b/sdk/java/src/main/java/com/pulumi/aws/ecr/RepositoryCreationTemplate.java index 3c1da65b21b..4218e00fdb2 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/ecr/RepositoryCreationTemplate.java +++ b/sdk/java/src/main/java/com/pulumi/aws/ecr/RepositoryCreationTemplate.java @@ -86,18 +86,18 @@ * .repositoryPolicy(example.json()) * .lifecyclePolicy(""" * { - * "rules": [ + * \"rules\": [ * { - * "rulePriority": 1, - * "description": "Expire images older than 14 days", - * "selection": { - * "tagStatus": "untagged", - * "countType": "sinceImagePushed", - * "countUnit": "days", - * "countNumber": 14 + * \"rulePriority\": 1, + * \"description\": \"Expire images older than 14 days\", + * \"selection\": { + * \"tagStatus\": \"untagged\", + * \"countType\": \"sinceImagePushed\", + * \"countUnit\": \"days\", + * \"countNumber\": 14 * }, - * "action": { - * "type": "expire" + * \"action\": { + * \"type\": \"expire\" * } * } * ] diff --git a/sdk/java/src/main/java/com/pulumi/aws/ecs/EcsFunctions.java b/sdk/java/src/main/java/com/pulumi/aws/ecs/EcsFunctions.java index 9ce0968965b..c60d2cfc12f 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/ecs/EcsFunctions.java +++ b/sdk/java/src/main/java/com/pulumi/aws/ecs/EcsFunctions.java @@ -981,16 +981,16 @@ public static CompletableFuture getServicePlain(GetServicePlai * .containerDefinitions(""" * [ * { - * "cpu": 128, - * "environment": [{ - * "name": "SECRET", - * "value": "KEY" + * \"cpu\": 128, + * \"environment\": [{ + * \"name\": \"SECRET\", + * \"value\": \"KEY\" * }], - * "essential": true, - * "image": "mongo:latest", - * "memory": 128, - * "memoryReservation": 64, - * "name": "mongodb" + * \"essential\": true, + * \"image\": \"mongo:latest\", + * \"memory\": 128, + * \"memoryReservation\": 64, + * \"name\": \"mongodb\" * } * ] * """) @@ -1060,16 +1060,16 @@ public static Output getTaskDefinition(GetTaskDefinitio * .containerDefinitions(""" * [ * { - * "cpu": 128, - * "environment": [{ - * "name": "SECRET", - * "value": "KEY" + * \"cpu\": 128, + * \"environment\": [{ + * \"name\": \"SECRET\", + * \"value\": \"KEY\" * }], - * "essential": true, - * "image": "mongo:latest", - * "memory": 128, - * "memoryReservation": 64, - * "name": "mongodb" + * \"essential\": true, + * \"image\": \"mongo:latest\", + * \"memory\": 128, + * \"memoryReservation\": 64, + * \"name\": \"mongodb\" * } * ] * """) @@ -1139,16 +1139,16 @@ public static CompletableFuture getTaskDefinitionPlain( * .containerDefinitions(""" * [ * { - * "cpu": 128, - * "environment": [{ - * "name": "SECRET", - * "value": "KEY" + * \"cpu\": 128, + * \"environment\": [{ + * \"name\": \"SECRET\", + * \"value\": \"KEY\" * }], - * "essential": true, - * "image": "mongo:latest", - * "memory": 128, - * "memoryReservation": 64, - * "name": "mongodb" + * \"essential\": true, + * \"image\": \"mongo:latest\", + * \"memory\": 128, + * \"memoryReservation\": 64, + * \"name\": \"mongodb\" * } * ] * """) @@ -1218,16 +1218,16 @@ public static Output getTaskDefinition(GetTaskDefinitio * .containerDefinitions(""" * [ * { - * "cpu": 128, - * "environment": [{ - * "name": "SECRET", - * "value": "KEY" + * \"cpu\": 128, + * \"environment\": [{ + * \"name\": \"SECRET\", + * \"value\": \"KEY\" * }], - * "essential": true, - * "image": "mongo:latest", - * "memory": 128, - * "memoryReservation": 64, - * "name": "mongodb" + * \"essential\": true, + * \"image\": \"mongo:latest\", + * \"memory\": 128, + * \"memoryReservation\": 64, + * \"name\": \"mongodb\" * } * ] * """) @@ -1297,16 +1297,16 @@ public static Output getTaskDefinition(GetTaskDefinitio * .containerDefinitions(""" * [ * { - * "cpu": 128, - * "environment": [{ - * "name": "SECRET", - * "value": "KEY" + * \"cpu\": 128, + * \"environment\": [{ + * \"name\": \"SECRET\", + * \"value\": \"KEY\" * }], - * "essential": true, - * "image": "mongo:latest", - * "memory": 128, - * "memoryReservation": 64, - * "name": "mongodb" + * \"essential\": true, + * \"image\": \"mongo:latest\", + * \"memory\": 128, + * \"memoryReservation\": 64, + * \"name\": \"mongodb\" * } * ] * """) diff --git a/sdk/java/src/main/java/com/pulumi/aws/eks/EksFunctions.java b/sdk/java/src/main/java/com/pulumi/aws/eks/EksFunctions.java index 96f2453b70f..c4eb1aef50a 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/eks/EksFunctions.java +++ b/sdk/java/src/main/java/com/pulumi/aws/eks/EksFunctions.java @@ -1746,6 +1746,8 @@ public static CompletableFuture getClusterVersionsPlai /** * Retrieve EKS Clusters list * + * ## Example Usage + * */ public static Output getClusters() { return getClusters(GetClustersArgs.Empty, InvokeOptions.Empty); @@ -1753,6 +1755,8 @@ public static Output getClusters() { /** * Retrieve EKS Clusters list * + * ## Example Usage + * */ public static CompletableFuture getClustersPlain() { return getClustersPlain(GetClustersPlainArgs.Empty, InvokeOptions.Empty); @@ -1760,6 +1764,8 @@ public static CompletableFuture getClustersPlain() { /** * Retrieve EKS Clusters list * + * ## Example Usage + * */ public static Output getClusters(GetClustersArgs args) { return getClusters(args, InvokeOptions.Empty); @@ -1767,6 +1773,8 @@ public static Output getClusters(GetClustersArgs args) { /** * Retrieve EKS Clusters list * + * ## Example Usage + * */ public static CompletableFuture getClustersPlain(GetClustersPlainArgs args) { return getClustersPlain(args, InvokeOptions.Empty); @@ -1774,6 +1782,8 @@ public static CompletableFuture getClustersPlain(GetClustersP /** * Retrieve EKS Clusters list * + * ## Example Usage + * */ public static Output getClusters(GetClustersArgs args, InvokeOptions options) { return Deployment.getInstance().invoke("aws:eks/getClusters:getClusters", TypeShape.of(GetClustersResult.class), args, Utilities.withVersion(options)); @@ -1781,6 +1791,8 @@ public static Output getClusters(GetClustersArgs args, Invoke /** * Retrieve EKS Clusters list * + * ## Example Usage + * */ public static Output getClusters(GetClustersArgs args, InvokeOutputOptions options) { return Deployment.getInstance().invoke("aws:eks/getClusters:getClusters", TypeShape.of(GetClustersResult.class), args, Utilities.withVersion(options)); @@ -1788,6 +1800,8 @@ public static Output getClusters(GetClustersArgs args, Invoke /** * Retrieve EKS Clusters list * + * ## Example Usage + * */ public static CompletableFuture getClustersPlain(GetClustersPlainArgs args, InvokeOptions options) { return Deployment.getInstance().invokeAsync("aws:eks/getClusters:getClusters", TypeShape.of(GetClustersResult.class), args, Utilities.withVersion(options)); diff --git a/sdk/java/src/main/java/com/pulumi/aws/elasticsearch/Domain.java b/sdk/java/src/main/java/com/pulumi/aws/elasticsearch/Domain.java index 5ba0f1ffc6c..59e350afc67 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/elasticsearch/Domain.java +++ b/sdk/java/src/main/java/com/pulumi/aws/elasticsearch/Domain.java @@ -112,15 +112,15 @@ * .domainName(domain) * .accessPolicies(""" * { - * "Version": "2012-10-17", - * "Statement": [ + * \"Version\": \"2012-10-17\", + * \"Statement\": [ * { - * "Action": "es:*", - * "Principal": "*", - * "Effect": "Allow", - * "Resource": "arn:aws:es:%s:%s:domain/%s/*", - * "Condition": { - * "IpAddress": {"aws:SourceIp": ["66.193.100.22/32"]} + * \"Action\": \"es:*\", + * \"Principal\": \"*\", + * \"Effect\": \"Allow\", + * \"Resource\": \"arn:aws:es:%s:%s:domain/%s/*\", + * \"Condition\": { + * \"IpAddress\": {\"aws:SourceIp\": [\"66.193.100.22/32\"]} * } * } * ] @@ -291,15 +291,15 @@ * .advancedOptions(Map.of("rest.action.multi.allow_explicit_index", "true")) * .accessPolicies(""" * { - * "Version": "2012-10-17", - * "Statement": [ - * { - * "Action": "es:*", - * "Principal": "*", - * "Effect": "Allow", - * "Resource": "arn:aws:es:%s:%s:domain/%s/*" - * } - * ] + * \t\"Version\": \"2012-10-17\", + * \t\"Statement\": [ + * \t\t{ + * \t\t\t\"Action\": \"es:*\", + * \t\t\t\"Principal\": \"*\", + * \t\t\t\"Effect\": \"Allow\", + * \t\t\t\"Resource\": \"arn:aws:es:%s:%s:domain/%s/*\" + * \t\t} + * \t] * } * ", current.region(),currentGetCallerIdentity.accountId(),domain)) * .tags(Map.of("Domain", "TestDomain")) diff --git a/sdk/java/src/main/java/com/pulumi/aws/elasticsearch/DomainPolicy.java b/sdk/java/src/main/java/com/pulumi/aws/elasticsearch/DomainPolicy.java index b7189529452..84e45fe0abb 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/elasticsearch/DomainPolicy.java +++ b/sdk/java/src/main/java/com/pulumi/aws/elasticsearch/DomainPolicy.java @@ -51,16 +51,16 @@ * .domainName(example.domainName()) * .accessPolicies(example.arn().applyValue(_arn -> """ * { - * "Version": "2012-10-17", - * "Statement": [ + * \"Version\": \"2012-10-17\", + * \"Statement\": [ * { - * "Action": "es:*", - * "Principal": "*", - * "Effect": "Allow", - * "Condition": { - * "IpAddress": {"aws:SourceIp": "127.0.0.1/32"} + * \"Action\": \"es:*\", + * \"Principal\": \"*\", + * \"Effect\": \"Allow\", + * \"Condition\": { + * \"IpAddress\": {\"aws:SourceIp\": \"127.0.0.1/32\"} * }, - * "Resource": "%s/*" + * \"Resource\": \"%s/*\" * } * ] * } diff --git a/sdk/java/src/main/java/com/pulumi/aws/emr/Cluster.java b/sdk/java/src/main/java/com/pulumi/aws/emr/Cluster.java index 45f8efa0aff..69ed0a86243 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/emr/Cluster.java +++ b/sdk/java/src/main/java/com/pulumi/aws/emr/Cluster.java @@ -67,9 +67,9 @@ * .applications("Spark") * .additionalInfo(""" * { - * "instanceAwsClientConfiguration": { - * "proxyPort": 8099, - * "proxyHost": "myproxy.example.com" + * \"instanceAwsClientConfiguration\": { + * \"proxyPort\": 8099, + * \"proxyHost\": \"myproxy.example.com\" * } * } * """) @@ -95,31 +95,31 @@ * .bidPrice("0.30") * .autoscalingPolicy(""" * { - * "Constraints": { - * "MinCapacity": 1, - * "MaxCapacity": 2 + * \"Constraints\": { + * \"MinCapacity\": 1, + * \"MaxCapacity\": 2 * }, - * "Rules": [ + * \"Rules\": [ * { - * "Name": "ScaleOutMemoryPercentage", - * "Description": "Scale out if YARNMemoryAvailablePercentage is less than 15", - * "Action": { - * "SimpleScalingPolicyConfiguration": { - * "AdjustmentType": "CHANGE_IN_CAPACITY", - * "ScalingAdjustment": 1, - * "CoolDown": 300 + * \"Name\": \"ScaleOutMemoryPercentage\", + * \"Description\": \"Scale out if YARNMemoryAvailablePercentage is less than 15\", + * \"Action\": { + * \"SimpleScalingPolicyConfiguration\": { + * \"AdjustmentType\": \"CHANGE_IN_CAPACITY\", + * \"ScalingAdjustment\": 1, + * \"CoolDown\": 300 * } * }, - * "Trigger": { - * "CloudWatchAlarmDefinition": { - * "ComparisonOperator": "LESS_THAN", - * "EvaluationPeriods": 1, - * "MetricName": "YARNMemoryAvailablePercentage", - * "Namespace": "AWS/ElasticMapReduce", - * "Period": 300, - * "Statistic": "AVERAGE", - * "Threshold": 15.0, - * "Unit": "PERCENT" + * \"Trigger\": { + * \"CloudWatchAlarmDefinition\": { + * \"ComparisonOperator\": \"LESS_THAN\", + * \"EvaluationPeriods\": 1, + * \"MetricName\": \"YARNMemoryAvailablePercentage\", + * \"Namespace\": \"AWS/ElasticMapReduce\", + * \"Period\": 300, + * \"Statistic\": \"AVERAGE\", + * \"Threshold\": 15.0, + * \"Unit\": \"PERCENT\" * } * } * } @@ -142,28 +142,28 @@ * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * }, * { - * "Classification": "spark-env", - * "Configurations": [ + * \"Classification\": \"spark-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) @@ -551,16 +551,16 @@ public Output> configurations() { * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) @@ -606,16 +606,16 @@ public Output> configurations() { * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) diff --git a/sdk/java/src/main/java/com/pulumi/aws/emr/ClusterArgs.java b/sdk/java/src/main/java/com/pulumi/aws/emr/ClusterArgs.java index 9fdde1638dd..2ec5678763a 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/emr/ClusterArgs.java +++ b/sdk/java/src/main/java/com/pulumi/aws/emr/ClusterArgs.java @@ -151,16 +151,16 @@ public Optional> configurations() { * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) @@ -206,16 +206,16 @@ public Optional> configurations() { * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) @@ -862,16 +862,16 @@ public Builder configurations(String configurations) { * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) @@ -921,16 +921,16 @@ public Builder configurationsJson(@Nullable Output configurationsJson) { * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) diff --git a/sdk/java/src/main/java/com/pulumi/aws/emr/InstanceGroup.java b/sdk/java/src/main/java/com/pulumi/aws/emr/InstanceGroup.java index 9b25890e82f..699b1df5582 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/emr/InstanceGroup.java +++ b/sdk/java/src/main/java/com/pulumi/aws/emr/InstanceGroup.java @@ -144,16 +144,16 @@ public Output clusterId() { * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) @@ -197,16 +197,16 @@ public Output clusterId() { * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) diff --git a/sdk/java/src/main/java/com/pulumi/aws/emr/InstanceGroupArgs.java b/sdk/java/src/main/java/com/pulumi/aws/emr/InstanceGroupArgs.java index 0bf4381df74..f610e539328 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/emr/InstanceGroupArgs.java +++ b/sdk/java/src/main/java/com/pulumi/aws/emr/InstanceGroupArgs.java @@ -94,16 +94,16 @@ public Output clusterId() { * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) @@ -147,16 +147,16 @@ public Output clusterId() { * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) @@ -387,16 +387,16 @@ public Builder clusterId(String clusterId) { * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) @@ -444,16 +444,16 @@ public Builder configurationsJson(@Nullable Output configurationsJson) { * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) diff --git a/sdk/java/src/main/java/com/pulumi/aws/emr/SecurityConfiguration.java b/sdk/java/src/main/java/com/pulumi/aws/emr/SecurityConfiguration.java index b618a9f677e..f8796530b2d 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/emr/SecurityConfiguration.java +++ b/sdk/java/src/main/java/com/pulumi/aws/emr/SecurityConfiguration.java @@ -44,18 +44,18 @@ * .name("emrsc_other") * .configuration(""" * { - * "EncryptionConfiguration": { - * "AtRestEncryptionConfiguration": { - * "S3EncryptionConfiguration": { - * "EncryptionMode": "SSE-S3" + * \"EncryptionConfiguration\": { + * \"AtRestEncryptionConfiguration\": { + * \"S3EncryptionConfiguration\": { + * \"EncryptionMode\": \"SSE-S3\" * }, - * "LocalDiskEncryptionConfiguration": { - * "EncryptionKeyProviderType": "AwsKms", - * "AwsKmsKey": "arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key" + * \"LocalDiskEncryptionConfiguration\": { + * \"EncryptionKeyProviderType\": \"AwsKms\", + * \"AwsKmsKey\": \"arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key\" * } * }, - * "EnableInTransitEncryption": false, - * "EnableAtRestEncryption": true + * \"EnableInTransitEncryption\": false, + * \"EnableAtRestEncryption\": true * } * } * """) diff --git a/sdk/java/src/main/java/com/pulumi/aws/emr/inputs/ClusterState.java b/sdk/java/src/main/java/com/pulumi/aws/emr/inputs/ClusterState.java index dc2f638d90a..1276d687fb7 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/emr/inputs/ClusterState.java +++ b/sdk/java/src/main/java/com/pulumi/aws/emr/inputs/ClusterState.java @@ -172,16 +172,16 @@ public Optional> configurations() { * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) @@ -227,16 +227,16 @@ public Optional> configurations() { * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) @@ -947,16 +947,16 @@ public Builder configurations(String configurations) { * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) @@ -1006,16 +1006,16 @@ public Builder configurationsJson(@Nullable Output configurationsJson) { * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) diff --git a/sdk/java/src/main/java/com/pulumi/aws/emr/inputs/InstanceGroupState.java b/sdk/java/src/main/java/com/pulumi/aws/emr/inputs/InstanceGroupState.java index f803c17d6c4..cd0dc2dd60a 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/emr/inputs/InstanceGroupState.java +++ b/sdk/java/src/main/java/com/pulumi/aws/emr/inputs/InstanceGroupState.java @@ -93,16 +93,16 @@ public Optional> clusterId() { * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) @@ -146,16 +146,16 @@ public Optional> clusterId() { * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) @@ -418,16 +418,16 @@ public Builder clusterId(String clusterId) { * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) @@ -475,16 +475,16 @@ public Builder configurationsJson(@Nullable Output configurationsJson) { * .configurationsJson(""" * [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \"Classification\": \"hadoop-env\", + * \"Configurations\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \"Classification\": \"export\", + * \"Properties\": { + * \"JAVA_HOME\": \"/usr/lib/jvm/java-1.8.0\" * } * } * ], - * "Properties": {} + * \"Properties\": {} * } * ] * """) diff --git a/sdk/java/src/main/java/com/pulumi/aws/evidently/Segment.java b/sdk/java/src/main/java/com/pulumi/aws/evidently/Segment.java index a9b15115639..ad3e5d34fa9 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/evidently/Segment.java +++ b/sdk/java/src/main/java/com/pulumi/aws/evidently/Segment.java @@ -86,9 +86,9 @@ * .name("example") * .pattern(""" * { - * "Price": [ + * \"Price\": [ * { - * "numeric": [">",10,"<=",20] + * \"numeric\": [\">\",10,\"<=\",20] * } * ] * } diff --git a/sdk/java/src/main/java/com/pulumi/aws/glue/Connection.java b/sdk/java/src/main/java/com/pulumi/aws/glue/Connection.java index 909bb83f3c2..859db5e002c 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/glue/Connection.java +++ b/sdk/java/src/main/java/com/pulumi/aws/glue/Connection.java @@ -376,17 +376,19 @@ * jsonProperty("credentials", StdFunctions.base64encode(Base64encodeArgs.builder() * .input(""" * }{{@code - * "type": "service_account", - * "project_id": "example-project", - * "private_key_id": "example-key", - * "private_key": "-----BEGIN RSA PRIVATE KEY-----\nREDACTED\n-----END RSA PRIVATE KEY-----", - * "client_email": "example-project}{@literal @}{@code appspot.gserviceaccount.com", - * "client_id": example-client", - * "auth_uri": "https://accounts.google.com/o/oauth2/auth", - * "token_uri": "https://oauth2.googleapis.com/token", - * "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - * "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com", - * "universe_domain": "googleapis.com" + * \"type\": \"service_account\", + * \"project_id\": \"example-project\", + * \"private_key_id\": \"example-key\", + * \"private_key\": \"-----BEGIN RSA PRIVATE KEY-----\ + * REDACTED\ + * -----END RSA PRIVATE KEY-----\", + * \"client_email\": \"example-project}{@literal @}{@code appspot.gserviceaccount.com\", + * \"client_id\": example-client\", + * \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\", + * \"token_uri\": \"https://oauth2.googleapis.com/token\", + * \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\", + * \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com\", + * \"universe_domain\": \"googleapis.com\" * }}{@code * """) * .build()).result()) diff --git a/sdk/java/src/main/java/com/pulumi/aws/glue/Crawler.java b/sdk/java/src/main/java/com/pulumi/aws/glue/Crawler.java index b06107aed02..4cdf0846a5d 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/glue/Crawler.java +++ b/sdk/java/src/main/java/com/pulumi/aws/glue/Crawler.java @@ -190,9 +190,9 @@ * .build()) * .configuration(""" * { - * "Version":1.0, - * "Grouping": { - * "TableGroupingPolicy": "CombineCompatibleSchemas" + * \"Version\":1.0, + * \"Grouping\": { + * \"TableGroupingPolicy\": \"CombineCompatibleSchemas\" * } * } * """) diff --git a/sdk/java/src/main/java/com/pulumi/aws/imagebuilder/Workflow.java b/sdk/java/src/main/java/com/pulumi/aws/imagebuilder/Workflow.java index 11b2e7690be..e9de6d5ff34 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/imagebuilder/Workflow.java +++ b/sdk/java/src/main/java/com/pulumi/aws/imagebuilder/Workflow.java @@ -64,19 +64,19 @@ * action: LaunchInstance * onFailure: Abort * inputs: - * waitFor: "ssmAgent" + * waitFor: \"ssmAgent\" * * - name: TerminateTestInstance * action: TerminateInstance * onFailure: Continue * inputs: - * instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId" + * instanceId.$: \"$.stepOutputs.LaunchTestInstance.instanceId\" * * - name: WaitForActionAtEnd * action: WaitForAction * if: * booleanEquals: true - * value: "$.parameters.waitForActionAtEnd" + * value: \"$.parameters.waitForActionAtEnd\" * """) * .build()); * diff --git a/sdk/java/src/main/java/com/pulumi/aws/iot/CaCertificate.java b/sdk/java/src/main/java/com/pulumi/aws/iot/CaCertificate.java index 7b629b1eb33..e712381f1ae 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/iot/CaCertificate.java +++ b/sdk/java/src/main/java/com/pulumi/aws/iot/CaCertificate.java @@ -25,91 +25,6 @@ * * ## Example Usage * - *
- * {@code
- * package generated_program;
- * 
- * import com.pulumi.Context;
- * import com.pulumi.Pulumi;
- * import com.pulumi.core.Output;
- * import com.pulumi.tls.privateKey;
- * import com.pulumi.tls.privateKeyArgs;
- * import com.pulumi.tls.selfSignedCert;
- * import com.pulumi.tls.selfSignedCertArgs;
- * import com.pulumi.aws.iot.IotFunctions;
- * import com.pulumi.aws.iot.inputs.GetRegistrationCodeArgs;
- * import com.pulumi.tls.certRequest;
- * import com.pulumi.tls.certRequestArgs;
- * import com.pulumi.tls.locallySignedCert;
- * import com.pulumi.tls.locallySignedCertArgs;
- * import com.pulumi.aws.iot.CaCertificate;
- * import com.pulumi.aws.iot.CaCertificateArgs;
- * import java.util.List;
- * import java.util.ArrayList;
- * import java.util.Map;
- * import java.io.File;
- * import java.nio.file.Files;
- * import java.nio.file.Paths;
- * 
- * public class App {
- *     public static void main(String[] args) {
- *         Pulumi.run(App::stack);
- *     }
- * 
- *     public static void stack(Context ctx) {
- *         var caPrivateKey = new PrivateKey("caPrivateKey", PrivateKeyArgs.builder()
- *             .algorithm("RSA")
- *             .build());
- * 
- *         var ca = new SelfSignedCert("ca", SelfSignedCertArgs.builder()
- *             .privateKeyPem(caPrivateKey.privateKeyPem())
- *             .subject(List.of(Map.ofEntries(
- *                 Map.entry("commonName", "example.com"),
- *                 Map.entry("organization", "ACME Examples, Inc")
- *             )))
- *             .validityPeriodHours(12)
- *             .allowedUses(List.of(            
- *                 "key_encipherment",
- *                 "digital_signature",
- *                 "server_auth"))
- *             .isCaCertificate(true)
- *             .build());
- * 
- *         var verificationPrivateKey = new PrivateKey("verificationPrivateKey", PrivateKeyArgs.builder()
- *             .algorithm("RSA")
- *             .build());
- * 
- *         final var example = IotFunctions.getRegistrationCode(GetRegistrationCodeArgs.builder()
- *             .build());
- * 
- *         var verification = new CertRequest("verification", CertRequestArgs.builder()
- *             .privateKeyPem(verificationPrivateKey.privateKeyPem())
- *             .subject(List.of(Map.of("commonName", example.registrationCode())))
- *             .build());
- * 
- *         var verificationLocallySignedCert = new LocallySignedCert("verificationLocallySignedCert", LocallySignedCertArgs.builder()
- *             .certRequestPem(verification.certRequestPem())
- *             .caPrivateKeyPem(caPrivateKey.privateKeyPem())
- *             .caCertPem(ca.certPem())
- *             .validityPeriodHours(12)
- *             .allowedUses(List.of(            
- *                 "key_encipherment",
- *                 "digital_signature",
- *                 "server_auth"))
- *             .build());
- * 
- *         var exampleCaCertificate = new CaCertificate("exampleCaCertificate", CaCertificateArgs.builder()
- *             .active(true)
- *             .caCertificatePem(ca.certPem())
- *             .verificationCertificatePem(verificationLocallySignedCert.certPem())
- *             .allowAutoRegistration(true)
- *             .build());
- * 
- *     }
- * }
- * }
- * 
- * */ @ResourceType(type="aws:iot/caCertificate:CaCertificate") public class CaCertificate extends com.pulumi.resources.CustomResource { diff --git a/sdk/java/src/main/java/com/pulumi/aws/iot/IotFunctions.java b/sdk/java/src/main/java/com/pulumi/aws/iot/IotFunctions.java index bf7ccff9326..41811470723 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/iot/IotFunctions.java +++ b/sdk/java/src/main/java/com/pulumi/aws/iot/IotFunctions.java @@ -23,69 +23,6 @@ public final class IotFunctions { * * ## Example Usage * - */ - public static Output getEndpoint() { - return getEndpoint(GetEndpointArgs.Empty, InvokeOptions.Empty); - } - /** - * Returns a unique endpoint specific to the AWS account making the call. - * - * ## Example Usage - * - */ - public static CompletableFuture getEndpointPlain() { - return getEndpointPlain(GetEndpointPlainArgs.Empty, InvokeOptions.Empty); - } - /** - * Returns a unique endpoint specific to the AWS account making the call. - * - * ## Example Usage - * - */ - public static Output getEndpoint(GetEndpointArgs args) { - return getEndpoint(args, InvokeOptions.Empty); - } - /** - * Returns a unique endpoint specific to the AWS account making the call. - * - * ## Example Usage - * - */ - public static CompletableFuture getEndpointPlain(GetEndpointPlainArgs args) { - return getEndpointPlain(args, InvokeOptions.Empty); - } - /** - * Returns a unique endpoint specific to the AWS account making the call. - * - * ## Example Usage - * - */ - public static Output getEndpoint(GetEndpointArgs args, InvokeOptions options) { - return Deployment.getInstance().invoke("aws:iot/getEndpoint:getEndpoint", TypeShape.of(GetEndpointResult.class), args, Utilities.withVersion(options)); - } - /** - * Returns a unique endpoint specific to the AWS account making the call. - * - * ## Example Usage - * - */ - public static Output getEndpoint(GetEndpointArgs args, InvokeOutputOptions options) { - return Deployment.getInstance().invoke("aws:iot/getEndpoint:getEndpoint", TypeShape.of(GetEndpointResult.class), args, Utilities.withVersion(options)); - } - /** - * Returns a unique endpoint specific to the AWS account making the call. - * - * ## Example Usage - * - */ - public static CompletableFuture getEndpointPlain(GetEndpointPlainArgs args, InvokeOptions options) { - return Deployment.getInstance().invokeAsync("aws:iot/getEndpoint:getEndpoint", TypeShape.of(GetEndpointResult.class), args, Utilities.withVersion(options)); - } - /** - * Gets a registration code used to register a CA certificate with AWS IoT. - * - * ## Example Usage - * *
      * {@code
      * package generated_program;
@@ -94,11 +31,9 @@ public static CompletableFuture getEndpointPlain(GetEndpointP
      * import com.pulumi.Pulumi;
      * import com.pulumi.core.Output;
      * import com.pulumi.aws.iot.IotFunctions;
-     * import com.pulumi.aws.iot.inputs.GetRegistrationCodeArgs;
-     * import com.pulumi.tls.privateKey;
-     * import com.pulumi.tls.privateKeyArgs;
-     * import com.pulumi.tls.certRequest;
-     * import com.pulumi.tls.certRequestArgs;
+     * import com.pulumi.aws.iot.inputs.GetEndpointArgs;
+     * import com.pulumi.kubernetes.Pod;
+     * import com.pulumi.kubernetes.PodArgs;
      * import java.util.List;
      * import java.util.ArrayList;
      * import java.util.Map;
@@ -112,17 +47,19 @@ public static CompletableFuture getEndpointPlain(GetEndpointP
      *     }
      * 
      *     public static void stack(Context ctx) {
-     *         final var example = IotFunctions.getRegistrationCode(GetRegistrationCodeArgs.builder()
+     *         final var example = IotFunctions.getEndpoint(GetEndpointArgs.builder()
      *             .build());
      * 
-     *         var verification = new PrivateKey("verification", PrivateKeyArgs.builder()
-     *             .algorithm("RSA")
-     *             .build());
-     * 
-     *         var verificationCertRequest = new CertRequest("verificationCertRequest", CertRequestArgs.builder()
-     *             .keyAlgorithm("RSA")
-     *             .privateKeyPem(verification.privateKeyPem())
-     *             .subject(List.of(Map.of("commonName", example.registrationCode())))
+     *         var agent = new Pod("agent", PodArgs.builder()
+     *             .metadata(List.of(Map.of("name", "my-device")))
+     *             .spec(List.of(Map.of("container", List.of(Map.ofEntries(
+     *                 Map.entry("image", "gcr.io/my-project/image-name"),
+     *                 Map.entry("name", "image-name"),
+     *                 Map.entry("env", List.of(Map.ofEntries(
+     *                     Map.entry("name", "IOT_ENDPOINT"),
+     *                     Map.entry("value", example.endpointAddress())
+     *                 )))
+     *             )))))
      *             .build());
      * 
      *     }
@@ -131,11 +68,11 @@ public static CompletableFuture getEndpointPlain(GetEndpointP
      * 
* */ - public static Output getRegistrationCode() { - return getRegistrationCode(GetRegistrationCodeArgs.Empty, InvokeOptions.Empty); + public static Output getEndpoint() { + return getEndpoint(GetEndpointArgs.Empty, InvokeOptions.Empty); } /** - * Gets a registration code used to register a CA certificate with AWS IoT. + * Returns a unique endpoint specific to the AWS account making the call. * * ## Example Usage * @@ -147,11 +84,9 @@ public static Output getRegistrationCode() { * import com.pulumi.Pulumi; * import com.pulumi.core.Output; * import com.pulumi.aws.iot.IotFunctions; - * import com.pulumi.aws.iot.inputs.GetRegistrationCodeArgs; - * import com.pulumi.tls.privateKey; - * import com.pulumi.tls.privateKeyArgs; - * import com.pulumi.tls.certRequest; - * import com.pulumi.tls.certRequestArgs; + * import com.pulumi.aws.iot.inputs.GetEndpointArgs; + * import com.pulumi.kubernetes.Pod; + * import com.pulumi.kubernetes.PodArgs; * import java.util.List; * import java.util.ArrayList; * import java.util.Map; @@ -165,17 +100,19 @@ public static Output getRegistrationCode() { * } * * public static void stack(Context ctx) { - * final var example = IotFunctions.getRegistrationCode(GetRegistrationCodeArgs.builder() + * final var example = IotFunctions.getEndpoint(GetEndpointArgs.builder() * .build()); * - * var verification = new PrivateKey("verification", PrivateKeyArgs.builder() - * .algorithm("RSA") - * .build()); - * - * var verificationCertRequest = new CertRequest("verificationCertRequest", CertRequestArgs.builder() - * .keyAlgorithm("RSA") - * .privateKeyPem(verification.privateKeyPem()) - * .subject(List.of(Map.of("commonName", example.registrationCode()))) + * var agent = new Pod("agent", PodArgs.builder() + * .metadata(List.of(Map.of("name", "my-device"))) + * .spec(List.of(Map.of("container", List.of(Map.ofEntries( + * Map.entry("image", "gcr.io/my-project/image-name"), + * Map.entry("name", "image-name"), + * Map.entry("env", List.of(Map.ofEntries( + * Map.entry("name", "IOT_ENDPOINT"), + * Map.entry("value", example.endpointAddress()) + * ))) + * ))))) * .build()); * * } @@ -184,11 +121,11 @@ public static Output getRegistrationCode() { * * */ - public static CompletableFuture getRegistrationCodePlain() { - return getRegistrationCodePlain(GetRegistrationCodePlainArgs.Empty, InvokeOptions.Empty); + public static CompletableFuture getEndpointPlain() { + return getEndpointPlain(GetEndpointPlainArgs.Empty, InvokeOptions.Empty); } /** - * Gets a registration code used to register a CA certificate with AWS IoT. + * Returns a unique endpoint specific to the AWS account making the call. * * ## Example Usage * @@ -200,11 +137,9 @@ public static CompletableFuture getRegistrationCodePl * import com.pulumi.Pulumi; * import com.pulumi.core.Output; * import com.pulumi.aws.iot.IotFunctions; - * import com.pulumi.aws.iot.inputs.GetRegistrationCodeArgs; - * import com.pulumi.tls.privateKey; - * import com.pulumi.tls.privateKeyArgs; - * import com.pulumi.tls.certRequest; - * import com.pulumi.tls.certRequestArgs; + * import com.pulumi.aws.iot.inputs.GetEndpointArgs; + * import com.pulumi.kubernetes.Pod; + * import com.pulumi.kubernetes.PodArgs; * import java.util.List; * import java.util.ArrayList; * import java.util.Map; @@ -218,17 +153,19 @@ public static CompletableFuture getRegistrationCodePl * } * * public static void stack(Context ctx) { - * final var example = IotFunctions.getRegistrationCode(GetRegistrationCodeArgs.builder() - * .build()); - * - * var verification = new PrivateKey("verification", PrivateKeyArgs.builder() - * .algorithm("RSA") + * final var example = IotFunctions.getEndpoint(GetEndpointArgs.builder() * .build()); * - * var verificationCertRequest = new CertRequest("verificationCertRequest", CertRequestArgs.builder() - * .keyAlgorithm("RSA") - * .privateKeyPem(verification.privateKeyPem()) - * .subject(List.of(Map.of("commonName", example.registrationCode()))) + * var agent = new Pod("agent", PodArgs.builder() + * .metadata(List.of(Map.of("name", "my-device"))) + * .spec(List.of(Map.of("container", List.of(Map.ofEntries( + * Map.entry("image", "gcr.io/my-project/image-name"), + * Map.entry("name", "image-name"), + * Map.entry("env", List.of(Map.ofEntries( + * Map.entry("name", "IOT_ENDPOINT"), + * Map.entry("value", example.endpointAddress()) + * ))) + * ))))) * .build()); * * } @@ -237,11 +174,11 @@ public static CompletableFuture getRegistrationCodePl * * */ - public static Output getRegistrationCode(GetRegistrationCodeArgs args) { - return getRegistrationCode(args, InvokeOptions.Empty); + public static Output getEndpoint(GetEndpointArgs args) { + return getEndpoint(args, InvokeOptions.Empty); } /** - * Gets a registration code used to register a CA certificate with AWS IoT. + * Returns a unique endpoint specific to the AWS account making the call. * * ## Example Usage * @@ -253,11 +190,9 @@ public static Output getRegistrationCode(GetRegistrat * import com.pulumi.Pulumi; * import com.pulumi.core.Output; * import com.pulumi.aws.iot.IotFunctions; - * import com.pulumi.aws.iot.inputs.GetRegistrationCodeArgs; - * import com.pulumi.tls.privateKey; - * import com.pulumi.tls.privateKeyArgs; - * import com.pulumi.tls.certRequest; - * import com.pulumi.tls.certRequestArgs; + * import com.pulumi.aws.iot.inputs.GetEndpointArgs; + * import com.pulumi.kubernetes.Pod; + * import com.pulumi.kubernetes.PodArgs; * import java.util.List; * import java.util.ArrayList; * import java.util.Map; @@ -271,17 +206,19 @@ public static Output getRegistrationCode(GetRegistrat * } * * public static void stack(Context ctx) { - * final var example = IotFunctions.getRegistrationCode(GetRegistrationCodeArgs.builder() - * .build()); - * - * var verification = new PrivateKey("verification", PrivateKeyArgs.builder() - * .algorithm("RSA") + * final var example = IotFunctions.getEndpoint(GetEndpointArgs.builder() * .build()); * - * var verificationCertRequest = new CertRequest("verificationCertRequest", CertRequestArgs.builder() - * .keyAlgorithm("RSA") - * .privateKeyPem(verification.privateKeyPem()) - * .subject(List.of(Map.of("commonName", example.registrationCode()))) + * var agent = new Pod("agent", PodArgs.builder() + * .metadata(List.of(Map.of("name", "my-device"))) + * .spec(List.of(Map.of("container", List.of(Map.ofEntries( + * Map.entry("image", "gcr.io/my-project/image-name"), + * Map.entry("name", "image-name"), + * Map.entry("env", List.of(Map.ofEntries( + * Map.entry("name", "IOT_ENDPOINT"), + * Map.entry("value", example.endpointAddress()) + * ))) + * ))))) * .build()); * * } @@ -290,11 +227,11 @@ public static Output getRegistrationCode(GetRegistrat * * */ - public static CompletableFuture getRegistrationCodePlain(GetRegistrationCodePlainArgs args) { - return getRegistrationCodePlain(args, InvokeOptions.Empty); + public static CompletableFuture getEndpointPlain(GetEndpointPlainArgs args) { + return getEndpointPlain(args, InvokeOptions.Empty); } /** - * Gets a registration code used to register a CA certificate with AWS IoT. + * Returns a unique endpoint specific to the AWS account making the call. * * ## Example Usage * @@ -306,11 +243,9 @@ public static CompletableFuture getRegistrationCodePl * import com.pulumi.Pulumi; * import com.pulumi.core.Output; * import com.pulumi.aws.iot.IotFunctions; - * import com.pulumi.aws.iot.inputs.GetRegistrationCodeArgs; - * import com.pulumi.tls.privateKey; - * import com.pulumi.tls.privateKeyArgs; - * import com.pulumi.tls.certRequest; - * import com.pulumi.tls.certRequestArgs; + * import com.pulumi.aws.iot.inputs.GetEndpointArgs; + * import com.pulumi.kubernetes.Pod; + * import com.pulumi.kubernetes.PodArgs; * import java.util.List; * import java.util.ArrayList; * import java.util.Map; @@ -324,17 +259,19 @@ public static CompletableFuture getRegistrationCodePl * } * * public static void stack(Context ctx) { - * final var example = IotFunctions.getRegistrationCode(GetRegistrationCodeArgs.builder() - * .build()); - * - * var verification = new PrivateKey("verification", PrivateKeyArgs.builder() - * .algorithm("RSA") + * final var example = IotFunctions.getEndpoint(GetEndpointArgs.builder() * .build()); * - * var verificationCertRequest = new CertRequest("verificationCertRequest", CertRequestArgs.builder() - * .keyAlgorithm("RSA") - * .privateKeyPem(verification.privateKeyPem()) - * .subject(List.of(Map.of("commonName", example.registrationCode()))) + * var agent = new Pod("agent", PodArgs.builder() + * .metadata(List.of(Map.of("name", "my-device"))) + * .spec(List.of(Map.of("container", List.of(Map.ofEntries( + * Map.entry("image", "gcr.io/my-project/image-name"), + * Map.entry("name", "image-name"), + * Map.entry("env", List.of(Map.ofEntries( + * Map.entry("name", "IOT_ENDPOINT"), + * Map.entry("value", example.endpointAddress()) + * ))) + * ))))) * .build()); * * } @@ -343,11 +280,11 @@ public static CompletableFuture getRegistrationCodePl * * */ - public static Output getRegistrationCode(GetRegistrationCodeArgs args, InvokeOptions options) { - return Deployment.getInstance().invoke("aws:iot/getRegistrationCode:getRegistrationCode", TypeShape.of(GetRegistrationCodeResult.class), args, Utilities.withVersion(options)); + public static Output getEndpoint(GetEndpointArgs args, InvokeOptions options) { + return Deployment.getInstance().invoke("aws:iot/getEndpoint:getEndpoint", TypeShape.of(GetEndpointResult.class), args, Utilities.withVersion(options)); } /** - * Gets a registration code used to register a CA certificate with AWS IoT. + * Returns a unique endpoint specific to the AWS account making the call. * * ## Example Usage * @@ -359,11 +296,9 @@ public static Output getRegistrationCode(GetRegistrat * import com.pulumi.Pulumi; * import com.pulumi.core.Output; * import com.pulumi.aws.iot.IotFunctions; - * import com.pulumi.aws.iot.inputs.GetRegistrationCodeArgs; - * import com.pulumi.tls.privateKey; - * import com.pulumi.tls.privateKeyArgs; - * import com.pulumi.tls.certRequest; - * import com.pulumi.tls.certRequestArgs; + * import com.pulumi.aws.iot.inputs.GetEndpointArgs; + * import com.pulumi.kubernetes.Pod; + * import com.pulumi.kubernetes.PodArgs; * import java.util.List; * import java.util.ArrayList; * import java.util.Map; @@ -377,17 +312,19 @@ public static Output getRegistrationCode(GetRegistrat * } * * public static void stack(Context ctx) { - * final var example = IotFunctions.getRegistrationCode(GetRegistrationCodeArgs.builder() - * .build()); - * - * var verification = new PrivateKey("verification", PrivateKeyArgs.builder() - * .algorithm("RSA") + * final var example = IotFunctions.getEndpoint(GetEndpointArgs.builder() * .build()); * - * var verificationCertRequest = new CertRequest("verificationCertRequest", CertRequestArgs.builder() - * .keyAlgorithm("RSA") - * .privateKeyPem(verification.privateKeyPem()) - * .subject(List.of(Map.of("commonName", example.registrationCode()))) + * var agent = new Pod("agent", PodArgs.builder() + * .metadata(List.of(Map.of("name", "my-device"))) + * .spec(List.of(Map.of("container", List.of(Map.ofEntries( + * Map.entry("image", "gcr.io/my-project/image-name"), + * Map.entry("name", "image-name"), + * Map.entry("env", List.of(Map.ofEntries( + * Map.entry("name", "IOT_ENDPOINT"), + * Map.entry("value", example.endpointAddress()) + * ))) + * ))))) * .build()); * * } @@ -396,11 +333,11 @@ public static Output getRegistrationCode(GetRegistrat * * */ - public static Output getRegistrationCode(GetRegistrationCodeArgs args, InvokeOutputOptions options) { - return Deployment.getInstance().invoke("aws:iot/getRegistrationCode:getRegistrationCode", TypeShape.of(GetRegistrationCodeResult.class), args, Utilities.withVersion(options)); + public static Output getEndpoint(GetEndpointArgs args, InvokeOutputOptions options) { + return Deployment.getInstance().invoke("aws:iot/getEndpoint:getEndpoint", TypeShape.of(GetEndpointResult.class), args, Utilities.withVersion(options)); } /** - * Gets a registration code used to register a CA certificate with AWS IoT. + * Returns a unique endpoint specific to the AWS account making the call. * * ## Example Usage * @@ -412,11 +349,9 @@ public static Output getRegistrationCode(GetRegistrat * import com.pulumi.Pulumi; * import com.pulumi.core.Output; * import com.pulumi.aws.iot.IotFunctions; - * import com.pulumi.aws.iot.inputs.GetRegistrationCodeArgs; - * import com.pulumi.tls.privateKey; - * import com.pulumi.tls.privateKeyArgs; - * import com.pulumi.tls.certRequest; - * import com.pulumi.tls.certRequestArgs; + * import com.pulumi.aws.iot.inputs.GetEndpointArgs; + * import com.pulumi.kubernetes.Pod; + * import com.pulumi.kubernetes.PodArgs; * import java.util.List; * import java.util.ArrayList; * import java.util.Map; @@ -430,17 +365,19 @@ public static Output getRegistrationCode(GetRegistrat * } * * public static void stack(Context ctx) { - * final var example = IotFunctions.getRegistrationCode(GetRegistrationCodeArgs.builder() - * .build()); - * - * var verification = new PrivateKey("verification", PrivateKeyArgs.builder() - * .algorithm("RSA") + * final var example = IotFunctions.getEndpoint(GetEndpointArgs.builder() * .build()); * - * var verificationCertRequest = new CertRequest("verificationCertRequest", CertRequestArgs.builder() - * .keyAlgorithm("RSA") - * .privateKeyPem(verification.privateKeyPem()) - * .subject(List.of(Map.of("commonName", example.registrationCode()))) + * var agent = new Pod("agent", PodArgs.builder() + * .metadata(List.of(Map.of("name", "my-device"))) + * .spec(List.of(Map.of("container", List.of(Map.ofEntries( + * Map.entry("image", "gcr.io/my-project/image-name"), + * Map.entry("name", "image-name"), + * Map.entry("env", List.of(Map.ofEntries( + * Map.entry("name", "IOT_ENDPOINT"), + * Map.entry("value", example.endpointAddress()) + * ))) + * ))))) * .build()); * * } @@ -449,6 +386,69 @@ public static Output getRegistrationCode(GetRegistrat * * */ + public static CompletableFuture getEndpointPlain(GetEndpointPlainArgs args, InvokeOptions options) { + return Deployment.getInstance().invokeAsync("aws:iot/getEndpoint:getEndpoint", TypeShape.of(GetEndpointResult.class), args, Utilities.withVersion(options)); + } + /** + * Gets a registration code used to register a CA certificate with AWS IoT. + * + * ## Example Usage + * + */ + public static Output getRegistrationCode() { + return getRegistrationCode(GetRegistrationCodeArgs.Empty, InvokeOptions.Empty); + } + /** + * Gets a registration code used to register a CA certificate with AWS IoT. + * + * ## Example Usage + * + */ + public static CompletableFuture getRegistrationCodePlain() { + return getRegistrationCodePlain(GetRegistrationCodePlainArgs.Empty, InvokeOptions.Empty); + } + /** + * Gets a registration code used to register a CA certificate with AWS IoT. + * + * ## Example Usage + * + */ + public static Output getRegistrationCode(GetRegistrationCodeArgs args) { + return getRegistrationCode(args, InvokeOptions.Empty); + } + /** + * Gets a registration code used to register a CA certificate with AWS IoT. + * + * ## Example Usage + * + */ + public static CompletableFuture getRegistrationCodePlain(GetRegistrationCodePlainArgs args) { + return getRegistrationCodePlain(args, InvokeOptions.Empty); + } + /** + * Gets a registration code used to register a CA certificate with AWS IoT. + * + * ## Example Usage + * + */ + public static Output getRegistrationCode(GetRegistrationCodeArgs args, InvokeOptions options) { + return Deployment.getInstance().invoke("aws:iot/getRegistrationCode:getRegistrationCode", TypeShape.of(GetRegistrationCodeResult.class), args, Utilities.withVersion(options)); + } + /** + * Gets a registration code used to register a CA certificate with AWS IoT. + * + * ## Example Usage + * + */ + public static Output getRegistrationCode(GetRegistrationCodeArgs args, InvokeOutputOptions options) { + return Deployment.getInstance().invoke("aws:iot/getRegistrationCode:getRegistrationCode", TypeShape.of(GetRegistrationCodeResult.class), args, Utilities.withVersion(options)); + } + /** + * Gets a registration code used to register a CA certificate with AWS IoT. + * + * ## Example Usage + * + */ public static CompletableFuture getRegistrationCodePlain(GetRegistrationCodePlainArgs args, InvokeOptions options) { return Deployment.getInstance().invokeAsync("aws:iot/getRegistrationCode:getRegistrationCode", TypeShape.of(GetRegistrationCodeResult.class), args, Utilities.withVersion(options)); } diff --git a/sdk/java/src/main/java/com/pulumi/aws/kinesis/FirehoseDeliveryStream.java b/sdk/java/src/main/java/com/pulumi/aws/kinesis/FirehoseDeliveryStream.java index 2180438bc3f..08563965384 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/kinesis/FirehoseDeliveryStream.java +++ b/sdk/java/src/main/java/com/pulumi/aws/kinesis/FirehoseDeliveryStream.java @@ -667,32 +667,32 @@ * var testClusterArn1 = values.t2; * return """ * { - * "Version": "2012-10-17", - * "Statement": [ + * \"Version\": \"2012-10-17\", + * \"Statement\": [ * { - * "Effect": "Allow", - * "Action": [ - * "es:*" + * \"Effect\": \"Allow\", + * \"Action\": [ + * \"es:*\" * ], - * "Resource": [ - * "%s", - * "%s/*" + * \"Resource\": [ + * \"%s\", + * \"%s/*\" * ] * }, * { - * "Effect": "Allow", - * "Action": [ - * "ec2:DescribeVpcs", - * "ec2:DescribeVpcAttribute", - * "ec2:DescribeSubnets", - * "ec2:DescribeSecurityGroups", - * "ec2:DescribeNetworkInterfaces", - * "ec2:CreateNetworkInterface", - * "ec2:CreateNetworkInterfacePermission", - * "ec2:DeleteNetworkInterface" + * \"Effect\": \"Allow\", + * \"Action\": [ + * \"ec2:DescribeVpcs\", + * \"ec2:DescribeVpcAttribute\", + * \"ec2:DescribeSubnets\", + * \"ec2:DescribeSecurityGroups\", + * \"ec2:DescribeNetworkInterfaces\", + * \"ec2:CreateNetworkInterface\", + * \"ec2:CreateNetworkInterfacePermission\", + * \"ec2:DeleteNetworkInterface\" * ], - * "Resource": [ - * "*" + * \"Resource\": [ + * \"*\" * ] * } * ] diff --git a/sdk/java/src/main/java/com/pulumi/aws/kinesis/ResourcePolicy.java b/sdk/java/src/main/java/com/pulumi/aws/kinesis/ResourcePolicy.java index 579ef489dbd..96aefcc3dda 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/kinesis/ResourcePolicy.java +++ b/sdk/java/src/main/java/com/pulumi/aws/kinesis/ResourcePolicy.java @@ -45,21 +45,21 @@ * .resourceArn(exampleAwsKinesisStream.arn()) * .policy(""" * { - * "Version": "2012-10-17", - * "Id": "writePolicy", - * "Statement": [{ - * "Sid": "writestatement", - * "Effect": "Allow", - * "Principal": { - * "AWS": "123456789456" + * \"Version\": \"2012-10-17\", + * \"Id\": \"writePolicy\", + * \"Statement\": [{ + * \"Sid\": \"writestatement\", + * \"Effect\": \"Allow\", + * \"Principal\": { + * \"AWS\": \"123456789456\" * }, - * "Action": [ - * "kinesis:DescribeStreamSummary", - * "kinesis:ListShards", - * "kinesis:PutRecord", - * "kinesis:PutRecords" + * \"Action\": [ + * \"kinesis:DescribeStreamSummary\", + * \"kinesis:ListShards\", + * \"kinesis:PutRecord\", + * \"kinesis:PutRecords\" * ], - * "Resource": "%s" + * \"Resource\": \"%s\" * }] * } * ", exampleAwsKinesisStream.arn())) diff --git a/sdk/java/src/main/java/com/pulumi/aws/kms/Ciphertext.java b/sdk/java/src/main/java/com/pulumi/aws/kms/Ciphertext.java index 84c6de6ea63..ef9dc400935 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/kms/Ciphertext.java +++ b/sdk/java/src/main/java/com/pulumi/aws/kms/Ciphertext.java @@ -57,8 +57,8 @@ * .keyId(oauthConfig.keyId()) * .plaintext(""" * { - * "client_id": "e587dbae22222f55da22", - * "client_secret": "8289575d00000ace55e1815ec13673955721b8a5" + * \"client_id\": \"e587dbae22222f55da22\", + * \"client_secret\": \"8289575d00000ace55e1815ec13673955721b8a5\" * } * """) * .build()); diff --git a/sdk/java/src/main/java/com/pulumi/aws/kms/KmsFunctions.java b/sdk/java/src/main/java/com/pulumi/aws/kms/KmsFunctions.java index 07ddbe1ee11..93d3cfb1b20 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/kms/KmsFunctions.java +++ b/sdk/java/src/main/java/com/pulumi/aws/kms/KmsFunctions.java @@ -284,8 +284,8 @@ public static CompletableFuture getAliasPlain(GetAliasPlainArgs * .keyId(oauthConfig.keyId()) * .plaintext(""" * { - * "client_id": "e587dbae22222f55da22", - * "client_secret": "8289575d00000ace55e1815ec13673955721b8a5" + * \"client_id\": \"e587dbae22222f55da22\", + * \"client_secret\": \"8289575d00000ace55e1815ec13673955721b8a5\" * } * """) * .build()); @@ -340,8 +340,8 @@ public static Output getCipherText(GetCipherTextArgs args) * .keyId(oauthConfig.keyId()) * .plaintext(""" * { - * "client_id": "e587dbae22222f55da22", - * "client_secret": "8289575d00000ace55e1815ec13673955721b8a5" + * \"client_id\": \"e587dbae22222f55da22\", + * \"client_secret\": \"8289575d00000ace55e1815ec13673955721b8a5\" * } * """) * .build()); @@ -396,8 +396,8 @@ public static CompletableFuture getCipherTextPlain(GetCiphe * .keyId(oauthConfig.keyId()) * .plaintext(""" * { - * "client_id": "e587dbae22222f55da22", - * "client_secret": "8289575d00000ace55e1815ec13673955721b8a5" + * \"client_id\": \"e587dbae22222f55da22\", + * \"client_secret\": \"8289575d00000ace55e1815ec13673955721b8a5\" * } * """) * .build()); @@ -452,8 +452,8 @@ public static Output getCipherText(GetCipherTextArgs args, * .keyId(oauthConfig.keyId()) * .plaintext(""" * { - * "client_id": "e587dbae22222f55da22", - * "client_secret": "8289575d00000ace55e1815ec13673955721b8a5" + * \"client_id\": \"e587dbae22222f55da22\", + * \"client_secret\": \"8289575d00000ace55e1815ec13673955721b8a5\" * } * """) * .build()); @@ -508,8 +508,8 @@ public static Output getCipherText(GetCipherTextArgs args, * .keyId(oauthConfig.keyId()) * .plaintext(""" * { - * "client_id": "e587dbae22222f55da22", - * "client_secret": "8289575d00000ace55e1815ec13673955721b8a5" + * \"client_id\": \"e587dbae22222f55da22\", + * \"client_secret\": \"8289575d00000ace55e1815ec13673955721b8a5\" * } * """) * .build()); diff --git a/sdk/java/src/main/java/com/pulumi/aws/lambda/Invocation.java b/sdk/java/src/main/java/com/pulumi/aws/lambda/Invocation.java index efdf1c6b4fe..28c2c6d0b7f 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/lambda/Invocation.java +++ b/sdk/java/src/main/java/com/pulumi/aws/lambda/Invocation.java @@ -24,6 +24,66 @@ * * ## Example Usage * + * ### Basic Invocation + * + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.aws.lambda.Function;
+ * import com.pulumi.aws.lambda.FunctionArgs;
+ * import com.pulumi.aws.lambda.Invocation;
+ * import com.pulumi.aws.lambda.InvocationArgs;
+ * import com.pulumi.std.StdFunctions;
+ * import com.pulumi.std.inputs.JsondecodeArgs;
+ * import com.pulumi.asset.FileArchive;
+ * import static com.pulumi.codegen.internal.Serialization.*;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         // Lambda function to invoke
+ *         var example = new Function("example", FunctionArgs.builder()
+ *             .code(new FileArchive("function.zip"))
+ *             .name("data_processor")
+ *             .role(lambdaRole.arn())
+ *             .handler("index.handler")
+ *             .runtime("python3.12")
+ *             .build());
+ * 
+ *         // Invoke the function once during resource creation
+ *         var exampleInvocation = new Invocation("exampleInvocation", InvocationArgs.builder()
+ *             .functionName(example.name())
+ *             .input(serializeJson(
+ *                 jsonObject(
+ *                     jsonProperty("operation", "initialize"),
+ *                     jsonProperty("config", jsonObject(
+ *                         jsonProperty("environment", "production"),
+ *                         jsonProperty("debug", false)
+ *                     ))
+ *                 )))
+ *             .build());
+ * 
+ *         ctx.export("initializationResult", StdFunctions.jsondecode(JsondecodeArgs.builder()
+ *             .input(exampleInvocation.result())
+ *             .build()).applyValue(_invoke -> _invoke.result().status()));
+ *     }
+ * }
+ * }
+ * 
+ * * ### Dynamic Invocation with Triggers * *
diff --git a/sdk/java/src/main/java/com/pulumi/aws/lambda/LambdaFunctions.java b/sdk/java/src/main/java/com/pulumi/aws/lambda/LambdaFunctions.java
index 8f6cf03df80..b6bc924ba00 100644
--- a/sdk/java/src/main/java/com/pulumi/aws/lambda/LambdaFunctions.java
+++ b/sdk/java/src/main/java/com/pulumi/aws/lambda/LambdaFunctions.java
@@ -974,6 +974,72 @@ public static CompletableFuture getAliasPlain(GetAliasPlainArgs
      * }
      * 
* + * ### Validate Signing Profiles + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.lambda.LambdaFunctions;
+     * import com.pulumi.aws.lambda.inputs.GetCodeSigningConfigArgs;
+     * import com.pulumi.std.StdFunctions;
+     * import com.pulumi.std.inputs.ContainsArgs;
+     * import com.pulumi.aws.lambda.Function;
+     * import com.pulumi.aws.lambda.FunctionArgs;
+     * import com.pulumi.asset.FileArchive;
+     * import com.pulumi.codegen.internal.KeyedValue;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var example = LambdaFunctions.getCodeSigningConfig(GetCodeSigningConfigArgs.builder()
+     *             .arn(codeSigningConfigArn)
+     *             .build());
+     * 
+     *         final var allowedProfiles = example.allowedPublishers()[0].signingProfileVersionArns();
+     * 
+     *         final var requiredProfile = "arn:aws:signer:us-west-2:123456789012:/signing-profiles/MyProfile";
+     * 
+     *         final var profileAllowed = StdFunctions.contains(ContainsArgs.builder()
+     *             .input(allowedProfiles)
+     *             .element(requiredProfile)
+     *             .build()).result();
+     * 
+     *         // Conditional resource creation based on signing profile validation
+     *         for (var i = 0; i < profileAllowed ? 1 : 0; i++) {
+     *             new Function("conditional-" + i, FunctionArgs.builder()
+     *                 .code(new FileArchive("function.zip"))
+     *                 .name("conditional-function")
+     *                 .role(lambdaRole.arn())
+     *                 .handler("index.handler")
+     *                 .runtime("python3.12")
+     *                 .codeSigningConfigArn(example.arn())
+     *                 .build());
+     * 
+     *         
+     * }
+     *         ctx.export("deploymentStatus", Map.ofEntries(
+     *             Map.entry("profileAllowed", profileAllowed),
+     *             Map.entry("functionCreated", profileAllowed),
+     *             Map.entry("message", profileAllowed ? "Function deployed with valid signing profile" : "Deployment blocked - signing profile not allowed")
+     *         ));
+     *     }
+     * }
+     * }
+     * 
+ * * ### Multi-Environment Configuration * *
@@ -1124,6 +1190,72 @@ public static Output getCodeSigningConfig(GetCodeSig
      * }
      * 
* + * ### Validate Signing Profiles + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.lambda.LambdaFunctions;
+     * import com.pulumi.aws.lambda.inputs.GetCodeSigningConfigArgs;
+     * import com.pulumi.std.StdFunctions;
+     * import com.pulumi.std.inputs.ContainsArgs;
+     * import com.pulumi.aws.lambda.Function;
+     * import com.pulumi.aws.lambda.FunctionArgs;
+     * import com.pulumi.asset.FileArchive;
+     * import com.pulumi.codegen.internal.KeyedValue;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var example = LambdaFunctions.getCodeSigningConfig(GetCodeSigningConfigArgs.builder()
+     *             .arn(codeSigningConfigArn)
+     *             .build());
+     * 
+     *         final var allowedProfiles = example.allowedPublishers()[0].signingProfileVersionArns();
+     * 
+     *         final var requiredProfile = "arn:aws:signer:us-west-2:123456789012:/signing-profiles/MyProfile";
+     * 
+     *         final var profileAllowed = StdFunctions.contains(ContainsArgs.builder()
+     *             .input(allowedProfiles)
+     *             .element(requiredProfile)
+     *             .build()).result();
+     * 
+     *         // Conditional resource creation based on signing profile validation
+     *         for (var i = 0; i < profileAllowed ? 1 : 0; i++) {
+     *             new Function("conditional-" + i, FunctionArgs.builder()
+     *                 .code(new FileArchive("function.zip"))
+     *                 .name("conditional-function")
+     *                 .role(lambdaRole.arn())
+     *                 .handler("index.handler")
+     *                 .runtime("python3.12")
+     *                 .codeSigningConfigArn(example.arn())
+     *                 .build());
+     * 
+     *         
+     * }
+     *         ctx.export("deploymentStatus", Map.ofEntries(
+     *             Map.entry("profileAllowed", profileAllowed),
+     *             Map.entry("functionCreated", profileAllowed),
+     *             Map.entry("message", profileAllowed ? "Function deployed with valid signing profile" : "Deployment blocked - signing profile not allowed")
+     *         ));
+     *     }
+     * }
+     * }
+     * 
+ * * ### Multi-Environment Configuration * *
@@ -1274,6 +1406,72 @@ public static CompletableFuture getCodeSigningConfig
      * }
      * 
* + * ### Validate Signing Profiles + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.lambda.LambdaFunctions;
+     * import com.pulumi.aws.lambda.inputs.GetCodeSigningConfigArgs;
+     * import com.pulumi.std.StdFunctions;
+     * import com.pulumi.std.inputs.ContainsArgs;
+     * import com.pulumi.aws.lambda.Function;
+     * import com.pulumi.aws.lambda.FunctionArgs;
+     * import com.pulumi.asset.FileArchive;
+     * import com.pulumi.codegen.internal.KeyedValue;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var example = LambdaFunctions.getCodeSigningConfig(GetCodeSigningConfigArgs.builder()
+     *             .arn(codeSigningConfigArn)
+     *             .build());
+     * 
+     *         final var allowedProfiles = example.allowedPublishers()[0].signingProfileVersionArns();
+     * 
+     *         final var requiredProfile = "arn:aws:signer:us-west-2:123456789012:/signing-profiles/MyProfile";
+     * 
+     *         final var profileAllowed = StdFunctions.contains(ContainsArgs.builder()
+     *             .input(allowedProfiles)
+     *             .element(requiredProfile)
+     *             .build()).result();
+     * 
+     *         // Conditional resource creation based on signing profile validation
+     *         for (var i = 0; i < profileAllowed ? 1 : 0; i++) {
+     *             new Function("conditional-" + i, FunctionArgs.builder()
+     *                 .code(new FileArchive("function.zip"))
+     *                 .name("conditional-function")
+     *                 .role(lambdaRole.arn())
+     *                 .handler("index.handler")
+     *                 .runtime("python3.12")
+     *                 .codeSigningConfigArn(example.arn())
+     *                 .build());
+     * 
+     *         
+     * }
+     *         ctx.export("deploymentStatus", Map.ofEntries(
+     *             Map.entry("profileAllowed", profileAllowed),
+     *             Map.entry("functionCreated", profileAllowed),
+     *             Map.entry("message", profileAllowed ? "Function deployed with valid signing profile" : "Deployment blocked - signing profile not allowed")
+     *         ));
+     *     }
+     * }
+     * }
+     * 
+ * * ### Multi-Environment Configuration * *
@@ -1424,6 +1622,72 @@ public static Output getCodeSigningConfig(GetCodeSig
      * }
      * 
* + * ### Validate Signing Profiles + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.lambda.LambdaFunctions;
+     * import com.pulumi.aws.lambda.inputs.GetCodeSigningConfigArgs;
+     * import com.pulumi.std.StdFunctions;
+     * import com.pulumi.std.inputs.ContainsArgs;
+     * import com.pulumi.aws.lambda.Function;
+     * import com.pulumi.aws.lambda.FunctionArgs;
+     * import com.pulumi.asset.FileArchive;
+     * import com.pulumi.codegen.internal.KeyedValue;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var example = LambdaFunctions.getCodeSigningConfig(GetCodeSigningConfigArgs.builder()
+     *             .arn(codeSigningConfigArn)
+     *             .build());
+     * 
+     *         final var allowedProfiles = example.allowedPublishers()[0].signingProfileVersionArns();
+     * 
+     *         final var requiredProfile = "arn:aws:signer:us-west-2:123456789012:/signing-profiles/MyProfile";
+     * 
+     *         final var profileAllowed = StdFunctions.contains(ContainsArgs.builder()
+     *             .input(allowedProfiles)
+     *             .element(requiredProfile)
+     *             .build()).result();
+     * 
+     *         // Conditional resource creation based on signing profile validation
+     *         for (var i = 0; i < profileAllowed ? 1 : 0; i++) {
+     *             new Function("conditional-" + i, FunctionArgs.builder()
+     *                 .code(new FileArchive("function.zip"))
+     *                 .name("conditional-function")
+     *                 .role(lambdaRole.arn())
+     *                 .handler("index.handler")
+     *                 .runtime("python3.12")
+     *                 .codeSigningConfigArn(example.arn())
+     *                 .build());
+     * 
+     *         
+     * }
+     *         ctx.export("deploymentStatus", Map.ofEntries(
+     *             Map.entry("profileAllowed", profileAllowed),
+     *             Map.entry("functionCreated", profileAllowed),
+     *             Map.entry("message", profileAllowed ? "Function deployed with valid signing profile" : "Deployment blocked - signing profile not allowed")
+     *         ));
+     *     }
+     * }
+     * }
+     * 
+ * * ### Multi-Environment Configuration * *
@@ -1574,6 +1838,72 @@ public static Output getCodeSigningConfig(GetCodeSig
      * }
      * 
* + * ### Validate Signing Profiles + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.lambda.LambdaFunctions;
+     * import com.pulumi.aws.lambda.inputs.GetCodeSigningConfigArgs;
+     * import com.pulumi.std.StdFunctions;
+     * import com.pulumi.std.inputs.ContainsArgs;
+     * import com.pulumi.aws.lambda.Function;
+     * import com.pulumi.aws.lambda.FunctionArgs;
+     * import com.pulumi.asset.FileArchive;
+     * import com.pulumi.codegen.internal.KeyedValue;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var example = LambdaFunctions.getCodeSigningConfig(GetCodeSigningConfigArgs.builder()
+     *             .arn(codeSigningConfigArn)
+     *             .build());
+     * 
+     *         final var allowedProfiles = example.allowedPublishers()[0].signingProfileVersionArns();
+     * 
+     *         final var requiredProfile = "arn:aws:signer:us-west-2:123456789012:/signing-profiles/MyProfile";
+     * 
+     *         final var profileAllowed = StdFunctions.contains(ContainsArgs.builder()
+     *             .input(allowedProfiles)
+     *             .element(requiredProfile)
+     *             .build()).result();
+     * 
+     *         // Conditional resource creation based on signing profile validation
+     *         for (var i = 0; i < profileAllowed ? 1 : 0; i++) {
+     *             new Function("conditional-" + i, FunctionArgs.builder()
+     *                 .code(new FileArchive("function.zip"))
+     *                 .name("conditional-function")
+     *                 .role(lambdaRole.arn())
+     *                 .handler("index.handler")
+     *                 .runtime("python3.12")
+     *                 .codeSigningConfigArn(example.arn())
+     *                 .build());
+     * 
+     *         
+     * }
+     *         ctx.export("deploymentStatus", Map.ofEntries(
+     *             Map.entry("profileAllowed", profileAllowed),
+     *             Map.entry("functionCreated", profileAllowed),
+     *             Map.entry("message", profileAllowed ? "Function deployed with valid signing profile" : "Deployment blocked - signing profile not allowed")
+     *         ));
+     *     }
+     * }
+     * }
+     * 
+ * * ### Multi-Environment Configuration * *
@@ -3988,22 +4318,230 @@ public static CompletableFuture getFunctionsPlain(GetFunctio
      * 
      * ## Example Usage
      * 
-     */
-    public static Output getInvocation(GetInvocationArgs args) {
-        return getInvocation(args, InvokeOptions.Empty);
-    }
-    /**
-     * Invokes an AWS Lambda Function and returns its results. Use this data source to execute Lambda functions during Pulumi operations and use their results in other resources or outputs.
-     * 
-     * The Lambda function is invoked with [RequestResponse](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_RequestSyntax) invocation type.
+     * ### Basic Invocation
      * 
-     * > **Note:** The `aws.lambda.Invocation` data source invokes the function during the first `apply` and every subsequent `plan` when the function is known.
+     * 
+     * {@code
+     * package generated_program;
      * 
-     * > **Note:** If you get a `KMSAccessDeniedException: Lambda was unable to decrypt the environment variables because KMS access was denied` error when invoking a Lambda function with environment variables, the IAM role associated with the function may have been deleted and recreated after the function was created. You can fix the problem two ways: 1) updating the function's role to another role and then updating it back again to the recreated role. (When you create a function, Lambda grants permissions on the KMS key to the function's IAM role. If the IAM role is recreated, the grant is no longer valid. Changing the function's role or recreating the function causes Lambda to update the grant.)
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.lambda.LambdaFunctions;
+     * import com.pulumi.aws.lambda.inputs.GetInvocationArgs;
+     * import com.pulumi.std.StdFunctions;
+     * import com.pulumi.std.inputs.JsondecodeArgs;
+     * import static com.pulumi.codegen.internal.Serialization.*;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
      * 
-     * ## Example Usage
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
      * 
-     */
+     *     public static void stack(Context ctx) {
+     *         final var example = LambdaFunctions.getInvocation(GetInvocationArgs.builder()
+     *             .functionName(exampleAwsLambdaFunction.functionName())
+     *             .input(serializeJson(
+     *                 jsonObject(
+     *                     jsonProperty("operation", "getStatus"),
+     *                     jsonProperty("id", "123456")
+     *                 )))
+     *             .build());
+     * 
+     *         ctx.export("result", StdFunctions.jsondecode(JsondecodeArgs.builder()
+     *             .input(example.result())
+     *             .build()).result());
+     *     }
+     * }
+     * }
+     * 
+ * + * ### Dynamic Resource Configuration + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.lambda.LambdaFunctions;
+     * import com.pulumi.aws.lambda.inputs.GetInvocationArgs;
+     * import com.pulumi.std.StdFunctions;
+     * import com.pulumi.std.inputs.JsondecodeArgs;
+     * import com.pulumi.aws.elasticache.Cluster;
+     * import com.pulumi.aws.elasticache.ClusterArgs;
+     * import static com.pulumi.codegen.internal.Serialization.*;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         // Get resource configuration from Lambda
+     *         final var resourceConfig = LambdaFunctions.getInvocation(GetInvocationArgs.builder()
+     *             .functionName("resource-config-generator")
+     *             .qualifier("production")
+     *             .input(serializeJson(
+     *                 jsonObject(
+     *                     jsonProperty("environment", environment),
+     *                     jsonProperty("region", current.region()),
+     *                     jsonProperty("service", "api")
+     *                 )))
+     *             .build());
+     * 
+     *         final var config = StdFunctions.jsondecode(JsondecodeArgs.builder()
+     *             .input(resourceConfig.result())
+     *             .build()).result();
+     * 
+     *         // Use dynamic configuration
+     *         var example = new Cluster("example", ClusterArgs.builder()
+     *             .clusterId(config.cache().clusterId())
+     *             .engine(config.cache().engine())
+     *             .nodeType(config.cache().nodeType())
+     *             .numCacheNodes(config.cache().nodes())
+     *             .parameterGroupName(config.cache().parameterGroup())
+     *             .tags(config.tags())
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * + */ + public static Output getInvocation(GetInvocationArgs args) { + return getInvocation(args, InvokeOptions.Empty); + } + /** + * Invokes an AWS Lambda Function and returns its results. Use this data source to execute Lambda functions during Pulumi operations and use their results in other resources or outputs. + * + * The Lambda function is invoked with [RequestResponse](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_RequestSyntax) invocation type. + * + * > **Note:** The `aws.lambda.Invocation` data source invokes the function during the first `apply` and every subsequent `plan` when the function is known. + * + * > **Note:** If you get a `KMSAccessDeniedException: Lambda was unable to decrypt the environment variables because KMS access was denied` error when invoking a Lambda function with environment variables, the IAM role associated with the function may have been deleted and recreated after the function was created. You can fix the problem two ways: 1) updating the function's role to another role and then updating it back again to the recreated role. (When you create a function, Lambda grants permissions on the KMS key to the function's IAM role. If the IAM role is recreated, the grant is no longer valid. Changing the function's role or recreating the function causes Lambda to update the grant.) + * + * ## Example Usage + * + * ### Basic Invocation + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.lambda.LambdaFunctions;
+     * import com.pulumi.aws.lambda.inputs.GetInvocationArgs;
+     * import com.pulumi.std.StdFunctions;
+     * import com.pulumi.std.inputs.JsondecodeArgs;
+     * import static com.pulumi.codegen.internal.Serialization.*;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var example = LambdaFunctions.getInvocation(GetInvocationArgs.builder()
+     *             .functionName(exampleAwsLambdaFunction.functionName())
+     *             .input(serializeJson(
+     *                 jsonObject(
+     *                     jsonProperty("operation", "getStatus"),
+     *                     jsonProperty("id", "123456")
+     *                 )))
+     *             .build());
+     * 
+     *         ctx.export("result", StdFunctions.jsondecode(JsondecodeArgs.builder()
+     *             .input(example.result())
+     *             .build()).result());
+     *     }
+     * }
+     * }
+     * 
+ * + * ### Dynamic Resource Configuration + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.lambda.LambdaFunctions;
+     * import com.pulumi.aws.lambda.inputs.GetInvocationArgs;
+     * import com.pulumi.std.StdFunctions;
+     * import com.pulumi.std.inputs.JsondecodeArgs;
+     * import com.pulumi.aws.elasticache.Cluster;
+     * import com.pulumi.aws.elasticache.ClusterArgs;
+     * import static com.pulumi.codegen.internal.Serialization.*;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         // Get resource configuration from Lambda
+     *         final var resourceConfig = LambdaFunctions.getInvocation(GetInvocationArgs.builder()
+     *             .functionName("resource-config-generator")
+     *             .qualifier("production")
+     *             .input(serializeJson(
+     *                 jsonObject(
+     *                     jsonProperty("environment", environment),
+     *                     jsonProperty("region", current.region()),
+     *                     jsonProperty("service", "api")
+     *                 )))
+     *             .build());
+     * 
+     *         final var config = StdFunctions.jsondecode(JsondecodeArgs.builder()
+     *             .input(resourceConfig.result())
+     *             .build()).result();
+     * 
+     *         // Use dynamic configuration
+     *         var example = new Cluster("example", ClusterArgs.builder()
+     *             .clusterId(config.cache().clusterId())
+     *             .engine(config.cache().engine())
+     *             .nodeType(config.cache().nodeType())
+     *             .numCacheNodes(config.cache().nodes())
+     *             .parameterGroupName(config.cache().parameterGroup())
+     *             .tags(config.tags())
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * + */ public static CompletableFuture getInvocationPlain(GetInvocationPlainArgs args) { return getInvocationPlain(args, InvokeOptions.Empty); } @@ -4018,6 +4556,110 @@ public static CompletableFuture getInvocationPlain(GetInvoc * * ## Example Usage * + * ### Basic Invocation + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.lambda.LambdaFunctions;
+     * import com.pulumi.aws.lambda.inputs.GetInvocationArgs;
+     * import com.pulumi.std.StdFunctions;
+     * import com.pulumi.std.inputs.JsondecodeArgs;
+     * import static com.pulumi.codegen.internal.Serialization.*;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var example = LambdaFunctions.getInvocation(GetInvocationArgs.builder()
+     *             .functionName(exampleAwsLambdaFunction.functionName())
+     *             .input(serializeJson(
+     *                 jsonObject(
+     *                     jsonProperty("operation", "getStatus"),
+     *                     jsonProperty("id", "123456")
+     *                 )))
+     *             .build());
+     * 
+     *         ctx.export("result", StdFunctions.jsondecode(JsondecodeArgs.builder()
+     *             .input(example.result())
+     *             .build()).result());
+     *     }
+     * }
+     * }
+     * 
+ * + * ### Dynamic Resource Configuration + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.lambda.LambdaFunctions;
+     * import com.pulumi.aws.lambda.inputs.GetInvocationArgs;
+     * import com.pulumi.std.StdFunctions;
+     * import com.pulumi.std.inputs.JsondecodeArgs;
+     * import com.pulumi.aws.elasticache.Cluster;
+     * import com.pulumi.aws.elasticache.ClusterArgs;
+     * import static com.pulumi.codegen.internal.Serialization.*;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         // Get resource configuration from Lambda
+     *         final var resourceConfig = LambdaFunctions.getInvocation(GetInvocationArgs.builder()
+     *             .functionName("resource-config-generator")
+     *             .qualifier("production")
+     *             .input(serializeJson(
+     *                 jsonObject(
+     *                     jsonProperty("environment", environment),
+     *                     jsonProperty("region", current.region()),
+     *                     jsonProperty("service", "api")
+     *                 )))
+     *             .build());
+     * 
+     *         final var config = StdFunctions.jsondecode(JsondecodeArgs.builder()
+     *             .input(resourceConfig.result())
+     *             .build()).result();
+     * 
+     *         // Use dynamic configuration
+     *         var example = new Cluster("example", ClusterArgs.builder()
+     *             .clusterId(config.cache().clusterId())
+     *             .engine(config.cache().engine())
+     *             .nodeType(config.cache().nodeType())
+     *             .numCacheNodes(config.cache().nodes())
+     *             .parameterGroupName(config.cache().parameterGroup())
+     *             .tags(config.tags())
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * */ public static Output getInvocation(GetInvocationArgs args, InvokeOptions options) { return Deployment.getInstance().invoke("aws:lambda/getInvocation:getInvocation", TypeShape.of(GetInvocationResult.class), args, Utilities.withVersion(options)); @@ -4033,6 +4675,110 @@ public static Output getInvocation(GetInvocationArgs args, * * ## Example Usage * + * ### Basic Invocation + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.lambda.LambdaFunctions;
+     * import com.pulumi.aws.lambda.inputs.GetInvocationArgs;
+     * import com.pulumi.std.StdFunctions;
+     * import com.pulumi.std.inputs.JsondecodeArgs;
+     * import static com.pulumi.codegen.internal.Serialization.*;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var example = LambdaFunctions.getInvocation(GetInvocationArgs.builder()
+     *             .functionName(exampleAwsLambdaFunction.functionName())
+     *             .input(serializeJson(
+     *                 jsonObject(
+     *                     jsonProperty("operation", "getStatus"),
+     *                     jsonProperty("id", "123456")
+     *                 )))
+     *             .build());
+     * 
+     *         ctx.export("result", StdFunctions.jsondecode(JsondecodeArgs.builder()
+     *             .input(example.result())
+     *             .build()).result());
+     *     }
+     * }
+     * }
+     * 
+ * + * ### Dynamic Resource Configuration + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.lambda.LambdaFunctions;
+     * import com.pulumi.aws.lambda.inputs.GetInvocationArgs;
+     * import com.pulumi.std.StdFunctions;
+     * import com.pulumi.std.inputs.JsondecodeArgs;
+     * import com.pulumi.aws.elasticache.Cluster;
+     * import com.pulumi.aws.elasticache.ClusterArgs;
+     * import static com.pulumi.codegen.internal.Serialization.*;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         // Get resource configuration from Lambda
+     *         final var resourceConfig = LambdaFunctions.getInvocation(GetInvocationArgs.builder()
+     *             .functionName("resource-config-generator")
+     *             .qualifier("production")
+     *             .input(serializeJson(
+     *                 jsonObject(
+     *                     jsonProperty("environment", environment),
+     *                     jsonProperty("region", current.region()),
+     *                     jsonProperty("service", "api")
+     *                 )))
+     *             .build());
+     * 
+     *         final var config = StdFunctions.jsondecode(JsondecodeArgs.builder()
+     *             .input(resourceConfig.result())
+     *             .build()).result();
+     * 
+     *         // Use dynamic configuration
+     *         var example = new Cluster("example", ClusterArgs.builder()
+     *             .clusterId(config.cache().clusterId())
+     *             .engine(config.cache().engine())
+     *             .nodeType(config.cache().nodeType())
+     *             .numCacheNodes(config.cache().nodes())
+     *             .parameterGroupName(config.cache().parameterGroup())
+     *             .tags(config.tags())
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * */ public static Output getInvocation(GetInvocationArgs args, InvokeOutputOptions options) { return Deployment.getInstance().invoke("aws:lambda/getInvocation:getInvocation", TypeShape.of(GetInvocationResult.class), args, Utilities.withVersion(options)); @@ -4048,6 +4794,110 @@ public static Output getInvocation(GetInvocationArgs args, * * ## Example Usage * + * ### Basic Invocation + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.lambda.LambdaFunctions;
+     * import com.pulumi.aws.lambda.inputs.GetInvocationArgs;
+     * import com.pulumi.std.StdFunctions;
+     * import com.pulumi.std.inputs.JsondecodeArgs;
+     * import static com.pulumi.codegen.internal.Serialization.*;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var example = LambdaFunctions.getInvocation(GetInvocationArgs.builder()
+     *             .functionName(exampleAwsLambdaFunction.functionName())
+     *             .input(serializeJson(
+     *                 jsonObject(
+     *                     jsonProperty("operation", "getStatus"),
+     *                     jsonProperty("id", "123456")
+     *                 )))
+     *             .build());
+     * 
+     *         ctx.export("result", StdFunctions.jsondecode(JsondecodeArgs.builder()
+     *             .input(example.result())
+     *             .build()).result());
+     *     }
+     * }
+     * }
+     * 
+ * + * ### Dynamic Resource Configuration + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.lambda.LambdaFunctions;
+     * import com.pulumi.aws.lambda.inputs.GetInvocationArgs;
+     * import com.pulumi.std.StdFunctions;
+     * import com.pulumi.std.inputs.JsondecodeArgs;
+     * import com.pulumi.aws.elasticache.Cluster;
+     * import com.pulumi.aws.elasticache.ClusterArgs;
+     * import static com.pulumi.codegen.internal.Serialization.*;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         // Get resource configuration from Lambda
+     *         final var resourceConfig = LambdaFunctions.getInvocation(GetInvocationArgs.builder()
+     *             .functionName("resource-config-generator")
+     *             .qualifier("production")
+     *             .input(serializeJson(
+     *                 jsonObject(
+     *                     jsonProperty("environment", environment),
+     *                     jsonProperty("region", current.region()),
+     *                     jsonProperty("service", "api")
+     *                 )))
+     *             .build());
+     * 
+     *         final var config = StdFunctions.jsondecode(JsondecodeArgs.builder()
+     *             .input(resourceConfig.result())
+     *             .build()).result();
+     * 
+     *         // Use dynamic configuration
+     *         var example = new Cluster("example", ClusterArgs.builder()
+     *             .clusterId(config.cache().clusterId())
+     *             .engine(config.cache().engine())
+     *             .nodeType(config.cache().nodeType())
+     *             .numCacheNodes(config.cache().nodes())
+     *             .parameterGroupName(config.cache().parameterGroup())
+     *             .tags(config.tags())
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * */ public static CompletableFuture getInvocationPlain(GetInvocationPlainArgs args, InvokeOptions options) { return Deployment.getInstance().invokeAsync("aws:lambda/getInvocation:getInvocation", TypeShape.of(GetInvocationResult.class), args, Utilities.withVersion(options)); diff --git a/sdk/java/src/main/java/com/pulumi/aws/m2/Application.java b/sdk/java/src/main/java/com/pulumi/aws/m2/Application.java index bdf7b652cf6..f8028fe7bc7 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/m2/Application.java +++ b/sdk/java/src/main/java/com/pulumi/aws/m2/Application.java @@ -54,28 +54,28 @@ * .definition(ApplicationDefinitionArgs.builder() * .content(""" * { - * "definition": { - * "listeners": [ + * \"definition\": { + * \"listeners\": [ * { - * "port": 8196, - * "type": "http" + * \"port\": 8196, + * \"type\": \"http\" * } * ], - * "ba-application": { - * "app-location": "%s/PlanetsDemo-v1.zip" + * \"ba-application\": { + * \"app-location\": \"%s/PlanetsDemo-v1.zip\" * } * }, - * "source-locations": [ + * \"source-locations\": [ * { - * "source-id": "s3-source", - * "source-type": "s3", - * "properties": { - * "s3-bucket": "example-bucket", - * "s3-key-prefix": "v1" + * \"source-id\": \"s3-source\", + * \"source-type\": \"s3\", + * \"properties\": { + * \"s3-bucket\": \"example-bucket\", + * \"s3-key-prefix\": \"v1\" * } * } * ], - * "template-version": "2.0" + * \"template-version\": \"2.0\" * } * * ", s3_source)) diff --git a/sdk/java/src/main/java/com/pulumi/aws/memorydb/User.java b/sdk/java/src/main/java/com/pulumi/aws/memorydb/User.java index d234f257757..8de9e7aa83a 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/memorydb/User.java +++ b/sdk/java/src/main/java/com/pulumi/aws/memorydb/User.java @@ -31,8 +31,8 @@ * import com.pulumi.Context; * import com.pulumi.Pulumi; * import com.pulumi.core.Output; - * import com.pulumi.random.password; - * import com.pulumi.random.passwordArgs; + * import com.pulumi.random.Password; + * import com.pulumi.random.PasswordArgs; * import com.pulumi.aws.memorydb.User; * import com.pulumi.aws.memorydb.UserArgs; * import com.pulumi.aws.memorydb.inputs.UserAuthenticationModeArgs; diff --git a/sdk/java/src/main/java/com/pulumi/aws/mq/Configuration.java b/sdk/java/src/main/java/com/pulumi/aws/mq/Configuration.java index 93a717fe2af..864acf2f289 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/mq/Configuration.java +++ b/sdk/java/src/main/java/com/pulumi/aws/mq/Configuration.java @@ -51,12 +51,12 @@ * .engineType("ActiveMQ") * .engineVersion("5.17.6") * .data(""" - * - * + * + * * - * + * * - * + * * * * """) diff --git a/sdk/java/src/main/java/com/pulumi/aws/networkmanager/SiteToSiteVpnAttachment.java b/sdk/java/src/main/java/com/pulumi/aws/networkmanager/SiteToSiteVpnAttachment.java index 09ee1cf4415..3210615bdfa 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/networkmanager/SiteToSiteVpnAttachment.java +++ b/sdk/java/src/main/java/com/pulumi/aws/networkmanager/SiteToSiteVpnAttachment.java @@ -55,6 +55,121 @@ * } *
* + * ### Full Usage + * + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.aws.ec2.CustomerGateway;
+ * import com.pulumi.aws.ec2.CustomerGatewayArgs;
+ * import com.pulumi.aws.ec2.VpnConnection;
+ * import com.pulumi.aws.ec2.VpnConnectionArgs;
+ * import com.pulumi.aws.networkmanager.GlobalNetwork;
+ * import com.pulumi.aws.networkmanager.GlobalNetworkArgs;
+ * import com.pulumi.aws.networkmanager.NetworkmanagerFunctions;
+ * import com.pulumi.aws.networkmanager.inputs.GetCoreNetworkPolicyDocumentArgs;
+ * import com.pulumi.awscc.NetworkmanagerCoreNetwork;
+ * import com.pulumi.awscc.NetworkmanagerCoreNetworkArgs;
+ * import com.pulumi.std.StdFunctions;
+ * import com.pulumi.std.inputs.JsondecodeArgs;
+ * import com.pulumi.aws.networkmanager.SiteToSiteVpnAttachment;
+ * import com.pulumi.aws.networkmanager.SiteToSiteVpnAttachmentArgs;
+ * import com.pulumi.aws.networkmanager.AttachmentAccepter;
+ * import com.pulumi.aws.networkmanager.AttachmentAccepterArgs;
+ * import static com.pulumi.codegen.internal.Serialization.*;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var testCustomerGateway = new CustomerGateway("testCustomerGateway", CustomerGatewayArgs.builder()
+ *             .bgpAsn("65000")
+ *             .ipAddress("172.0.0.1")
+ *             .type("ipsec.1")
+ *             .build());
+ * 
+ *         var testVpnConnection = new VpnConnection("testVpnConnection", VpnConnectionArgs.builder()
+ *             .customerGatewayId(testCustomerGateway.id())
+ *             .type("ipsec.1")
+ *             .tags(Map.of("Name", "test"))
+ *             .build());
+ * 
+ *         var testGlobalNetwork = new GlobalNetwork("testGlobalNetwork", GlobalNetworkArgs.builder()
+ *             .tags(Map.of("Name", "test"))
+ *             .build());
+ * 
+ *         final var test = NetworkmanagerFunctions.getCoreNetworkPolicyDocument(GetCoreNetworkPolicyDocumentArgs.builder()
+ *             .coreNetworkConfigurations(GetCoreNetworkPolicyDocumentCoreNetworkConfigurationArgs.builder()
+ *                 .vpnEcmpSupport(false)
+ *                 .asnRanges("64512-64555")
+ *                 .edgeLocations(GetCoreNetworkPolicyDocumentCoreNetworkConfigurationEdgeLocationArgs.builder()
+ *                     .location(current.region())
+ *                     .asn("64512")
+ *                     .build())
+ *                 .build())
+ *             .segments(GetCoreNetworkPolicyDocumentSegmentArgs.builder()
+ *                 .name("shared")
+ *                 .description("SegmentForSharedServices")
+ *                 .requireAttachmentAcceptance(true)
+ *                 .build())
+ *             .segmentActions(GetCoreNetworkPolicyDocumentSegmentActionArgs.builder()
+ *                 .action("share")
+ *                 .mode("attachment-route")
+ *                 .segment("shared")
+ *                 .shareWiths("*")
+ *                 .build())
+ *             .attachmentPolicies(GetCoreNetworkPolicyDocumentAttachmentPolicyArgs.builder()
+ *                 .ruleNumber(1)
+ *                 .conditionLogic("or")
+ *                 .conditions(GetCoreNetworkPolicyDocumentAttachmentPolicyConditionArgs.builder()
+ *                     .type("tag-value")
+ *                     .operator("equals")
+ *                     .key("segment")
+ *                     .value("shared")
+ *                     .build())
+ *                 .action(GetCoreNetworkPolicyDocumentAttachmentPolicyActionArgs.builder()
+ *                     .associationMethod("constant")
+ *                     .segment("shared")
+ *                     .build())
+ *                 .build())
+ *             .build());
+ * 
+ *         var testNetworkmanagerCoreNetwork = new NetworkmanagerCoreNetwork("testNetworkmanagerCoreNetwork", NetworkmanagerCoreNetworkArgs.builder()
+ *             .globalNetworkId(testGlobalNetwork.id())
+ *             .policyDocument(serializeJson(
+ *                 StdFunctions.jsondecode(JsondecodeArgs.builder()
+ *                     .input(test.json())
+ *                     .build()).result()))
+ *             .build());
+ * 
+ *         var testSiteToSiteVpnAttachment = new SiteToSiteVpnAttachment("testSiteToSiteVpnAttachment", SiteToSiteVpnAttachmentArgs.builder()
+ *             .coreNetworkId(testNetworkmanagerCoreNetwork.id())
+ *             .vpnConnectionArn(testVpnConnection.arn())
+ *             .tags(Map.of("segment", "shared"))
+ *             .build());
+ * 
+ *         var testAttachmentAccepter = new AttachmentAccepter("testAttachmentAccepter", AttachmentAccepterArgs.builder()
+ *             .attachmentId(testSiteToSiteVpnAttachment.id())
+ *             .attachmentType(testSiteToSiteVpnAttachment.attachmentType())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * * ## Import * * Using `pulumi import`, import `aws_networkmanager_site_to_site_vpn_attachment` using the attachment ID. For example: diff --git a/sdk/java/src/main/java/com/pulumi/aws/opensearchingest/Pipeline.java b/sdk/java/src/main/java/com/pulumi/aws/opensearchingest/Pipeline.java index 818b5d02aa4..b48978c2283 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/opensearchingest/Pipeline.java +++ b/sdk/java/src/main/java/com/pulumi/aws/opensearchingest/Pipeline.java @@ -77,19 +77,19 @@ * var examplePipeline = new Pipeline("examplePipeline", PipelineArgs.builder() * .pipelineName("example") * .pipelineConfigurationBody(example.arn().applyValue(_arn -> """ - * version: "2" + * version: \"2\" * example-pipeline: * source: * http: - * path: "/example" + * path: \"/example\" * sink: * - s3: * aws: - * sts_role_arn: "%s" - * region: "%s" - * bucket: "example" + * sts_role_arn: \"%s\" + * region: \"%s\" + * bucket: \"example\" * threshold: - * event_collect_timeout: "60s" + * event_collect_timeout: \"60s\" * codec: * ndjson: * ", _arn,current.region()))) diff --git a/sdk/java/src/main/java/com/pulumi/aws/organizations/OrganizationsFunctions.java b/sdk/java/src/main/java/com/pulumi/aws/organizations/OrganizationsFunctions.java index 1162bdd4abb..bac1306006d 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/organizations/OrganizationsFunctions.java +++ b/sdk/java/src/main/java/com/pulumi/aws/organizations/OrganizationsFunctions.java @@ -2325,6 +2325,8 @@ public static CompletableFuture getOrganizationalU * * ## Example Usage * + * ### Basic Usage + * */ public static Output getPolicies(GetPoliciesArgs args) { return getPolicies(args, InvokeOptions.Empty); @@ -2334,6 +2336,8 @@ public static Output getPolicies(GetPoliciesArgs args) { * * ## Example Usage * + * ### Basic Usage + * */ public static CompletableFuture getPoliciesPlain(GetPoliciesPlainArgs args) { return getPoliciesPlain(args, InvokeOptions.Empty); @@ -2343,6 +2347,8 @@ public static CompletableFuture getPoliciesPlain(GetPoliciesP * * ## Example Usage * + * ### Basic Usage + * */ public static Output getPolicies(GetPoliciesArgs args, InvokeOptions options) { return Deployment.getInstance().invoke("aws:organizations/getPolicies:getPolicies", TypeShape.of(GetPoliciesResult.class), args, Utilities.withVersion(options)); @@ -2352,6 +2358,8 @@ public static Output getPolicies(GetPoliciesArgs args, Invoke * * ## Example Usage * + * ### Basic Usage + * */ public static Output getPolicies(GetPoliciesArgs args, InvokeOutputOptions options) { return Deployment.getInstance().invoke("aws:organizations/getPolicies:getPolicies", TypeShape.of(GetPoliciesResult.class), args, Utilities.withVersion(options)); @@ -2361,6 +2369,8 @@ public static Output getPolicies(GetPoliciesArgs args, Invoke * * ## Example Usage * + * ### Basic Usage + * */ public static CompletableFuture getPoliciesPlain(GetPoliciesPlainArgs args, InvokeOptions options) { return Deployment.getInstance().invokeAsync("aws:organizations/getPolicies:getPolicies", TypeShape.of(GetPoliciesResult.class), args, Utilities.withVersion(options)); @@ -2370,6 +2380,8 @@ public static CompletableFuture getPoliciesPlain(GetPoliciesP * * ## Example Usage * + * ### Basic Usage + * */ public static Output getPoliciesForTarget(GetPoliciesForTargetArgs args) { return getPoliciesForTarget(args, InvokeOptions.Empty); @@ -2379,6 +2391,8 @@ public static Output getPoliciesForTarget(GetPolicie * * ## Example Usage * + * ### Basic Usage + * */ public static CompletableFuture getPoliciesForTargetPlain(GetPoliciesForTargetPlainArgs args) { return getPoliciesForTargetPlain(args, InvokeOptions.Empty); @@ -2388,6 +2402,8 @@ public static CompletableFuture getPoliciesForTarget * * ## Example Usage * + * ### Basic Usage + * */ public static Output getPoliciesForTarget(GetPoliciesForTargetArgs args, InvokeOptions options) { return Deployment.getInstance().invoke("aws:organizations/getPoliciesForTarget:getPoliciesForTarget", TypeShape.of(GetPoliciesForTargetResult.class), args, Utilities.withVersion(options)); @@ -2397,6 +2413,8 @@ public static Output getPoliciesForTarget(GetPolicie * * ## Example Usage * + * ### Basic Usage + * */ public static Output getPoliciesForTarget(GetPoliciesForTargetArgs args, InvokeOutputOptions options) { return Deployment.getInstance().invoke("aws:organizations/getPoliciesForTarget:getPoliciesForTarget", TypeShape.of(GetPoliciesForTargetResult.class), args, Utilities.withVersion(options)); @@ -2406,6 +2424,8 @@ public static Output getPoliciesForTarget(GetPolicie * * ## Example Usage * + * ### Basic Usage + * */ public static CompletableFuture getPoliciesForTargetPlain(GetPoliciesForTargetPlainArgs args, InvokeOptions options) { return Deployment.getInstance().invokeAsync("aws:organizations/getPoliciesForTarget:getPoliciesForTarget", TypeShape.of(GetPoliciesForTargetResult.class), args, Utilities.withVersion(options)); diff --git a/sdk/java/src/main/java/com/pulumi/aws/organizations/ResourcePolicy.java b/sdk/java/src/main/java/com/pulumi/aws/organizations/ResourcePolicy.java index dfe207d2249..890644df566 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/organizations/ResourcePolicy.java +++ b/sdk/java/src/main/java/com/pulumi/aws/organizations/ResourcePolicy.java @@ -45,32 +45,32 @@ * var example = new ResourcePolicy("example", ResourcePolicyArgs.builder() * .content(""" * { - * "Version": "2012-10-17", - * "Statement": [ + * \"Version\": \"2012-10-17\", + * \"Statement\": [ * { - * "Sid": "DelegatingNecessaryDescribeListActions", - * "Effect": "Allow", - * "Principal": { - * "AWS": "arn:aws:iam::123456789012:root" + * \"Sid\": \"DelegatingNecessaryDescribeListActions\", + * \"Effect\": \"Allow\", + * \"Principal\": { + * \"AWS\": \"arn:aws:iam::123456789012:root\" * }, - * "Action": [ - * "organizations:DescribeOrganization", - * "organizations:DescribeOrganizationalUnit", - * "organizations:DescribeAccount", - * "organizations:DescribePolicy", - * "organizations:DescribeEffectivePolicy", - * "organizations:ListRoots", - * "organizations:ListOrganizationalUnitsForParent", - * "organizations:ListParents", - * "organizations:ListChildren", - * "organizations:ListAccounts", - * "organizations:ListAccountsForParent", - * "organizations:ListPolicies", - * "organizations:ListPoliciesForTarget", - * "organizations:ListTargetsForPolicy", - * "organizations:ListTagsForResource" + * \"Action\": [ + * \"organizations:DescribeOrganization\", + * \"organizations:DescribeOrganizationalUnit\", + * \"organizations:DescribeAccount\", + * \"organizations:DescribePolicy\", + * \"organizations:DescribeEffectivePolicy\", + * \"organizations:ListRoots\", + * \"organizations:ListOrganizationalUnitsForParent\", + * \"organizations:ListParents\", + * \"organizations:ListChildren\", + * \"organizations:ListAccounts\", + * \"organizations:ListAccountsForParent\", + * \"organizations:ListPolicies\", + * \"organizations:ListPoliciesForTarget\", + * \"organizations:ListTargetsForPolicy\", + * \"organizations:ListTagsForResource\" * ], - * "Resource": "*" + * \"Resource\": \"*\" * } * ] * } diff --git a/sdk/java/src/main/java/com/pulumi/aws/outposts/OutpostsFunctions.java b/sdk/java/src/main/java/com/pulumi/aws/outposts/OutpostsFunctions.java index d3cfddfeb01..e85dbcae09f 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/outposts/OutpostsFunctions.java +++ b/sdk/java/src/main/java/com/pulumi/aws/outposts/OutpostsFunctions.java @@ -915,8 +915,8 @@ public static CompletableFuture getOutpostPlain(GetOutpostPlai * import com.pulumi.core.Output; * import com.pulumi.aws.outposts.OutpostsFunctions; * import com.pulumi.aws.outposts.inputs.GetOutpostInstanceTypeArgs; - * import com.pulumi.aws.ec2Instance; - * import com.pulumi.aws.ec2InstanceArgs; + * import com.pulumi.aws.Ec2Instance; + * import com.pulumi.aws.Ec2InstanceArgs; * import java.util.List; * import java.util.ArrayList; * import java.util.Map; @@ -964,8 +964,8 @@ public static Output getOutpostInstanceType(GetOut * import com.pulumi.core.Output; * import com.pulumi.aws.outposts.OutpostsFunctions; * import com.pulumi.aws.outposts.inputs.GetOutpostInstanceTypeArgs; - * import com.pulumi.aws.ec2Instance; - * import com.pulumi.aws.ec2InstanceArgs; + * import com.pulumi.aws.Ec2Instance; + * import com.pulumi.aws.Ec2InstanceArgs; * import java.util.List; * import java.util.ArrayList; * import java.util.Map; @@ -1013,8 +1013,8 @@ public static CompletableFuture getOutpostInstance * import com.pulumi.core.Output; * import com.pulumi.aws.outposts.OutpostsFunctions; * import com.pulumi.aws.outposts.inputs.GetOutpostInstanceTypeArgs; - * import com.pulumi.aws.ec2Instance; - * import com.pulumi.aws.ec2InstanceArgs; + * import com.pulumi.aws.Ec2Instance; + * import com.pulumi.aws.Ec2InstanceArgs; * import java.util.List; * import java.util.ArrayList; * import java.util.Map; @@ -1062,8 +1062,8 @@ public static Output getOutpostInstanceType(GetOut * import com.pulumi.core.Output; * import com.pulumi.aws.outposts.OutpostsFunctions; * import com.pulumi.aws.outposts.inputs.GetOutpostInstanceTypeArgs; - * import com.pulumi.aws.ec2Instance; - * import com.pulumi.aws.ec2InstanceArgs; + * import com.pulumi.aws.Ec2Instance; + * import com.pulumi.aws.Ec2InstanceArgs; * import java.util.List; * import java.util.ArrayList; * import java.util.Map; @@ -1111,8 +1111,8 @@ public static Output getOutpostInstanceType(GetOut * import com.pulumi.core.Output; * import com.pulumi.aws.outposts.OutpostsFunctions; * import com.pulumi.aws.outposts.inputs.GetOutpostInstanceTypeArgs; - * import com.pulumi.aws.ec2Instance; - * import com.pulumi.aws.ec2InstanceArgs; + * import com.pulumi.aws.Ec2Instance; + * import com.pulumi.aws.Ec2InstanceArgs; * import java.util.List; * import java.util.ArrayList; * import java.util.Map; diff --git a/sdk/java/src/main/java/com/pulumi/aws/rds/CustomDbEngineVersion.java b/sdk/java/src/main/java/com/pulumi/aws/rds/CustomDbEngineVersion.java index ac96c893227..99f7b822984 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/rds/CustomDbEngineVersion.java +++ b/sdk/java/src/main/java/com/pulumi/aws/rds/CustomDbEngineVersion.java @@ -58,7 +58,7 @@ * .kmsKeyId(example.arn()) * .manifest(""" * { - * "databaseInstallationFileNames":["V982063-01.zip"] + * \t\"databaseInstallationFileNames\":[\"V982063-01.zip\"] * } * """) * .tags(Map.ofEntries( diff --git a/sdk/java/src/main/java/com/pulumi/aws/resourcegroups/Group.java b/sdk/java/src/main/java/com/pulumi/aws/resourcegroups/Group.java index e0091294460..1fe5af6311b 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/resourcegroups/Group.java +++ b/sdk/java/src/main/java/com/pulumi/aws/resourcegroups/Group.java @@ -51,13 +51,13 @@ * .resourceQuery(GroupResourceQueryArgs.builder() * .query(""" * { - * "ResourceTypeFilters": [ - * "AWS::EC2::Instance" + * \"ResourceTypeFilters\": [ + * \"AWS::EC2::Instance\" * ], - * "TagFilters": [ + * \"TagFilters\": [ * { - * "Key": "Stage", - * "Values": ["Test"] + * \"Key\": \"Stage\", + * \"Values\": [\"Test\"] * } * ] * } diff --git a/sdk/java/src/main/java/com/pulumi/aws/route53/TrafficPolicy.java b/sdk/java/src/main/java/com/pulumi/aws/route53/TrafficPolicy.java index 725376c883c..cd32e175316 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/route53/TrafficPolicy.java +++ b/sdk/java/src/main/java/com/pulumi/aws/route53/TrafficPolicy.java @@ -47,15 +47,15 @@ * .comment("example comment") * .document(""" * { - * "AWSPolicyFormatVersion": "2015-10-01", - * "RecordType": "A", - * "Endpoints": { - * "endpoint-start-NkPh": { - * "Type": "value", - * "Value": "10.0.0.2" + * \"AWSPolicyFormatVersion\": \"2015-10-01\", + * \"RecordType\": \"A\", + * \"Endpoints\": { + * \"endpoint-start-NkPh\": { + * \"Type\": \"value\", + * \"Value\": \"10.0.0.2\" * } * }, - * "StartEndpoint": "endpoint-start-NkPh" + * \"StartEndpoint\": \"endpoint-start-NkPh\" * } * """) * .build()); diff --git a/sdk/java/src/main/java/com/pulumi/aws/s3/BucketWebsiteConfiguration.java b/sdk/java/src/main/java/com/pulumi/aws/s3/BucketWebsiteConfiguration.java index 3fcac994348..23be0b038f4 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/s3/BucketWebsiteConfiguration.java +++ b/sdk/java/src/main/java/com/pulumi/aws/s3/BucketWebsiteConfiguration.java @@ -115,11 +115,11 @@ * .build()) * .routingRuleDetails(""" * [{ - * "Condition": { - * "KeyPrefixEquals": "docs/" + * \"Condition\": { + * \"KeyPrefixEquals\": \"docs/\" * }, - * "Redirect": { - * "ReplaceKeyPrefixWith": "" + * \"Redirect\": { + * \"ReplaceKeyPrefixWith\": \"\" * } * }] * """) diff --git a/sdk/java/src/main/java/com/pulumi/aws/s3/BucketWebsiteConfigurationV2.java b/sdk/java/src/main/java/com/pulumi/aws/s3/BucketWebsiteConfigurationV2.java index 6c3c2ac0303..8cfb8e26372 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/s3/BucketWebsiteConfigurationV2.java +++ b/sdk/java/src/main/java/com/pulumi/aws/s3/BucketWebsiteConfigurationV2.java @@ -115,11 +115,11 @@ * .build()) * .routingRuleDetails(""" * [{ - * "Condition": { - * "KeyPrefixEquals": "docs/" + * \"Condition\": { + * \"KeyPrefixEquals\": \"docs/\" * }, - * "Redirect": { - * "ReplaceKeyPrefixWith": "" + * \"Redirect\": { + * \"ReplaceKeyPrefixWith\": \"\" * } * }] * """) diff --git a/sdk/java/src/main/java/com/pulumi/aws/s3control/AccessGrantsInstanceResourcePolicy.java b/sdk/java/src/main/java/com/pulumi/aws/s3control/AccessGrantsInstanceResourcePolicy.java index b585b187f47..4775e2dd1e8 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/s3control/AccessGrantsInstanceResourcePolicy.java +++ b/sdk/java/src/main/java/com/pulumi/aws/s3control/AccessGrantsInstanceResourcePolicy.java @@ -47,20 +47,20 @@ * var exampleAccessGrantsInstanceResourcePolicy = new AccessGrantsInstanceResourcePolicy("exampleAccessGrantsInstanceResourcePolicy", AccessGrantsInstanceResourcePolicyArgs.builder() * .policy(example.accessGrantsInstanceArn().applyValue(_accessGrantsInstanceArn -> """ * { - * "Version": "2012-10-17", - * "Id": "S3AccessGrantsPolicy", - * "Statement": [{ - * "Sid": "AllowAccessToS3AccessGrants", - * "Effect": "Allow", - * "Principal": { - * "AWS": "123456789456" + * \"Version\": \"2012-10-17\", + * \"Id\": \"S3AccessGrantsPolicy\", + * \"Statement\": [{ + * \"Sid\": \"AllowAccessToS3AccessGrants\", + * \"Effect\": \"Allow\", + * \"Principal\": { + * \"AWS\": \"123456789456\" * }, - * "Action": [ - * "s3:ListAccessGrants", - * "s3:ListAccessGrantsLocations", - * "s3:GetDataAccess" + * \"Action\": [ + * \"s3:ListAccessGrants\", + * \"s3:ListAccessGrantsLocations\", + * \"s3:GetDataAccess\" * ], - * "Resource": "%s" + * \"Resource\": \"%s\" * }] * } * ", _accessGrantsInstanceArn))) diff --git a/sdk/java/src/main/java/com/pulumi/aws/sagemaker/FlowDefinition.java b/sdk/java/src/main/java/com/pulumi/aws/sagemaker/FlowDefinition.java index 4dcec76f872..b752ea0db31 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/sagemaker/FlowDefinition.java +++ b/sdk/java/src/main/java/com/pulumi/aws/sagemaker/FlowDefinition.java @@ -173,15 +173,15 @@ * .humanLoopActivationConditionsConfig(FlowDefinitionHumanLoopActivationConfigHumanLoopActivationConditionsConfigArgs.builder() * .humanLoopActivationConditions(""" * { - * "Conditions": [ - * { - * "ConditionType": "Sampling", - * "ConditionParameters": { - * "RandomSamplingPercentage": 5 - * } - * } - * ] - * } + * \t\t\t\"Conditions\": [ + * \t\t\t { + * \t\t\t\t\"ConditionType\": \"Sampling\", + * \t\t\t\t\"ConditionParameters\": { + * \t\t\t\t \"RandomSamplingPercentage\": 5 + * \t\t\t\t} + * \t\t\t } + * \t\t\t] + * \t\t} * """) * .build()) * .build()) diff --git a/sdk/java/src/main/java/com/pulumi/aws/sagemaker/ModelPackageGroupPolicy.java b/sdk/java/src/main/java/com/pulumi/aws/sagemaker/ModelPackageGroupPolicy.java index 0724ac1e660..a6706b44e64 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/sagemaker/ModelPackageGroupPolicy.java +++ b/sdk/java/src/main/java/com/pulumi/aws/sagemaker/ModelPackageGroupPolicy.java @@ -18,6 +18,73 @@ * * ## Example Usage * + * ### Basic usage + * + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.aws.AwsFunctions;
+ * import com.pulumi.aws.inputs.GetCallerIdentityArgs;
+ * import com.pulumi.aws.sagemaker.ModelPackageGroup;
+ * import com.pulumi.aws.sagemaker.ModelPackageGroupArgs;
+ * import com.pulumi.aws.iam.IamFunctions;
+ * import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
+ * import com.pulumi.aws.sagemaker.ModelPackageGroupPolicy;
+ * import com.pulumi.aws.sagemaker.ModelPackageGroupPolicyArgs;
+ * import com.pulumi.std.StdFunctions;
+ * import com.pulumi.std.inputs.JsondecodeArgs;
+ * import static com.pulumi.codegen.internal.Serialization.*;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()
+ *             .build());
+ * 
+ *         var exampleModelPackageGroup = new ModelPackageGroup("exampleModelPackageGroup", ModelPackageGroupArgs.builder()
+ *             .modelPackageGroupName("example")
+ *             .build());
+ * 
+ *         final var example = exampleModelPackageGroup.arn().applyValue(_arn -> IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
+ *             .statements(GetPolicyDocumentStatementArgs.builder()
+ *                 .sid("AddPermModelPackageGroup")
+ *                 .actions(                
+ *                     "sagemaker:DescribeModelPackage",
+ *                     "sagemaker:ListModelPackages")
+ *                 .resources(_arn)
+ *                 .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
+ *                     .identifiers(current.accountId())
+ *                     .type("AWS")
+ *                     .build())
+ *                 .build())
+ *             .build()));
+ * 
+ *         var exampleModelPackageGroupPolicy = new ModelPackageGroupPolicy("exampleModelPackageGroupPolicy", ModelPackageGroupPolicyArgs.builder()
+ *             .modelPackageGroupName(exampleModelPackageGroup.modelPackageGroupName())
+ *             .resourcePolicy(StdFunctions.jsondecode(JsondecodeArgs.builder()
+ *                 .input(example.json())
+ *                 .build()).applyValue(_invoke -> serializeJson(
+ *                 _invoke.result())))
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * * ## Import * * Using `pulumi import`, import SageMaker AI Model Package Groups using the `name`. For example: diff --git a/sdk/java/src/main/java/com/pulumi/aws/secretsmanager/SecretVersion.java b/sdk/java/src/main/java/com/pulumi/aws/secretsmanager/SecretVersion.java index 0c3e1ac2e99..f31e68c44fa 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/secretsmanager/SecretVersion.java +++ b/sdk/java/src/main/java/com/pulumi/aws/secretsmanager/SecretVersion.java @@ -103,6 +103,58 @@ * * Reading key-value pairs from JSON back into a native map * + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.std.StdFunctions;
+ * import com.pulumi.std.inputs.JsondecodeArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         ctx.export("example", StdFunctions.jsondecode(JsondecodeArgs.builder()
+ *             .input(exampleAwsSecretsmanagerSecretVersion.secretString())
+ *             .build()).result().key1());
+ *     }
+ * }
+ * }
+ * 
+ * + * ## Import + * + * ### Identity Schema + * + * #### Required + * + * * `secret_id` - (String) ID of the secret. + * + * * `version_id` - (String) ID of the secret version. + * + * #### Optional + * + * * `account_id` (String) AWS Account where this resource is managed. + * + * * `region` (String) Region where this resource is managed. + * + * Using `pulumi import`, import `aws_secretsmanager_secret_version` using the secret ID and version ID. For example: + * + * console + * + * % pulumi import aws_secretsmanager_secret_version.example 'arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456|xxxxx-xxxxxxx-xxxxxxx-xxxxx' + * */ @ResourceType(type="aws:secretsmanager/secretVersion:SecretVersion") public class SecretVersion extends com.pulumi.resources.CustomResource { diff --git a/sdk/java/src/main/java/com/pulumi/aws/secretsmanager/SecretsmanagerFunctions.java b/sdk/java/src/main/java/com/pulumi/aws/secretsmanager/SecretsmanagerFunctions.java index 78f721f06b4..5948522a8e9 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/secretsmanager/SecretsmanagerFunctions.java +++ b/sdk/java/src/main/java/com/pulumi/aws/secretsmanager/SecretsmanagerFunctions.java @@ -1126,6 +1126,40 @@ public static CompletableFuture getSecretRotationPlain( * } * * + * ### Handling Key-Value Secret Strings in JSON + * + * Reading key-value pairs from JSON back into a native map + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.std.StdFunctions;
+     * import com.pulumi.std.inputs.JsondecodeArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         ctx.export("example", StdFunctions.jsondecode(JsondecodeArgs.builder()
+     *             .input(exampleAwsSecretsmanagerSecretVersion.secretString())
+     *             .build()).result().key1());
+     *     }
+     * }
+     * }
+     * 
+ * */ public static Output getSecretVersion(GetSecretVersionArgs args) { return getSecretVersion(args, InvokeOptions.Empty); @@ -1204,6 +1238,40 @@ public static Output getSecretVersion(GetSecretVersionAr * } * * + * ### Handling Key-Value Secret Strings in JSON + * + * Reading key-value pairs from JSON back into a native map + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.std.StdFunctions;
+     * import com.pulumi.std.inputs.JsondecodeArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         ctx.export("example", StdFunctions.jsondecode(JsondecodeArgs.builder()
+     *             .input(exampleAwsSecretsmanagerSecretVersion.secretString())
+     *             .build()).result().key1());
+     *     }
+     * }
+     * }
+     * 
+ * */ public static CompletableFuture getSecretVersionPlain(GetSecretVersionPlainArgs args) { return getSecretVersionPlain(args, InvokeOptions.Empty); @@ -1282,6 +1350,40 @@ public static CompletableFuture getSecretVersionPlain(Ge * } * * + * ### Handling Key-Value Secret Strings in JSON + * + * Reading key-value pairs from JSON back into a native map + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.std.StdFunctions;
+     * import com.pulumi.std.inputs.JsondecodeArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         ctx.export("example", StdFunctions.jsondecode(JsondecodeArgs.builder()
+     *             .input(exampleAwsSecretsmanagerSecretVersion.secretString())
+     *             .build()).result().key1());
+     *     }
+     * }
+     * }
+     * 
+ * */ public static Output getSecretVersion(GetSecretVersionArgs args, InvokeOptions options) { return Deployment.getInstance().invoke("aws:secretsmanager/getSecretVersion:getSecretVersion", TypeShape.of(GetSecretVersionResult.class), args, Utilities.withVersion(options)); @@ -1360,6 +1462,40 @@ public static Output getSecretVersion(GetSecretVersionAr * } * * + * ### Handling Key-Value Secret Strings in JSON + * + * Reading key-value pairs from JSON back into a native map + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.std.StdFunctions;
+     * import com.pulumi.std.inputs.JsondecodeArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         ctx.export("example", StdFunctions.jsondecode(JsondecodeArgs.builder()
+     *             .input(exampleAwsSecretsmanagerSecretVersion.secretString())
+     *             .build()).result().key1());
+     *     }
+     * }
+     * }
+     * 
+ * */ public static Output getSecretVersion(GetSecretVersionArgs args, InvokeOutputOptions options) { return Deployment.getInstance().invoke("aws:secretsmanager/getSecretVersion:getSecretVersion", TypeShape.of(GetSecretVersionResult.class), args, Utilities.withVersion(options)); @@ -1438,6 +1574,40 @@ public static Output getSecretVersion(GetSecretVersionAr * } * * + * ### Handling Key-Value Secret Strings in JSON + * + * Reading key-value pairs from JSON back into a native map + * + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.std.StdFunctions;
+     * import com.pulumi.std.inputs.JsondecodeArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         ctx.export("example", StdFunctions.jsondecode(JsondecodeArgs.builder()
+     *             .input(exampleAwsSecretsmanagerSecretVersion.secretString())
+     *             .build()).result().key1());
+     *     }
+     * }
+     * }
+     * 
+ * */ public static CompletableFuture getSecretVersionPlain(GetSecretVersionPlainArgs args, InvokeOptions options) { return Deployment.getInstance().invokeAsync("aws:secretsmanager/getSecretVersion:getSecretVersion", TypeShape.of(GetSecretVersionResult.class), args, Utilities.withVersion(options)); diff --git a/sdk/java/src/main/java/com/pulumi/aws/securityhub/StandardsControlAssociation.java b/sdk/java/src/main/java/com/pulumi/aws/securityhub/StandardsControlAssociation.java index ba9b6487706..9725b9a7e73 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/securityhub/StandardsControlAssociation.java +++ b/sdk/java/src/main/java/com/pulumi/aws/securityhub/StandardsControlAssociation.java @@ -65,6 +65,56 @@ * } * * + * ## Disabling security control in all standards + * + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.aws.securityhub.Account;
+ * import com.pulumi.aws.securityhub.SecurityhubFunctions;
+ * import com.pulumi.aws.securityhub.inputs.GetStandardsControlAssociationsArgs;
+ * import com.pulumi.aws.securityhub.StandardsControlAssociation;
+ * import com.pulumi.aws.securityhub.StandardsControlAssociationArgs;
+ * import com.pulumi.codegen.internal.KeyedValue;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var example = new Account("example");
+ * 
+ *         final var iam1 = SecurityhubFunctions.getStandardsControlAssociations(GetStandardsControlAssociationsArgs.builder()
+ *             .securityControlId("IAM.1")
+ *             .build());
+ * 
+ *         for (var range : KeyedValue.of(com.pulumi.std.StdFunctions(TosetArgs.builder()
+ *             .input(iam1.standardsControlAssociations().stream().map(element -> element.standardsArn()).collect(toList()))
+ *             .build()).result())) {
+ *             new StandardsControlAssociation("iam1StandardsControlAssociation-" + range.key(), StandardsControlAssociationArgs.builder()
+ *                 .standardsArn(range.key())
+ *                 .securityControlId(iam1.securityControlId())
+ *                 .associationStatus("DISABLED")
+ *                 .updatedReason("Not needed")
+ *                 .build());
+ *         }
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * */ @ResourceType(type="aws:securityhub/standardsControlAssociation:StandardsControlAssociation") public class StandardsControlAssociation extends com.pulumi.resources.CustomResource { diff --git a/sdk/java/src/main/java/com/pulumi/aws/sesv2/EmailIdentityPolicy.java b/sdk/java/src/main/java/com/pulumi/aws/sesv2/EmailIdentityPolicy.java index 101ff6d6cc7..0cb484f1799 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/sesv2/EmailIdentityPolicy.java +++ b/sdk/java/src/main/java/com/pulumi/aws/sesv2/EmailIdentityPolicy.java @@ -53,22 +53,22 @@ * .policyName("example") * .policy(example.arn().applyValue(_arn -> """ * }{{@code - * "Id":"ExampleAuthorizationPolicy", - * "Version":"2012-10-17", - * "Statement":[ + * \"Id\":\"ExampleAuthorizationPolicy\", + * \"Version\":\"2012-10-17\", + * \"Statement\":[ * }{{@code - * "Sid":"AuthorizeIAMUser", - * "Effect":"Allow", - * "Resource":"%s", - * "Principal":}{{@code - * "AWS":[ - * "arn:aws:iam::123456789012:user/John", - * "arn:aws:iam::123456789012:user/Jane" + * \"Sid\":\"AuthorizeIAMUser\", + * \"Effect\":\"Allow\", + * \"Resource\":\"%s\", + * \"Principal\":}{{@code + * \"AWS\":[ + * \"arn:aws:iam::123456789012:user/John\", + * \"arn:aws:iam::123456789012:user/Jane\" * ] * }}{@code , - * "Action":[ - * "ses:DeleteEmailIdentity", - * "ses:PutEmailIdentityDkimSigningAttributes" + * \"Action\":[ + * \"ses:DeleteEmailIdentity\", + * \"ses:PutEmailIdentityDkimSigningAttributes\" * ] * }}{@code * ] diff --git a/sdk/java/src/main/java/com/pulumi/aws/sfn/StateMachine.java b/sdk/java/src/main/java/com/pulumi/aws/sfn/StateMachine.java index 2e855ec39fc..1d60cfe538e 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/sfn/StateMachine.java +++ b/sdk/java/src/main/java/com/pulumi/aws/sfn/StateMachine.java @@ -54,13 +54,13 @@ * .roleArn(iamForSfn.arn()) * .definition(""" * { - * "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", - * "StartAt": "HelloWorld", - * "States": { - * "HelloWorld": { - * "Type": "Task", - * "Resource": "%s", - * "End": true + * \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\", + * \"StartAt\": \"HelloWorld\", + * \"States\": { + * \"HelloWorld\": { + * \"Type\": \"Task\", + * \"Resource\": \"%s\", + * \"End\": true * } * } * } @@ -103,13 +103,13 @@ * .type("EXPRESS") * .definition(""" * { - * "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", - * "StartAt": "HelloWorld", - * "States": { - * "HelloWorld": { - * "Type": "Task", - * "Resource": "%s", - * "End": true + * \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\", + * \"StartAt\": \"HelloWorld\", + * \"States\": { + * \"HelloWorld\": { + * \"Type\": \"Task\", + * \"Resource\": \"%s\", + * \"End\": true * } * } * } @@ -153,13 +153,13 @@ * .type("EXPRESS") * .definition(""" * { - * "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", - * "StartAt": "HelloWorld", - * "States": { - * "HelloWorld": { - * "Type": "Task", - * "Resource": "%s", - * "End": true + * \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\", + * \"StartAt\": \"HelloWorld\", + * \"States\": { + * \"HelloWorld\": { + * \"Type\": \"Task\", + * \"Resource\": \"%s\", + * \"End\": true * } * } * } @@ -204,13 +204,13 @@ * .roleArn(iamForSfn.arn()) * .definition(""" * { - * "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", - * "StartAt": "HelloWorld", - * "States": { - * "HelloWorld": { - * "Type": "Task", - * "Resource": "%s", - * "End": true + * \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\", + * \"StartAt\": \"HelloWorld\", + * \"States\": { + * \"HelloWorld\": { + * \"Type\": \"Task\", + * \"Resource\": \"%s\", + * \"End\": true * } * } * } @@ -260,13 +260,13 @@ * .roleArn(iamForSfn.arn()) * .definition(""" * { - * "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", - * "StartAt": "HelloWorld", - * "States": { - * "HelloWorld": { - * "Type": "Task", - * "Resource": "%s", - * "End": true + * \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\", + * \"StartAt\": \"HelloWorld\", + * \"States\": { + * \"HelloWorld\": { + * \"Type\": \"Task\", + * \"Resource\": \"%s\", + * \"End\": true * } * } * } diff --git a/sdk/java/src/main/java/com/pulumi/aws/sns/Topic.java b/sdk/java/src/main/java/com/pulumi/aws/sns/Topic.java index 223f12cbb0b..e74f99e9c9e 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/sns/Topic.java +++ b/sdk/java/src/main/java/com/pulumi/aws/sns/Topic.java @@ -81,19 +81,19 @@ * .name("user-updates-topic") * .deliveryPolicy(""" * { - * "http": { - * "defaultHealthyRetryPolicy": { - * "minDelayTarget": 20, - * "maxDelayTarget": 20, - * "numRetries": 3, - * "numMaxDelayRetries": 0, - * "numNoDelayRetries": 0, - * "numMinDelayRetries": 0, - * "backoffFunction": "linear" + * \"http\": { + * \"defaultHealthyRetryPolicy\": { + * \"minDelayTarget\": 20, + * \"maxDelayTarget\": 20, + * \"numRetries\": 3, + * \"numMaxDelayRetries\": 0, + * \"numNoDelayRetries\": 0, + * \"numMinDelayRetries\": 0, + * \"backoffFunction\": \"linear\" * }, - * "disableSubscriptionOverrides": false, - * "defaultThrottlePolicy": { - * "maxReceivesPerSecond": 1 + * \"disableSubscriptionOverrides\": false, + * \"defaultThrottlePolicy\": { + * \"maxReceivesPerSecond\": 1 * } * } * } diff --git a/sdk/java/src/main/java/com/pulumi/aws/sns/TopicSubscription.java b/sdk/java/src/main/java/com/pulumi/aws/sns/TopicSubscription.java index 6ba60431485..d5936e1d74a 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/sns/TopicSubscription.java +++ b/sdk/java/src/main/java/com/pulumi/aws/sns/TopicSubscription.java @@ -265,21 +265,21 @@ * .rawMessageDelivery(true) * .deliveryPolicy(""" * { - * "healthyRetryPolicy": { - * "minDelayTarget": 20, - * "maxDelayTarget": 20, - * "numRetries": 3, - * "numMaxDelayRetries": 0, - * "numNoDelayRetries": 0, - * "numMinDelayRetries": 0, - * "backoffFunction": "linear" + * \"healthyRetryPolicy\": { + * \"minDelayTarget\": 20, + * \"maxDelayTarget\": 20, + * \"numRetries\": 3, + * \"numMaxDelayRetries\": 0, + * \"numNoDelayRetries\": 0, + * \"numMinDelayRetries\": 0, + * \"backoffFunction\": \"linear\" * }, - * "sicklyRetryPolicy": null, - * "throttlePolicy": null, - * "requestPolicy": { - * "headerContentType": "text/plain; application/json" + * \"sicklyRetryPolicy\": null, + * \"throttlePolicy\": null, + * \"requestPolicy\": { + * \"headerContentType\": \"text/plain; application/json\" * }, - * "guaranteed": false + * \"guaranteed\": false * } * """) * .build()); diff --git a/sdk/java/src/main/java/com/pulumi/aws/ssm/Association.java b/sdk/java/src/main/java/com/pulumi/aws/ssm/Association.java index 57ef8dbb0c2..d4d848934a9 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/ssm/Association.java +++ b/sdk/java/src/main/java/com/pulumi/aws/ssm/Association.java @@ -350,7 +350,7 @@ * yum install -y httpd * systemctl enable httpd * systemctl start httpd - * echo "

Web Server - %s

" > /var/www/html/index.html + * echo \"

Web Server - %s

\" > /var/www/html/index.html * ", prefix)) * .build()).result()) * .tags(Map.ofEntries( diff --git a/sdk/java/src/main/java/com/pulumi/aws/ssm/Document.java b/sdk/java/src/main/java/com/pulumi/aws/ssm/Document.java index 29fb0a1a9c7..1a1b9c001b6 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/ssm/Document.java +++ b/sdk/java/src/main/java/com/pulumi/aws/ssm/Document.java @@ -55,17 +55,17 @@ * .documentType("Command") * .content(""" * { - * "schemaVersion": "1.2", - * "description": "Check ip configuration of a Linux instance.", - * "parameters": { + * \"schemaVersion\": \"1.2\", + * \"description\": \"Check ip configuration of a Linux instance.\", + * \"parameters\": { * * }, - * "runtimeConfig": { - * "aws:runShellScript": { - * "properties": [ + * \"runtimeConfig\": { + * \"aws:runShellScript\": { + * \"properties\": [ * { - * "id": "0.aws:runShellScript", - * "runCommand": ["ifconfig"] + * \"id\": \"0.aws:runShellScript\", + * \"runCommand\": [\"ifconfig\"] * } * ] * } diff --git a/sdk/java/src/main/java/com/pulumi/aws/timestreamquery/ScheduledQuery.java b/sdk/java/src/main/java/com/pulumi/aws/timestreamquery/ScheduledQuery.java index 3466f7a26f6..3ef5dd432fb 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/timestreamquery/ScheduledQuery.java +++ b/sdk/java/src/main/java/com/pulumi/aws/timestreamquery/ScheduledQuery.java @@ -69,10 +69,10 @@ * .name(exampleAwsTimestreamwriteTable.tableName()) * .queryString(""" * SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp, - * ROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, - * ROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, - * ROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, - * ROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization + * \tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, + * \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, + * \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, + * \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization * FROM exampledatabase.exampletable * WHERE measure_name = 'metrics' AND time > ago(2h) * GROUP BY region, hostname, az, BIN(time, 15s) @@ -351,10 +351,10 @@ * .name(exampleAwsTimestreamwriteTable.tableName()) * .queryString(""" * SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp, - * ROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, - * ROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, - * ROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, - * ROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization + * \tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, + * \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, + * \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, + * \tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization * FROM exampledatabase.exampletable * WHERE measure_name = 'metrics' AND time > ago(2h) * GROUP BY region, hostname, az, BIN(time, 15s) diff --git a/sdk/java/src/main/java/com/pulumi/aws/transfer/SshKey.java b/sdk/java/src/main/java/com/pulumi/aws/transfer/SshKey.java index aa5e46eb587..3bde9bf0282 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/transfer/SshKey.java +++ b/sdk/java/src/main/java/com/pulumi/aws/transfer/SshKey.java @@ -25,8 +25,8 @@ * import com.pulumi.Context; * import com.pulumi.Pulumi; * import com.pulumi.core.Output; - * import com.pulumi.tls.privateKey; - * import com.pulumi.tls.privateKeyArgs; + * import com.pulumi.tls.PrivateKey; + * import com.pulumi.tls.PrivateKeyArgs; * import com.pulumi.aws.transfer.Server; * import com.pulumi.aws.transfer.ServerArgs; * import com.pulumi.aws.iam.IamFunctions; @@ -92,7 +92,7 @@ * .userName(exampleUser.userName()) * .body(StdFunctions.trimspace(TrimspaceArgs.builder() * .input(examplePrivateKey.publicKeyOpenssh()) - * .build()).result()) + * .build()).applyValue(_invoke -> _invoke.result())) * .build()); * * final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() diff --git a/sdk/java/src/main/java/com/pulumi/aws/vpc/RouteServerPeer.java b/sdk/java/src/main/java/com/pulumi/aws/vpc/RouteServerPeer.java index c99ff930be8..50aea00dd2e 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/vpc/RouteServerPeer.java +++ b/sdk/java/src/main/java/com/pulumi/aws/vpc/RouteServerPeer.java @@ -72,8 +72,8 @@ * import com.pulumi.core.Output; * import com.pulumi.aws.vpc.RouteServer; * import com.pulumi.aws.vpc.RouteServerArgs; - * import com.pulumi.aws.vpcRouteServerAssociation; - * import com.pulumi.aws.vpcRouteServerAssociationArgs; + * import com.pulumi.aws.VpcRouteServerAssociation; + * import com.pulumi.aws.VpcRouteServerAssociationArgs; * import com.pulumi.aws.vpc.RouteServerEndpoint; * import com.pulumi.aws.vpc.RouteServerEndpointArgs; * import com.pulumi.aws.vpc.RouteServerPropagation; diff --git a/sdk/nodejs/acm/certificate.ts b/sdk/nodejs/acm/certificate.ts index a8262962f75..5d441ff669b 100644 --- a/sdk/nodejs/acm/certificate.ts +++ b/sdk/nodejs/acm/certificate.ts @@ -66,32 +66,6 @@ import * as utilities from "../utilities"; * * ### Existing Certificate Body Import * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as aws from "@pulumi/aws"; - * import * as tls from "@pulumi/tls"; - * - * const example = new tls.index.PrivateKey("example", {algorithm: "RSA"}); - * const exampleSelfSignedCert = new tls.index.SelfSignedCert("example", { - * keyAlgorithm: "RSA", - * privateKeyPem: example.privateKeyPem, - * subject: [{ - * commonName: "example.com", - * organization: "ACME Examples, Inc", - * }], - * validityPeriodHours: 12, - * allowedUses: [ - * "key_encipherment", - * "digital_signature", - * "server_auth", - * ], - * }); - * const cert = new aws.acm.Certificate("cert", { - * privateKey: example.privateKeyPem, - * certificateBody: exampleSelfSignedCert.certPem, - * }); - * ``` - * * ### Referencing domainValidationOptions With forEach Based Resources * * See the `aws.acm.CertificateValidation` resource for a full example of performing DNS validation. diff --git a/sdk/nodejs/acmpca/certificate.ts b/sdk/nodejs/acmpca/certificate.ts index e3e2aa97e45..d7959484e9f 100644 --- a/sdk/nodejs/acmpca/certificate.ts +++ b/sdk/nodejs/acmpca/certificate.ts @@ -19,39 +19,6 @@ import * as utilities from "../utilities"; * * ### Basic * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as aws from "@pulumi/aws"; - * import * as tls from "@pulumi/tls"; - * - * const exampleCertificateAuthority = new aws.acmpca.CertificateAuthority("example", { - * certificateAuthorityConfiguration: { - * keyAlgorithm: "RSA_4096", - * signingAlgorithm: "SHA512WITHRSA", - * subject: { - * commonName: "example.com", - * }, - * }, - * permanentDeletionTimeInDays: 7, - * }); - * const key = new tls.index.PrivateKey("key", {algorithm: "RSA"}); - * const csr = new tls.index.CertRequest("csr", { - * privateKeyPem: key.privateKeyPem, - * subject: [{ - * commonName: "example", - * }], - * }); - * const example = new aws.acmpca.Certificate("example", { - * certificateAuthorityArn: exampleCertificateAuthority.arn, - * certificateSigningRequest: csr.certRequestPem, - * signingAlgorithm: "SHA256WITHRSA", - * validity: { - * type: "YEARS", - * value: "1", - * }, - * }); - * ``` - * * ## Import * * ### Identity Schema diff --git a/sdk/nodejs/amplify/app.ts b/sdk/nodejs/amplify/app.ts index c9dc287fc3d..74a01e1fd77 100644 --- a/sdk/nodejs/amplify/app.ts +++ b/sdk/nodejs/amplify/app.ts @@ -158,7 +158,7 @@ import * as utilities from "../utilities"; * - key: 'X-Content-Type-Options' * value: 'nosniff' * - key: 'Content-Security-Policy' - * value: "default-src 'self'" + * value: \\"default-src 'self'\\" * `, * }); * ``` diff --git a/sdk/nodejs/apigateway/integration.ts b/sdk/nodejs/apigateway/integration.ts index 86aaed8f3a5..6aa0cbc31fc 100644 --- a/sdk/nodejs/apigateway/integration.ts +++ b/sdk/nodejs/apigateway/integration.ts @@ -46,7 +46,7 @@ import {RestApi} from "./index"; * }, * requestTemplates: { * "application/xml": `{ - * "body" : input.json('') + * \\"body\\" : input.json('') * } * `, * }, diff --git a/sdk/nodejs/apigateway/integrationResponse.ts b/sdk/nodejs/apigateway/integrationResponse.ts index 4ddf860533d..e9819845cf0 100644 --- a/sdk/nodejs/apigateway/integrationResponse.ts +++ b/sdk/nodejs/apigateway/integrationResponse.ts @@ -52,7 +52,7 @@ import {RestApi} from "./index"; * statusCode: response200.statusCode, * responseTemplates: { * "application/xml": `#set(inputRoot = input.path('')) - * + * * * inputRoot.body * diff --git a/sdk/nodejs/appsync/function.ts b/sdk/nodejs/appsync/function.ts index c0f85cf9f45..588732fb305 100644 --- a/sdk/nodejs/appsync/function.ts +++ b/sdk/nodejs/appsync/function.ts @@ -51,11 +51,11 @@ import * as utilities from "../utilities"; * dataSource: exampleDataSource.name, * name: "example", * requestMappingTemplate: `{ - * "version": "2018-05-29", - * "method": "GET", - * "resourcePath": "/", - * "params":{ - * "headers": utils.http.copyheaders(ctx.request.headers) + * \\"version\\": \\"2018-05-29\\", + * \\"method\\": \\"GET\\", + * \\"resourcePath\\": \\"/\\", + * \\"params\\":{ + * \\"headers\\": utils.http.copyheaders(ctx.request.headers) * } * } * `, diff --git a/sdk/nodejs/appsync/graphQLApi.ts b/sdk/nodejs/appsync/graphQLApi.ts index 3230cfc39de..c68e47a1abd 100644 --- a/sdk/nodejs/appsync/graphQLApi.ts +++ b/sdk/nodejs/appsync/graphQLApi.ts @@ -115,7 +115,7 @@ import * as utilities from "../utilities"; * authenticationType: "AWS_IAM", * name: "example", * schema: `schema { - * \x09query: Query + * \\tquery: Query * } * type Query { * test: Int diff --git a/sdk/nodejs/appsync/resolver.ts b/sdk/nodejs/appsync/resolver.ts index 504be511dd4..74ec7fdc5f2 100644 --- a/sdk/nodejs/appsync/resolver.ts +++ b/sdk/nodejs/appsync/resolver.ts @@ -20,21 +20,21 @@ import * as utilities from "../utilities"; * authenticationType: "API_KEY", * name: "tf-example", * schema: `type Mutation { - * \x09putPost(id: ID!, title: String!): Post + * \\tputPost(id: ID!, title: String!): Post * } * * type Post { - * \x09id: ID! - * \x09title: String! + * \\tid: ID! + * \\ttitle: String! * } * * type Query { - * \x09singlePost(id: ID!): Post + * \\tsinglePost(id: ID!): Post * } * * schema { - * \x09query: Query - * \x09mutation: Mutation + * \\tquery: Query + * \\tmutation: Mutation * } * `, * }); @@ -53,11 +53,11 @@ import * as utilities from "../utilities"; * type: "Query", * dataSource: testDataSource.name, * requestTemplate: `{ - * "version": "2018-05-29", - * "method": "GET", - * "resourcePath": "/", - * "params":{ - * "headers": utils.http.copyheaders(ctx.request.headers) + * \\"version\\": \\"2018-05-29\\", + * \\"method\\": \\"GET\\", + * \\"resourcePath\\": \\"/\\", + * \\"params\\":{ + * \\"headers\\": utils.http.copyheaders(ctx.request.headers) * } * } * `, diff --git a/sdk/nodejs/autoscaling/tag.ts b/sdk/nodejs/autoscaling/tag.ts index b85a8f21d39..ea2c6f65858 100644 --- a/sdk/nodejs/autoscaling/tag.ts +++ b/sdk/nodejs/autoscaling/tag.ts @@ -14,6 +14,36 @@ import * as utilities from "../utilities"; * * > **NOTE:** This tagging resource does not use the provider `ignoreTags` configuration. * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * const example = new aws.eks.NodeGroup("example", { + * clusterName: "example", + * nodeGroupName: "example", + * }); + * const exampleTag: aws.autoscaling.Tag[] = []; + * std.tosetOutput({ + * input: std.flattenOutput({ + * input: example.resources.apply(resources => resources.map(resources => (resources.autoscalingGroups))), + * }).apply(invoke => .map(asg => (asg.name))), + * }).apply(invoke => { + * for (const range of invoke.result.map((v, k) => ({key: k, value: v}))) { + * exampleTag.push(new aws.autoscaling.Tag(`example-${range.key}`, { + * autoscalingGroupName: range.value, + * tag: { + * key: "k8s.io/cluster-autoscaler/node-template/label/eks.amazonaws.com/capacityType", + * value: "SPOT", + * propagateAtLaunch: false, + * }, + * })); + * } + * }); + * ``` + * * ## Import * * Using `pulumi import`, import `aws_autoscaling_group_tag` using the ASG name and key, separated by a comma (`,`). For example: diff --git a/sdk/nodejs/autoscalingplans/scalingPlan.ts b/sdk/nodejs/autoscalingplans/scalingPlan.ts index cbd214a537e..1e8ef5bf3af 100644 --- a/sdk/nodejs/autoscalingplans/scalingPlan.ts +++ b/sdk/nodejs/autoscalingplans/scalingPlan.ts @@ -17,6 +17,106 @@ import * as utilities from "../utilities"; * * ## Example Usage * + * ### Basic Dynamic Scaling + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * const available = aws.getAvailabilityZones({}); + * const example = new aws.autoscaling.Group("example", { + * namePrefix: "example", + * launchConfiguration: exampleAwsLaunchConfiguration.name, + * availabilityZones: [available.then(available => available.names?.[0])], + * minSize: 0, + * maxSize: 3, + * tags: [{ + * key: "application", + * value: "example", + * propagateAtLaunch: true, + * }], + * }); + * const exampleScalingPlan = new aws.autoscalingplans.ScalingPlan("example", { + * name: "example-dynamic-cost-optimization", + * applicationSource: { + * tagFilters: [{ + * key: "application", + * values: ["example"], + * }], + * }, + * scalingInstructions: [{ + * maxCapacity: 3, + * minCapacity: 0, + * resourceId: std.format({ + * input: "autoScalingGroup/%s", + * args: [example.name], + * }).then(invoke => invoke.result), + * scalableDimension: "autoscaling:autoScalingGroup:DesiredCapacity", + * serviceNamespace: "autoscaling", + * targetTrackingConfigurations: [{ + * predefinedScalingMetricSpecification: { + * predefinedScalingMetricType: "ASGAverageCPUUtilization", + * }, + * targetValue: 70, + * }], + * }], + * }); + * ``` + * + * ### Basic Predictive Scaling + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * const available = aws.getAvailabilityZones({}); + * const example = new aws.autoscaling.Group("example", { + * namePrefix: "example", + * launchConfiguration: exampleAwsLaunchConfiguration.name, + * availabilityZones: [available.then(available => available.names?.[0])], + * minSize: 0, + * maxSize: 3, + * tags: [{ + * key: "application", + * value: "example", + * propagateAtLaunch: true, + * }], + * }); + * const exampleScalingPlan = new aws.autoscalingplans.ScalingPlan("example", { + * name: "example-predictive-cost-optimization", + * applicationSource: { + * tagFilters: [{ + * key: "application", + * values: ["example"], + * }], + * }, + * scalingInstructions: [{ + * disableDynamicScaling: true, + * maxCapacity: 3, + * minCapacity: 0, + * resourceId: std.format({ + * input: "autoScalingGroup/%s", + * args: [example.name], + * }).then(invoke => invoke.result), + * scalableDimension: "autoscaling:autoScalingGroup:DesiredCapacity", + * serviceNamespace: "autoscaling", + * targetTrackingConfigurations: [{ + * predefinedScalingMetricSpecification: { + * predefinedScalingMetricType: "ASGAverageCPUUtilization", + * }, + * targetValue: 70, + * }], + * predictiveScalingMaxCapacityBehavior: "SetForecastCapacityToMaxCapacity", + * predictiveScalingMode: "ForecastAndScale", + * predefinedLoadMetricSpecification: { + * predefinedLoadMetricType: "ASGTotalCPUUtilization", + * }, + * }], + * }); + * ``` + * * ## Import * * Using `pulumi import`, import Auto Scaling scaling plans using the `name`. For example: diff --git a/sdk/nodejs/bedrockmodel/invocationLoggingConfiguration.ts b/sdk/nodejs/bedrockmodel/invocationLoggingConfiguration.ts index ef4551c3e67..dff17da8483 100644 --- a/sdk/nodejs/bedrockmodel/invocationLoggingConfiguration.ts +++ b/sdk/nodejs/bedrockmodel/invocationLoggingConfiguration.ts @@ -28,25 +28,25 @@ import * as utilities from "../utilities"; * const exampleBucketPolicy = new aws.s3.BucketPolicy("example", { * bucket: example.bucket, * policy: pulumi.all([example.arn, current, current]).apply(([arn, current, current1]) => `{ - * "Version": "2012-10-17", - * "Statement": [ + * \"Version\": \"2012-10-17\", + * \"Statement\": [ * { - * "Effect": "Allow", - * "Principal": { - * "Service": "bedrock.amazonaws.com" + * \"Effect\": \"Allow\", + * \"Principal\": { + * \"Service\": \"bedrock.amazonaws.com\" * }, - * "Action": [ - * "s3:*" + * \"Action\": [ + * \"s3:*\" * ], - * "Resource": [ - * "${arn}/*" + * \"Resource\": [ + * \"${arn}/*\" * ], - * "Condition": { - * "StringEquals": { - * "aws:SourceAccount": "${current.accountId}" + * \"Condition\": { + * \"StringEquals\": { + * \"aws:SourceAccount\": \"${current.accountId}\" * }, - * "ArnLike": { - * "aws:SourceArn": "arn:aws:bedrock:us-east-1:${current1.accountId}:*" + * \"ArnLike\": { + * \"aws:SourceArn\": \"arn:aws:bedrock:us-east-1:${current1.accountId}:*\" * } * } * } diff --git a/sdk/nodejs/cfg/organizationCustomPolicyRule.ts b/sdk/nodejs/cfg/organizationCustomPolicyRule.ts index c6ec4425d6e..464f90120da 100644 --- a/sdk/nodejs/cfg/organizationCustomPolicyRule.ts +++ b/sdk/nodejs/cfg/organizationCustomPolicyRule.ts @@ -23,15 +23,15 @@ import * as utilities from "../utilities"; * policyText: `let status = ['ACTIVE'] * * rule tableisactive when - * resourceType == "AWS::DynamoDB::Table" { + * resourceType == \\"AWS::DynamoDB::Table\\" { * configuration.tableStatus == %status * } * * rule checkcompliance when - * resourceType == "AWS::DynamoDB::Table" + * resourceType == \\"AWS::DynamoDB::Table\\" * tableisactive { * let pitr = supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus - * %pitr == "ENABLED" + * %pitr == \\"ENABLED\\" * } * `, * resourceTypesScopes: ["AWS::DynamoDB::Table"], diff --git a/sdk/nodejs/cfg/rule.ts b/sdk/nodejs/cfg/rule.ts index 3c5437f1d41..e804ec571d0 100644 --- a/sdk/nodejs/cfg/rule.ts +++ b/sdk/nodejs/cfg/rule.ts @@ -105,16 +105,16 @@ import * as utilities from "../utilities"; * }], * customPolicyDetails: { * policyRuntime: "guard-2.x.x", - * policyText: `\x09 rule tableisactive when - * \x09\x09 resourceType == "AWS::DynamoDB::Table" { - * \x09\x09 configuration.tableStatus == ['ACTIVE'] - * \x09 } - * \x09 - * \x09 rule checkcompliance when - * \x09\x09 resourceType == "AWS::DynamoDB::Table" - * \x09\x09 tableisactive { - * \x09\x09\x09 supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == "ENABLED" - * \x09 } + * policyText: `\\t rule tableisactive when + * \\t\\t resourceType == \\"AWS::DynamoDB::Table\\" { + * \\t\\t configuration.tableStatus == ['ACTIVE'] + * \\t } + * \\t + * \\t rule checkcompliance when + * \\t\\t resourceType == \\"AWS::DynamoDB::Table\\" + * \\t\\t tableisactive { + * \\t\\t\\t supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == \\"ENABLED\\" + * \\t } * `, * }, * }, diff --git a/sdk/nodejs/cloudwatch/eventTarget.ts b/sdk/nodejs/cloudwatch/eventTarget.ts index fd300f99f73..3d4355f13a1 100644 --- a/sdk/nodejs/cloudwatch/eventTarget.ts +++ b/sdk/nodejs/cloudwatch/eventTarget.ts @@ -319,8 +319,8 @@ import * as utilities from "../utilities"; * status: "$.detail.status", * }, * inputTemplate: `{ - * "instance_id": , - * "instance_status": + * \\"instance_id\\": , + * \\"instance_status\\": * } * `, * }, @@ -473,7 +473,7 @@ import * as utilities from "../utilities"; * input: "$.detail.input", * }, * inputTemplate: ` { - * "input": + * \\"input\\": * } * `, * }, diff --git a/sdk/nodejs/cloudwatch/metricAlarm.ts b/sdk/nodejs/cloudwatch/metricAlarm.ts index 57b036bf032..a71cfa303c4 100644 --- a/sdk/nodejs/cloudwatch/metricAlarm.ts +++ b/sdk/nodejs/cloudwatch/metricAlarm.ts @@ -167,7 +167,7 @@ import {Topic} from "../sns"; * id: "q1", * expression: `SELECT * MAX(DBLoadRelativeToNumVCPUs) - * FROM SCHEMA("AWS/RDS", DBInstanceIdentifier) + * FROM SCHEMA(\\"AWS/RDS\\", DBInstanceIdentifier) * WHERE DBInstanceIdentifier != 'example-rds-instance' * GROUP BY DBInstanceIdentifier * ORDER BY MIN() ASC diff --git a/sdk/nodejs/cognito/identityPoolProviderPrincipalTag.ts b/sdk/nodejs/cognito/identityPoolProviderPrincipalTag.ts index d6a4bb0f2ef..d8344b0b866 100644 --- a/sdk/nodejs/cognito/identityPoolProviderPrincipalTag.ts +++ b/sdk/nodejs/cognito/identityPoolProviderPrincipalTag.ts @@ -7,6 +7,43 @@ import * as utilities from "../utilities"; /** * Provides an AWS Cognito Identity Principal Mapping. * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * const example = new aws.cognito.UserPool("example", { + * name: "user pool", + * autoVerifiedAttributes: ["email"], + * }); + * const exampleUserPoolClient = new aws.cognito.UserPoolClient("example", { + * name: "client", + * userPoolId: example.id, + * supportedIdentityProviders: std.compact({ + * input: ["COGNITO"], + * }).then(invoke => invoke.result), + * }); + * const exampleIdentityPool = new aws.cognito.IdentityPool("example", { + * identityPoolName: "identity pool", + * allowUnauthenticatedIdentities: false, + * cognitoIdentityProviders: [{ + * clientId: exampleUserPoolClient.id, + * providerName: example.endpoint, + * serverSideTokenCheck: false, + * }], + * }); + * const exampleIdentityPoolProviderPrincipalTag = new aws.cognito.IdentityPoolProviderPrincipalTag("example", { + * identityPoolId: exampleIdentityPool.id, + * identityProviderName: example.endpoint, + * useDefaults: false, + * principalTags: { + * test: "value", + * }, + * }); + * ``` + * * ## Import * * Using `pulumi import`, import Cognito Identity Pool Roles Attachment using the Identity Pool ID and provider name. For example: diff --git a/sdk/nodejs/datazone/formType.ts b/sdk/nodejs/datazone/formType.ts index a00372b3576..d34aa6d839c 100644 --- a/sdk/nodejs/datazone/formType.ts +++ b/sdk/nodejs/datazone/formType.ts @@ -81,17 +81,17 @@ import * as utilities from "../utilities"; * owningProjectIdentifier: testProject.id, * status: "DISABLED", * model: { - * smithy: `\x09structure SageMakerModelFormType { - * \x09\x09\x09@required - * \x09\x09\x09@amazon.datazone#searchable - * \x09\x09\x09modelName: String + * smithy: `\\tstructure SageMakerModelFormType { + * \\t\\t\\t@required + * \\t\\t\\t@amazon.datazone#searchable + * \\t\\t\\tmodelName: String * - * \x09\x09\x09@required - * \x09\x09\x09modelArn: String + * \\t\\t\\t@required + * \\t\\t\\tmodelArn: String * - * \x09\x09\x09@required - * \x09\x09\x09creationTime: String - * \x09\x09\x09} + * \\t\\t\\t@required + * \\t\\t\\tcreationTime: String + * \\t\\t\\t} * `, * }, * }); diff --git a/sdk/nodejs/dms/replicationConfig.ts b/sdk/nodejs/dms/replicationConfig.ts index 8deaeb38543..ccaf29e314d 100644 --- a/sdk/nodejs/dms/replicationConfig.ts +++ b/sdk/nodejs/dms/replicationConfig.ts @@ -25,7 +25,7 @@ import * as utilities from "../utilities"; * sourceEndpointArn: source.endpointArn, * targetEndpointArn: target.endpointArn, * tableMappings: ` { - * "rules":[{"rule-type":"selection","rule-id":"1","rule-name":"1","rule-action":"include","object-locator":{"schema-name":"%%","table-name":"%%"}}] + * \\"rules\\":[{\\"rule-type\\":\\"selection\\",\\"rule-id\\":\\"1\\",\\"rule-name\\":\\"1\\",\\"rule-action\\":\\"include\\",\\"object-locator\\":{\\"schema-name\\":\\"%%\\",\\"table-name\\":\\"%%\\"}}] * } * `, * startReplication: true, diff --git a/sdk/nodejs/dynamodb/getTableItem.ts b/sdk/nodejs/dynamodb/getTableItem.ts index e8cb26be77b..090f4e29eb9 100644 --- a/sdk/nodejs/dynamodb/getTableItem.ts +++ b/sdk/nodejs/dynamodb/getTableItem.ts @@ -22,7 +22,7 @@ import * as utilities from "../utilities"; * }, * projectionExpression: "#P", * key: `{ - * \x09"hashKey": {"S": "example"} + * \\t\\"hashKey\\": {\\"S\\": \\"example\\"} * } * `, * }); @@ -102,7 +102,7 @@ export interface GetTableItemResult { * }, * projectionExpression: "#P", * key: `{ - * \x09"hashKey": {"S": "example"} + * \\t\\"hashKey\\": {\\"S\\": \\"example\\"} * } * `, * }); diff --git a/sdk/nodejs/dynamodb/tableItem.ts b/sdk/nodejs/dynamodb/tableItem.ts index 002ccb587f1..5977deaadc8 100644 --- a/sdk/nodejs/dynamodb/tableItem.ts +++ b/sdk/nodejs/dynamodb/tableItem.ts @@ -30,11 +30,11 @@ import * as utilities from "../utilities"; * tableName: exampleTable.name, * hashKey: exampleTable.hashKey, * item: `{ - * "exampleHashKey": {"S": "something"}, - * "one": {"N": "11111"}, - * "two": {"N": "22222"}, - * "three": {"N": "33333"}, - * "four": {"N": "44444"} + * \\"exampleHashKey\\": {\\"S\\": \\"something\\"}, + * \\"one\\": {\\"N\\": \\"11111\\"}, + * \\"two\\": {\\"N\\": \\"22222\\"}, + * \\"three\\": {\\"N\\": \\"33333\\"}, + * \\"four\\": {\\"N\\": \\"44444\\"} * } * `, * }); diff --git a/sdk/nodejs/ec2/getSubnets.ts b/sdk/nodejs/ec2/getSubnets.ts index 492a6784896..26fbbbe69b4 100644 --- a/sdk/nodejs/ec2/getSubnets.ts +++ b/sdk/nodejs/ec2/getSubnets.ts @@ -9,6 +9,61 @@ import * as utilities from "../utilities"; /** * This resource can be useful for getting back a set of subnet IDs. + * + * ## Example Usage + * + * The following shows outputting all CIDR blocks for every subnet ID in a VPC. + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * const example = aws.ec2.getSubnets({ + * filters: [{ + * name: "vpc-id", + * values: [vpcId], + * }], + * }); + * const exampleGetSubnet = example.then(example => std.toset({ + * input: example.ids, + * })).then(invoke => .reduce((__obj, [__key, __value]) => ({ ...__obj, [__key]: aws.ec2.getSubnet({ + * id: __value, + * }) }))); + * export const subnetCidrBlocks = exampleGetSubnet.apply(exampleGetSubnet => Object.values(exampleGetSubnet).map(s => (s.cidrBlock))); + * ``` + * + * The following example retrieves a set of all subnets in a VPC with a custom + * tag of `Tier` set to a value of "Private" so that the `aws.ec2.Instance` resource + * can loop through the subnets, putting instances across availability zones. + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * export = async () => { + * const _private = await aws.ec2.getSubnets({ + * filters: [{ + * name: "vpc-id", + * values: [vpcId], + * }], + * tags: { + * Tier: "Private", + * }, + * }); + * const app: aws.ec2.Instance[] = []; + * for (const range of std.toset({ + * input: _private.ids, + * }).result.map((v, k) => ({key: k, value: v}))) { + * app.push(new aws.ec2.Instance(`app-${range.key}`, { + * ami: ami, + * instanceType: aws.ec2.InstanceType.T2_Micro, + * subnetId: range.value, + * })); + * } + * } + * ``` */ export function getSubnets(args?: GetSubnetsArgs, opts?: pulumi.InvokeOptions): Promise { args = args || {}; @@ -57,6 +112,61 @@ export interface GetSubnetsResult { } /** * This resource can be useful for getting back a set of subnet IDs. + * + * ## Example Usage + * + * The following shows outputting all CIDR blocks for every subnet ID in a VPC. + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * const example = aws.ec2.getSubnets({ + * filters: [{ + * name: "vpc-id", + * values: [vpcId], + * }], + * }); + * const exampleGetSubnet = example.then(example => std.toset({ + * input: example.ids, + * })).then(invoke => .reduce((__obj, [__key, __value]) => ({ ...__obj, [__key]: aws.ec2.getSubnet({ + * id: __value, + * }) }))); + * export const subnetCidrBlocks = exampleGetSubnet.apply(exampleGetSubnet => Object.values(exampleGetSubnet).map(s => (s.cidrBlock))); + * ``` + * + * The following example retrieves a set of all subnets in a VPC with a custom + * tag of `Tier` set to a value of "Private" so that the `aws.ec2.Instance` resource + * can loop through the subnets, putting instances across availability zones. + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * export = async () => { + * const _private = await aws.ec2.getSubnets({ + * filters: [{ + * name: "vpc-id", + * values: [vpcId], + * }], + * tags: { + * Tier: "Private", + * }, + * }); + * const app: aws.ec2.Instance[] = []; + * for (const range of std.toset({ + * input: _private.ids, + * }).result.map((v, k) => ({key: k, value: v}))) { + * app.push(new aws.ec2.Instance(`app-${range.key}`, { + * ami: ami, + * instanceType: aws.ec2.InstanceType.T2_Micro, + * subnetId: range.value, + * })); + * } + * } + * ``` */ export function getSubnetsOutput(args?: GetSubnetsOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output { args = args || {}; diff --git a/sdk/nodejs/ec2/securityGroup.ts b/sdk/nodejs/ec2/securityGroup.ts index 451d290d97a..45c2f5471ca 100644 --- a/sdk/nodejs/ec2/securityGroup.ts +++ b/sdk/nodejs/ec2/securityGroup.ts @@ -166,14 +166,14 @@ import * as utilities from "../utilities"; * const exampleProvisioner0 = new command.local.Command("exampleProvisioner0", { * create: "true", * update: "true", - * "delete": ` ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters "Name=tag:Name,Values=${tags.workaround1}" --query "VpcEndpoints[0].VpcEndpointId" --output text` && + * "delete": ` ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters \"Name=tag:Name,Values=${tags.workaround1}\" --query \"VpcEndpoints[0].VpcEndpointId\" --output text` && * aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${ENDPOINT_ID} --add-security-group-ids ${tags.workaround2} --remove-security-group-ids ${id} * `, * }, { * dependsOn: [example], * }); * const exampleResource = new _null.Resource("example", {triggers: { - * rerun_upon_change_of: std.join({ + * rerunUponChangeOf: std.join({ * separator: ",", * input: exampleAwsVpcEndpoint.securityGroupIds, * }).then(invoke => invoke.result), diff --git a/sdk/nodejs/ec2/vpcIpam.ts b/sdk/nodejs/ec2/vpcIpam.ts index dc3105024f1..bd59bc25b82 100644 --- a/sdk/nodejs/ec2/vpcIpam.ts +++ b/sdk/nodejs/ec2/vpcIpam.ts @@ -32,6 +32,34 @@ import * as utilities from "../utilities"; * * Shared with multiple operating_regions: * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * const current = aws.getRegion({}); + * const config = new pulumi.Config(); + * const ipamRegions = config.getObject>("ipamRegions") || [ + * "us-east-1", + * "us-west-2", + * ]; + * // ensure current provider region is an operating_regions entry + * const allIpamRegions = std.concat({ + * input: [ + * [current.then(current => current.region)], + * ipamRegions, + * ], + * }).then(invoke => std.distinct({ + * input: invoke.result, + * })).then(invoke => invoke.result); + * const main = new aws.ec2.VpcIpam("main", { + * operatingRegions: allIpamRegions.map((v, k) => ({key: k, value: v})).apply(entries => entries.map(entry => ({ + * regionName: entry.value, + * }))), + * description: "multi region ipam", + * }); + * ``` + * * ## Import * * Using `pulumi import`, import IPAMs using the IPAM `id`. For example: diff --git a/sdk/nodejs/ecr/lifecyclePolicy.ts b/sdk/nodejs/ecr/lifecyclePolicy.ts index 5ff7d55afb7..0015c3ad99e 100644 --- a/sdk/nodejs/ecr/lifecyclePolicy.ts +++ b/sdk/nodejs/ecr/lifecyclePolicy.ts @@ -26,18 +26,18 @@ import * as utilities from "../utilities"; * const exampleLifecyclePolicy = new aws.ecr.LifecyclePolicy("example", { * repository: example.name, * policy: `{ - * "rules": [ + * \\"rules\\": [ * { - * "rulePriority": 1, - * "description": "Expire images older than 14 days", - * "selection": { - * "tagStatus": "untagged", - * "countType": "sinceImagePushed", - * "countUnit": "days", - * "countNumber": 14 + * \\"rulePriority\\": 1, + * \\"description\\": \\"Expire images older than 14 days\\", + * \\"selection\\": { + * \\"tagStatus\\": \\"untagged\\", + * \\"countType\\": \\"sinceImagePushed\\", + * \\"countUnit\\": \\"days\\", + * \\"countNumber\\": 14 * }, - * "action": { - * "type": "expire" + * \\"action\\": { + * \\"type\\": \\"expire\\" * } * } * ] @@ -56,18 +56,18 @@ import * as utilities from "../utilities"; * const exampleLifecyclePolicy = new aws.ecr.LifecyclePolicy("example", { * repository: example.name, * policy: `{ - * "rules": [ + * \\"rules\\": [ * { - * "rulePriority": 1, - * "description": "Keep last 30 images", - * "selection": { - * "tagStatus": "tagged", - * "tagPrefixList": ["v"], - * "countType": "imageCountMoreThan", - * "countNumber": 30 + * \\"rulePriority\\": 1, + * \\"description\\": \\"Keep last 30 images\\", + * \\"selection\\": { + * \\"tagStatus\\": \\"tagged\\", + * \\"tagPrefixList\\": [\\"v\\"], + * \\"countType\\": \\"imageCountMoreThan\\", + * \\"countNumber\\": 30 * }, - * "action": { - * "type": "expire" + * \\"action\\": { + * \\"type\\": \\"expire\\" * } * } * ] diff --git a/sdk/nodejs/ecr/repositoryCreationTemplate.ts b/sdk/nodejs/ecr/repositoryCreationTemplate.ts index f437b9bbb3f..1da2eccf8bf 100644 --- a/sdk/nodejs/ecr/repositoryCreationTemplate.ts +++ b/sdk/nodejs/ecr/repositoryCreationTemplate.ts @@ -53,18 +53,18 @@ import * as utilities from "../utilities"; * }], * repositoryPolicy: example.then(example => example.json), * lifecyclePolicy: `{ - * "rules": [ + * \\"rules\\": [ * { - * "rulePriority": 1, - * "description": "Expire images older than 14 days", - * "selection": { - * "tagStatus": "untagged", - * "countType": "sinceImagePushed", - * "countUnit": "days", - * "countNumber": 14 + * \\"rulePriority\\": 1, + * \\"description\\": \\"Expire images older than 14 days\\", + * \\"selection\\": { + * \\"tagStatus\\": \\"untagged\\", + * \\"countType\\": \\"sinceImagePushed\\", + * \\"countUnit\\": \\"days\\", + * \\"countNumber\\": 14 * }, - * "action": { - * "type": "expire" + * \\"action\\": { + * \\"type\\": \\"expire\\" * } * } * ] diff --git a/sdk/nodejs/ecs/getTaskDefinition.ts b/sdk/nodejs/ecs/getTaskDefinition.ts index 799a61c7571..ddb5eee6fdf 100644 --- a/sdk/nodejs/ecs/getTaskDefinition.ts +++ b/sdk/nodejs/ecs/getTaskDefinition.ts @@ -21,16 +21,16 @@ import * as utilities from "../utilities"; * family: "mongodb", * containerDefinitions: `[ * { - * "cpu": 128, - * "environment": [{ - * "name": "SECRET", - * "value": "KEY" + * \\"cpu\\": 128, + * \\"environment\\": [{ + * \\"name\\": \\"SECRET\\", + * \\"value\\": \\"KEY\\" * }], - * "essential": true, - * "image": "mongo:latest", - * "memory": 128, - * "memoryReservation": 64, - * "name": "mongodb" + * \\"essential\\": true, + * \\"image\\": \\"mongo:latest\\", + * \\"memory\\": 128, + * \\"memoryReservation\\": 64, + * \\"name\\": \\"mongodb\\" * } * ] * `, @@ -176,16 +176,16 @@ export interface GetTaskDefinitionResult { * family: "mongodb", * containerDefinitions: `[ * { - * "cpu": 128, - * "environment": [{ - * "name": "SECRET", - * "value": "KEY" + * \\"cpu\\": 128, + * \\"environment\\": [{ + * \\"name\\": \\"SECRET\\", + * \\"value\\": \\"KEY\\" * }], - * "essential": true, - * "image": "mongo:latest", - * "memory": 128, - * "memoryReservation": 64, - * "name": "mongodb" + * \\"essential\\": true, + * \\"image\\": \\"mongo:latest\\", + * \\"memory\\": 128, + * \\"memoryReservation\\": 64, + * \\"name\\": \\"mongodb\\" * } * ] * `, diff --git a/sdk/nodejs/eks/getClusters.ts b/sdk/nodejs/eks/getClusters.ts index b8ede49ccbe..bdc4a527a89 100644 --- a/sdk/nodejs/eks/getClusters.ts +++ b/sdk/nodejs/eks/getClusters.ts @@ -6,6 +6,21 @@ import * as utilities from "../utilities"; /** * Retrieve EKS Clusters list + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * const example = aws.eks.getClusters({}); + * const exampleGetCluster = example.then(example => std.toset({ + * input: example.names, + * })).then(invoke => .reduce((__obj, [__key, __value]) => ({ ...__obj, [__key]: aws.eks.getCluster({ + * name: __value, + * }) }))); + * ``` */ export function getClusters(args?: GetClustersArgs, opts?: pulumi.InvokeOptions): Promise { args = args || {}; @@ -41,6 +56,21 @@ export interface GetClustersResult { } /** * Retrieve EKS Clusters list + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * const example = aws.eks.getClusters({}); + * const exampleGetCluster = example.then(example => std.toset({ + * input: example.names, + * })).then(invoke => .reduce((__obj, [__key, __value]) => ({ ...__obj, [__key]: aws.eks.getCluster({ + * name: __value, + * }) }))); + * ``` */ export function getClustersOutput(args?: GetClustersOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output { args = args || {}; diff --git a/sdk/nodejs/elasticsearch/domain.ts b/sdk/nodejs/elasticsearch/domain.ts index 3906e8a4fd3..e30b5719815 100644 --- a/sdk/nodejs/elasticsearch/domain.ts +++ b/sdk/nodejs/elasticsearch/domain.ts @@ -45,15 +45,15 @@ import * as utilities from "../utilities"; * const example = new aws.elasticsearch.Domain("example", { * domainName: domain, * accessPolicies: Promise.all([current, currentGetCallerIdentity]).then(([current, currentGetCallerIdentity]) => `{ - * "Version": "2012-10-17", - * "Statement": [ + * \"Version\": \"2012-10-17\", + * \"Statement\": [ * { - * "Action": "es:*", - * "Principal": "*", - * "Effect": "Allow", - * "Resource": "arn:aws:es:${current.region}:${currentGetCallerIdentity.accountId}:domain/${domain}/*", - * "Condition": { - * "IpAddress": {"aws:SourceIp": ["66.193.100.22/32"]} + * \"Action\": \"es:*\", + * \"Principal\": \"*\", + * \"Effect\": \"Allow\", + * \"Resource\": \"arn:aws:es:${current.region}:${currentGetCallerIdentity.accountId}:domain/${domain}/*\", + * \"Condition\": { + * \"IpAddress\": {\"aws:SourceIp\": [\"66.193.100.22/32\"]} * } * } * ] @@ -149,15 +149,15 @@ import * as utilities from "../utilities"; * "rest.action.multi.allow_explicit_index": "true", * }, * accessPolicies: Promise.all([current, currentGetCallerIdentity]).then(([current, currentGetCallerIdentity]) => `{ - * "Version": "2012-10-17", - * "Statement": [ - * { - * "Action": "es:*", - * "Principal": "*", - * "Effect": "Allow", - * "Resource": "arn:aws:es:${current.region}:${currentGetCallerIdentity.accountId}:domain/${domain}/*" - * } - * ] + * \t\"Version\": \"2012-10-17\", + * \t\"Statement\": [ + * \t\t{ + * \t\t\t\"Action\": \"es:*\", + * \t\t\t\"Principal\": \"*\", + * \t\t\t\"Effect\": \"Allow\", + * \t\t\t\"Resource\": \"arn:aws:es:${current.region}:${currentGetCallerIdentity.accountId}:domain/${domain}/*\" + * \t\t} + * \t] * } * `), * tags: { diff --git a/sdk/nodejs/elasticsearch/domainPolicy.ts b/sdk/nodejs/elasticsearch/domainPolicy.ts index caa00349b44..35e5a9efd60 100644 --- a/sdk/nodejs/elasticsearch/domainPolicy.ts +++ b/sdk/nodejs/elasticsearch/domainPolicy.ts @@ -23,16 +23,16 @@ import * as utilities from "../utilities"; * const main = new aws.elasticsearch.DomainPolicy("main", { * domainName: example.domainName, * accessPolicies: pulumi.interpolate`{ - * "Version": "2012-10-17", - * "Statement": [ + * \"Version\": \"2012-10-17\", + * \"Statement\": [ * { - * "Action": "es:*", - * "Principal": "*", - * "Effect": "Allow", - * "Condition": { - * "IpAddress": {"aws:SourceIp": "127.0.0.1/32"} + * \"Action\": \"es:*\", + * \"Principal\": \"*\", + * \"Effect\": \"Allow\", + * \"Condition\": { + * \"IpAddress\": {\"aws:SourceIp\": \"127.0.0.1/32\"} * }, - * "Resource": "${example.arn}/*" + * \"Resource\": \"${example.arn}/*\" * } * ] * } diff --git a/sdk/nodejs/emr/cluster.ts b/sdk/nodejs/emr/cluster.ts index 71ff387bd44..9fc363211a2 100644 --- a/sdk/nodejs/emr/cluster.ts +++ b/sdk/nodejs/emr/cluster.ts @@ -23,9 +23,9 @@ import * as utilities from "../utilities"; * releaseLabel: "emr-4.6.0", * applications: ["Spark"], * additionalInfo: `{ - * "instanceAwsClientConfiguration": { - * "proxyPort": 8099, - * "proxyHost": "myproxy.example.com" + * \\"instanceAwsClientConfiguration\\": { + * \\"proxyPort\\": 8099, + * \\"proxyHost\\": \\"myproxy.example.com\\" * } * } * `, @@ -50,31 +50,31 @@ import * as utilities from "../utilities"; * }], * bidPrice: "0.30", * autoscalingPolicy: `{ - * "Constraints": { - * "MinCapacity": 1, - * "MaxCapacity": 2 + * \\"Constraints\\": { + * \\"MinCapacity\\": 1, + * \\"MaxCapacity\\": 2 * }, - * "Rules": [ + * \\"Rules\\": [ * { - * "Name": "ScaleOutMemoryPercentage", - * "Description": "Scale out if YARNMemoryAvailablePercentage is less than 15", - * "Action": { - * "SimpleScalingPolicyConfiguration": { - * "AdjustmentType": "CHANGE_IN_CAPACITY", - * "ScalingAdjustment": 1, - * "CoolDown": 300 + * \\"Name\\": \\"ScaleOutMemoryPercentage\\", + * \\"Description\\": \\"Scale out if YARNMemoryAvailablePercentage is less than 15\\", + * \\"Action\\": { + * \\"SimpleScalingPolicyConfiguration\\": { + * \\"AdjustmentType\\": \\"CHANGE_IN_CAPACITY\\", + * \\"ScalingAdjustment\\": 1, + * \\"CoolDown\\": 300 * } * }, - * "Trigger": { - * "CloudWatchAlarmDefinition": { - * "ComparisonOperator": "LESS_THAN", - * "EvaluationPeriods": 1, - * "MetricName": "YARNMemoryAvailablePercentage", - * "Namespace": "AWS/ElasticMapReduce", - * "Period": 300, - * "Statistic": "AVERAGE", - * "Threshold": 15.0, - * "Unit": "PERCENT" + * \\"Trigger\\": { + * \\"CloudWatchAlarmDefinition\\": { + * \\"ComparisonOperator\\": \\"LESS_THAN\\", + * \\"EvaluationPeriods\\": 1, + * \\"MetricName\\": \\"YARNMemoryAvailablePercentage\\", + * \\"Namespace\\": \\"AWS/ElasticMapReduce\\", + * \\"Period\\": 300, + * \\"Statistic\\": \\"AVERAGE\\", + * \\"Threshold\\": 15.0, + * \\"Unit\\": \\"PERCENT\\" * } * } * } @@ -97,28 +97,28 @@ import * as utilities from "../utilities"; * }], * configurationsJson: ` [ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \\"Classification\\": \\"hadoop-env\\", + * \\"Configurations\\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \\"Classification\\": \\"export\\", + * \\"Properties\\": { + * \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" * } * } * ], - * "Properties": {} + * \\"Properties\\": {} * }, * { - * "Classification": "spark-env", - * "Configurations": [ + * \\"Classification\\": \\"spark-env\\", + * \\"Configurations\\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \\"Classification\\": \\"export\\", + * \\"Properties\\": { + * \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" * } * } * ], - * "Properties": {} + * \\"Properties\\": {} * } * ] * `, @@ -347,16 +347,16 @@ export class Cluster extends pulumi.CustomResource { * * const cluster = new aws.emr.Cluster("cluster", {configurationsJson: `[ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \\"Classification\\": \\"hadoop-env\\", + * \\"Configurations\\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \\"Classification\\": \\"export\\", + * \\"Properties\\": { + * \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" * } * } * ], - * "Properties": {} + * \\"Properties\\": {} * } * ] * `}); @@ -625,16 +625,16 @@ export interface ClusterState { * * const cluster = new aws.emr.Cluster("cluster", {configurationsJson: `[ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \\"Classification\\": \\"hadoop-env\\", + * \\"Configurations\\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \\"Classification\\": \\"export\\", + * \\"Properties\\": { + * \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" * } * } * ], - * "Properties": {} + * \\"Properties\\": {} * } * ] * `}); @@ -798,16 +798,16 @@ export interface ClusterArgs { * * const cluster = new aws.emr.Cluster("cluster", {configurationsJson: `[ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \\"Classification\\": \\"hadoop-env\\", + * \\"Configurations\\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \\"Classification\\": \\"export\\", + * \\"Properties\\": { + * \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" * } * } * ], - * "Properties": {} + * \\"Properties\\": {} * } * ] * `}); diff --git a/sdk/nodejs/emr/instanceGroup.ts b/sdk/nodejs/emr/instanceGroup.ts index 8ef714a57e9..77be4ef38ff 100644 --- a/sdk/nodejs/emr/instanceGroup.ts +++ b/sdk/nodejs/emr/instanceGroup.ts @@ -86,16 +86,16 @@ export class InstanceGroup extends pulumi.CustomResource { * * const task = new aws.emr.InstanceGroup("task", {configurationsJson: `[ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \\"Classification\\": \\"hadoop-env\\", + * \\"Configurations\\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \\"Classification\\": \\"export\\", + * \\"Properties\\": { + * \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" * } * } * ], - * "Properties": {} + * \\"Properties\\": {} * } * ] * `}); @@ -211,16 +211,16 @@ export interface InstanceGroupState { * * const task = new aws.emr.InstanceGroup("task", {configurationsJson: `[ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \\"Classification\\": \\"hadoop-env\\", + * \\"Configurations\\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \\"Classification\\": \\"export\\", + * \\"Properties\\": { + * \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" * } * } * ], - * "Properties": {} + * \\"Properties\\": {} * } * ] * `}); @@ -286,16 +286,16 @@ export interface InstanceGroupArgs { * * const task = new aws.emr.InstanceGroup("task", {configurationsJson: `[ * { - * "Classification": "hadoop-env", - * "Configurations": [ + * \\"Classification\\": \\"hadoop-env\\", + * \\"Configurations\\": [ * { - * "Classification": "export", - * "Properties": { - * "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + * \\"Classification\\": \\"export\\", + * \\"Properties\\": { + * \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" * } * } * ], - * "Properties": {} + * \\"Properties\\": {} * } * ] * `}); diff --git a/sdk/nodejs/emr/securityConfiguration.ts b/sdk/nodejs/emr/securityConfiguration.ts index 271ba4fbaeb..50cfc6c1c64 100644 --- a/sdk/nodejs/emr/securityConfiguration.ts +++ b/sdk/nodejs/emr/securityConfiguration.ts @@ -16,18 +16,18 @@ import * as utilities from "../utilities"; * const foo = new aws.emr.SecurityConfiguration("foo", { * name: "emrsc_other", * configuration: `{ - * "EncryptionConfiguration": { - * "AtRestEncryptionConfiguration": { - * "S3EncryptionConfiguration": { - * "EncryptionMode": "SSE-S3" + * \\"EncryptionConfiguration\\": { + * \\"AtRestEncryptionConfiguration\\": { + * \\"S3EncryptionConfiguration\\": { + * \\"EncryptionMode\\": \\"SSE-S3\\" * }, - * "LocalDiskEncryptionConfiguration": { - * "EncryptionKeyProviderType": "AwsKms", - * "AwsKmsKey": "arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key" + * \\"LocalDiskEncryptionConfiguration\\": { + * \\"EncryptionKeyProviderType\\": \\"AwsKms\\", + * \\"AwsKmsKey\\": \\"arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key\\" * } * }, - * "EnableInTransitEncryption": false, - * "EnableAtRestEncryption": true + * \\"EnableInTransitEncryption\\": false, + * \\"EnableAtRestEncryption\\": true * } * } * `, diff --git a/sdk/nodejs/evidently/segment.ts b/sdk/nodejs/evidently/segment.ts index 56de160acc6..6c4ba8e1af7 100644 --- a/sdk/nodejs/evidently/segment.ts +++ b/sdk/nodejs/evidently/segment.ts @@ -35,9 +35,9 @@ import * as utilities from "../utilities"; * const example = new aws.evidently.Segment("example", { * name: "example", * pattern: ` { - * "Price": [ + * \\"Price\\": [ * { - * "numeric": [">",10,"<=",20] + * \\"numeric\\": [\\">\\",10,\\"<=\\",20] * } * ] * } diff --git a/sdk/nodejs/glue/connection.ts b/sdk/nodejs/glue/connection.ts index c56ddfa6cba..2603f2ca1b8 100644 --- a/sdk/nodejs/glue/connection.ts +++ b/sdk/nodejs/glue/connection.ts @@ -180,17 +180,19 @@ import * as utilities from "../utilities"; * secretString: JSON.stringify({ * credentials: std.base64encode({ * input: `{ - * "type": "service_account", - * "project_id": "example-project", - * "private_key_id": "example-key", - * "private_key": "-----BEGIN RSA PRIVATE KEY-----\\nREDACTED\\n-----END RSA PRIVATE KEY-----", - * "client_email": "example-project@appspot.gserviceaccount.com", - * "client_id": example-client", - * "auth_uri": "https://accounts.google.com/o/oauth2/auth", - * "token_uri": "https://oauth2.googleapis.com/token", - * "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - * "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com", - * "universe_domain": "googleapis.com" + * \\"type\\": \\"service_account\\", + * \\"project_id\\": \\"example-project\\", + * \\"private_key_id\\": \\"example-key\\", + * \\"private_key\\": \\"-----BEGIN RSA PRIVATE KEY-----\\ + * REDACTED\\ + * -----END RSA PRIVATE KEY-----\\", + * \\"client_email\\": \\"example-project@appspot.gserviceaccount.com\\", + * \\"client_id\\": example-client\\", + * \\"auth_uri\\": \\"https://accounts.google.com/o/oauth2/auth\\", + * \\"token_uri\\": \\"https://oauth2.googleapis.com/token\\", + * \\"auth_provider_x509_cert_url\\": \\"https://www.googleapis.com/oauth2/v1/certs\\", + * \\"client_x509_cert_url\\": \\"https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com\\", + * \\"universe_domain\\": \\"googleapis.com\\" * } * `, * }).then(invoke => invoke.result), diff --git a/sdk/nodejs/glue/crawler.ts b/sdk/nodejs/glue/crawler.ts index 61f0f5a03b0..a0d4070d5e3 100644 --- a/sdk/nodejs/glue/crawler.ts +++ b/sdk/nodejs/glue/crawler.ts @@ -79,9 +79,9 @@ import * as utilities from "../utilities"; * deleteBehavior: "LOG", * }, * configuration: `{ - * "Version":1.0, - * "Grouping": { - * "TableGroupingPolicy": "CombineCompatibleSchemas" + * \\"Version\\":1.0, + * \\"Grouping\\": { + * \\"TableGroupingPolicy\\": \\"CombineCompatibleSchemas\\" * } * } * `, diff --git a/sdk/nodejs/imagebuilder/workflow.ts b/sdk/nodejs/imagebuilder/workflow.ts index 69419b785f5..e14a2a27563 100644 --- a/sdk/nodejs/imagebuilder/workflow.ts +++ b/sdk/nodejs/imagebuilder/workflow.ts @@ -34,19 +34,19 @@ import * as utilities from "../utilities"; * action: LaunchInstance * onFailure: Abort * inputs: - * waitFor: "ssmAgent" + * waitFor: \\"ssmAgent\\" * * - name: TerminateTestInstance * action: TerminateInstance * onFailure: Continue * inputs: - * instanceId.: ".stepOutputs.LaunchTestInstance.instanceId" + * instanceId.: \\".stepOutputs.LaunchTestInstance.instanceId\\" * * - name: WaitForActionAtEnd * action: WaitForAction * if: * booleanEquals: true - * value: ".parameters.waitForActionAtEnd" + * value: \\".parameters.waitForActionAtEnd\\" * `, * }); * ``` diff --git a/sdk/nodejs/iot/caCertificate.ts b/sdk/nodejs/iot/caCertificate.ts index 59455283a63..bf31944c51b 100644 --- a/sdk/nodejs/iot/caCertificate.ts +++ b/sdk/nodejs/iot/caCertificate.ts @@ -11,53 +11,6 @@ import * as utilities from "../utilities"; * Creates and manages an AWS IoT CA Certificate. * * ## Example Usage - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as aws from "@pulumi/aws"; - * import * as tls from "@pulumi/tls"; - * - * const caPrivateKey = new tls.index.PrivateKey("ca", {algorithm: "RSA"}); - * const ca = new tls.index.SelfSignedCert("ca", { - * privateKeyPem: caPrivateKey.privateKeyPem, - * subject: [{ - * commonName: "example.com", - * organization: "ACME Examples, Inc", - * }], - * validityPeriodHours: 12, - * allowedUses: [ - * "key_encipherment", - * "digital_signature", - * "server_auth", - * ], - * isCaCertificate: true, - * }); - * const verificationPrivateKey = new tls.index.PrivateKey("verification", {algorithm: "RSA"}); - * const example = aws.iot.getRegistrationCode({}); - * const verification = new tls.index.CertRequest("verification", { - * privateKeyPem: verificationPrivateKey.privateKeyPem, - * subject: [{ - * commonName: example.registrationCode, - * }], - * }); - * const verificationLocallySignedCert = new tls.index.LocallySignedCert("verification", { - * certRequestPem: verification.certRequestPem, - * caPrivateKeyPem: caPrivateKey.privateKeyPem, - * caCertPem: ca.certPem, - * validityPeriodHours: 12, - * allowedUses: [ - * "key_encipherment", - * "digital_signature", - * "server_auth", - * ], - * }); - * const exampleCaCertificate = new aws.iot.CaCertificate("example", { - * active: true, - * caCertificatePem: ca.certPem, - * verificationCertificatePem: verificationLocallySignedCert.certPem, - * allowAutoRegistration: true, - * }); - * ``` */ export class CaCertificate extends pulumi.CustomResource { /** diff --git a/sdk/nodejs/iot/getEndpoint.ts b/sdk/nodejs/iot/getEndpoint.ts index 88c0ea26d5a..9a36a7d60f9 100644 --- a/sdk/nodejs/iot/getEndpoint.ts +++ b/sdk/nodejs/iot/getEndpoint.ts @@ -8,6 +8,29 @@ import * as utilities from "../utilities"; * Returns a unique endpoint specific to the AWS account making the call. * * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as kubernetes from "@pulumi/kubernetes"; + * + * const example = aws.iot.getEndpoint({}); + * const agent = new kubernetes.index.Pod("agent", { + * metadata: [{ + * name: "my-device", + * }], + * spec: [{ + * container: [{ + * image: "gcr.io/my-project/image-name", + * name: "image-name", + * env: [{ + * name: "IOT_ENDPOINT", + * value: example.endpointAddress, + * }], + * }], + * }], + * }); + * ``` */ export function getEndpoint(args?: GetEndpointArgs, opts?: pulumi.InvokeOptions): Promise { args = args || {}; @@ -56,6 +79,29 @@ export interface GetEndpointResult { * Returns a unique endpoint specific to the AWS account making the call. * * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as kubernetes from "@pulumi/kubernetes"; + * + * const example = aws.iot.getEndpoint({}); + * const agent = new kubernetes.index.Pod("agent", { + * metadata: [{ + * name: "my-device", + * }], + * spec: [{ + * container: [{ + * image: "gcr.io/my-project/image-name", + * name: "image-name", + * env: [{ + * name: "IOT_ENDPOINT", + * value: example.endpointAddress, + * }], + * }], + * }], + * }); + * ``` */ export function getEndpointOutput(args?: GetEndpointOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output { args = args || {}; diff --git a/sdk/nodejs/iot/getRegistrationCode.ts b/sdk/nodejs/iot/getRegistrationCode.ts index 44b4d7759ca..1826fd3a022 100644 --- a/sdk/nodejs/iot/getRegistrationCode.ts +++ b/sdk/nodejs/iot/getRegistrationCode.ts @@ -8,22 +8,6 @@ import * as utilities from "../utilities"; * Gets a registration code used to register a CA certificate with AWS IoT. * * ## Example Usage - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as aws from "@pulumi/aws"; - * import * as tls from "@pulumi/tls"; - * - * const example = aws.iot.getRegistrationCode({}); - * const verification = new tls.index.PrivateKey("verification", {algorithm: "RSA"}); - * const verificationCertRequest = new tls.index.CertRequest("verification", { - * keyAlgorithm: "RSA", - * privateKeyPem: verification.privateKeyPem, - * subject: [{ - * commonName: example.registrationCode, - * }], - * }); - * ``` */ export function getRegistrationCode(args?: GetRegistrationCodeArgs, opts?: pulumi.InvokeOptions): Promise { args = args || {}; @@ -61,22 +45,6 @@ export interface GetRegistrationCodeResult { * Gets a registration code used to register a CA certificate with AWS IoT. * * ## Example Usage - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as aws from "@pulumi/aws"; - * import * as tls from "@pulumi/tls"; - * - * const example = aws.iot.getRegistrationCode({}); - * const verification = new tls.index.PrivateKey("verification", {algorithm: "RSA"}); - * const verificationCertRequest = new tls.index.CertRequest("verification", { - * keyAlgorithm: "RSA", - * privateKeyPem: verification.privateKeyPem, - * subject: [{ - * commonName: example.registrationCode, - * }], - * }); - * ``` */ export function getRegistrationCodeOutput(args?: GetRegistrationCodeOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output { args = args || {}; diff --git a/sdk/nodejs/kinesis/firehoseDeliveryStream.ts b/sdk/nodejs/kinesis/firehoseDeliveryStream.ts index 9e3446e4b1a..17c878bee56 100644 --- a/sdk/nodejs/kinesis/firehoseDeliveryStream.ts +++ b/sdk/nodejs/kinesis/firehoseDeliveryStream.ts @@ -398,32 +398,32 @@ import * as utilities from "../utilities"; * name: "opensearch", * role: firehose.id, * policy: pulumi.interpolate`{ - * "Version": "2012-10-17", - * "Statement": [ + * \"Version\": \"2012-10-17\", + * \"Statement\": [ * { - * "Effect": "Allow", - * "Action": [ - * "es:*" + * \"Effect\": \"Allow\", + * \"Action\": [ + * \"es:*\" * ], - * "Resource": [ - * "${testCluster.arn}", - * "${testCluster.arn}/*" + * \"Resource\": [ + * \"${testCluster.arn}\", + * \"${testCluster.arn}/*\" * ] * }, * { - * "Effect": "Allow", - * "Action": [ - * "ec2:DescribeVpcs", - * "ec2:DescribeVpcAttribute", - * "ec2:DescribeSubnets", - * "ec2:DescribeSecurityGroups", - * "ec2:DescribeNetworkInterfaces", - * "ec2:CreateNetworkInterface", - * "ec2:CreateNetworkInterfacePermission", - * "ec2:DeleteNetworkInterface" + * \"Effect\": \"Allow\", + * \"Action\": [ + * \"ec2:DescribeVpcs\", + * \"ec2:DescribeVpcAttribute\", + * \"ec2:DescribeSubnets\", + * \"ec2:DescribeSecurityGroups\", + * \"ec2:DescribeNetworkInterfaces\", + * \"ec2:CreateNetworkInterface\", + * \"ec2:CreateNetworkInterfacePermission\", + * \"ec2:DeleteNetworkInterface\" * ], - * "Resource": [ - * "*" + * \"Resource\": [ + * \"*\" * ] * } * ] diff --git a/sdk/nodejs/kinesis/resourcePolicy.ts b/sdk/nodejs/kinesis/resourcePolicy.ts index 0933394035f..2b9be90a403 100644 --- a/sdk/nodejs/kinesis/resourcePolicy.ts +++ b/sdk/nodejs/kinesis/resourcePolicy.ts @@ -17,21 +17,21 @@ import * as utilities from "../utilities"; * const example = new aws.kinesis.ResourcePolicy("example", { * resourceArn: exampleAwsKinesisStream.arn, * policy: `{ - * "Version": "2012-10-17", - * "Id": "writePolicy", - * "Statement": [{ - * "Sid": "writestatement", - * "Effect": "Allow", - * "Principal": { - * "AWS": "123456789456" + * \"Version\": \"2012-10-17\", + * \"Id\": \"writePolicy\", + * \"Statement\": [{ + * \"Sid\": \"writestatement\", + * \"Effect\": \"Allow\", + * \"Principal\": { + * \"AWS\": \"123456789456\" * }, - * "Action": [ - * "kinesis:DescribeStreamSummary", - * "kinesis:ListShards", - * "kinesis:PutRecord", - * "kinesis:PutRecords" + * \"Action\": [ + * \"kinesis:DescribeStreamSummary\", + * \"kinesis:ListShards\", + * \"kinesis:PutRecord\", + * \"kinesis:PutRecords\" * ], - * "Resource": "${exampleAwsKinesisStream.arn}" + * \"Resource\": \"${exampleAwsKinesisStream.arn}\" * }] * } * `, diff --git a/sdk/nodejs/kms/ciphertext.ts b/sdk/nodejs/kms/ciphertext.ts index 8c6ff7ef56a..02f4d88e3d4 100644 --- a/sdk/nodejs/kms/ciphertext.ts +++ b/sdk/nodejs/kms/ciphertext.ts @@ -23,8 +23,8 @@ import * as utilities from "../utilities"; * const oauth = new aws.kms.Ciphertext("oauth", { * keyId: oauthConfig.keyId, * plaintext: `{ - * "client_id": "e587dbae22222f55da22", - * "client_secret": "8289575d00000ace55e1815ec13673955721b8a5" + * \\"client_id\\": \\"e587dbae22222f55da22\\", + * \\"client_secret\\": \\"8289575d00000ace55e1815ec13673955721b8a5\\" * } * `, * }); diff --git a/sdk/nodejs/kms/getCipherText.ts b/sdk/nodejs/kms/getCipherText.ts index d95b6b79cfd..fb19755d44f 100644 --- a/sdk/nodejs/kms/getCipherText.ts +++ b/sdk/nodejs/kms/getCipherText.ts @@ -23,8 +23,8 @@ import * as utilities from "../utilities"; * const oauth = aws.kms.getCipherTextOutput({ * keyId: oauthConfig.keyId, * plaintext: `{ - * "client_id": "e587dbae22222f55da22", - * "client_secret": "8289575d00000ace55e1815ec13673955721b8a5" + * \\"client_id\\": \\"e587dbae22222f55da22\\", + * \\"client_secret\\": \\"8289575d00000ace55e1815ec13673955721b8a5\\" * } * `, * }); @@ -98,8 +98,8 @@ export interface GetCipherTextResult { * const oauth = aws.kms.getCipherTextOutput({ * keyId: oauthConfig.keyId, * plaintext: `{ - * "client_id": "e587dbae22222f55da22", - * "client_secret": "8289575d00000ace55e1815ec13673955721b8a5" + * \\"client_id\\": \\"e587dbae22222f55da22\\", + * \\"client_secret\\": \\"8289575d00000ace55e1815ec13673955721b8a5\\" * } * `, * }); diff --git a/sdk/nodejs/lambda/getCodeSigningConfig.ts b/sdk/nodejs/lambda/getCodeSigningConfig.ts index 8732bd89129..e51d30dc935 100644 --- a/sdk/nodejs/lambda/getCodeSigningConfig.ts +++ b/sdk/nodejs/lambda/getCodeSigningConfig.ts @@ -55,6 +55,45 @@ import * as utilities from "../utilities"; * }); * ``` * + * ### Validate Signing Profiles + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * export = async () => { + * const example = await aws.lambda.getCodeSigningConfig({ + * arn: codeSigningConfigArn, + * }); + * const allowedProfiles = example.allowedPublishers?.[0]?.signingProfileVersionArns; + * const requiredProfile = "arn:aws:signer:us-west-2:123456789012:/signing-profiles/MyProfile"; + * const profileAllowed = (await std.contains({ + * input: allowedProfiles, + * element: requiredProfile, + * })).result; + * // Conditional resource creation based on signing profile validation + * const conditional: aws.lambda.Function[] = []; + * for (const range = {value: 0}; range.value < (profileAllowed ? 1 : 0); range.value++) { + * conditional.push(new aws.lambda.Function(`conditional-${range.value}`, { + * code: new pulumi.asset.FileArchive("function.zip"), + * name: "conditional-function", + * role: lambdaRole.arn, + * handler: "index.handler", + * runtime: aws.lambda.Runtime.Python3d12, + * codeSigningConfigArn: example.arn, + * })); + * } + * return { + * deploymentStatus: { + * profileAllowed: profileAllowed, + * functionCreated: profileAllowed, + * message: profileAllowed ? "Function deployed with valid signing profile" : "Deployment blocked - signing profile not allowed", + * }, + * }; + * } + * ``` + * * ### Multi-Environment Configuration * * ```typescript @@ -182,6 +221,45 @@ export interface GetCodeSigningConfigResult { * }); * ``` * + * ### Validate Signing Profiles + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * export = async () => { + * const example = await aws.lambda.getCodeSigningConfig({ + * arn: codeSigningConfigArn, + * }); + * const allowedProfiles = example.allowedPublishers?.[0]?.signingProfileVersionArns; + * const requiredProfile = "arn:aws:signer:us-west-2:123456789012:/signing-profiles/MyProfile"; + * const profileAllowed = (await std.contains({ + * input: allowedProfiles, + * element: requiredProfile, + * })).result; + * // Conditional resource creation based on signing profile validation + * const conditional: aws.lambda.Function[] = []; + * for (const range = {value: 0}; range.value < (profileAllowed ? 1 : 0); range.value++) { + * conditional.push(new aws.lambda.Function(`conditional-${range.value}`, { + * code: new pulumi.asset.FileArchive("function.zip"), + * name: "conditional-function", + * role: lambdaRole.arn, + * handler: "index.handler", + * runtime: aws.lambda.Runtime.Python3d12, + * codeSigningConfigArn: example.arn, + * })); + * } + * return { + * deploymentStatus: { + * profileAllowed: profileAllowed, + * functionCreated: profileAllowed, + * message: profileAllowed ? "Function deployed with valid signing profile" : "Deployment blocked - signing profile not allowed", + * }, + * }; + * } + * ``` + * * ### Multi-Environment Configuration * * ```typescript diff --git a/sdk/nodejs/lambda/getInvocation.ts b/sdk/nodejs/lambda/getInvocation.ts index 73f8a428e60..d5ac07c4ade 100644 --- a/sdk/nodejs/lambda/getInvocation.ts +++ b/sdk/nodejs/lambda/getInvocation.ts @@ -14,6 +14,56 @@ import * as utilities from "../utilities"; * > **Note:** If you get a `KMSAccessDeniedException: Lambda was unable to decrypt the environment variables because KMS access was denied` error when invoking a Lambda function with environment variables, the IAM role associated with the function may have been deleted and recreated after the function was created. You can fix the problem two ways: 1) updating the function's role to another role and then updating it back again to the recreated role. (When you create a function, Lambda grants permissions on the KMS key to the function's IAM role. If the IAM role is recreated, the grant is no longer valid. Changing the function's role or recreating the function causes Lambda to update the grant.) * * ## Example Usage + * + * ### Basic Invocation + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * const example = aws.lambda.getInvocation({ + * functionName: exampleAwsLambdaFunction.functionName, + * input: JSON.stringify({ + * operation: "getStatus", + * id: "123456", + * }), + * }); + * export const result = example.then(example => std.jsondecode({ + * input: example.result, + * })).then(invoke => invoke.result); + * ``` + * + * ### Dynamic Resource Configuration + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * // Get resource configuration from Lambda + * const resourceConfig = aws.lambda.getInvocation({ + * functionName: "resource-config-generator", + * qualifier: "production", + * input: JSON.stringify({ + * environment: environment, + * region: current.region, + * service: "api", + * }), + * }); + * const config = resourceConfig.then(resourceConfig => std.jsondecode({ + * input: resourceConfig.result, + * })).then(invoke => invoke.result); + * // Use dynamic configuration + * const example = new aws.elasticache.Cluster("example", { + * clusterId: config?.cache?.clusterId, + * engine: config?.cache?.engine, + * nodeType: config?.cache?.nodeType, + * numCacheNodes: config?.cache?.nodes, + * parameterGroupName: config?.cache?.parameterGroup, + * tags: config?.tags, + * }); + * ``` */ export function getInvocation(args: GetInvocationArgs, opts?: pulumi.InvokeOptions): Promise { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); @@ -76,6 +126,56 @@ export interface GetInvocationResult { * > **Note:** If you get a `KMSAccessDeniedException: Lambda was unable to decrypt the environment variables because KMS access was denied` error when invoking a Lambda function with environment variables, the IAM role associated with the function may have been deleted and recreated after the function was created. You can fix the problem two ways: 1) updating the function's role to another role and then updating it back again to the recreated role. (When you create a function, Lambda grants permissions on the KMS key to the function's IAM role. If the IAM role is recreated, the grant is no longer valid. Changing the function's role or recreating the function causes Lambda to update the grant.) * * ## Example Usage + * + * ### Basic Invocation + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * const example = aws.lambda.getInvocation({ + * functionName: exampleAwsLambdaFunction.functionName, + * input: JSON.stringify({ + * operation: "getStatus", + * id: "123456", + * }), + * }); + * export const result = example.then(example => std.jsondecode({ + * input: example.result, + * })).then(invoke => invoke.result); + * ``` + * + * ### Dynamic Resource Configuration + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * // Get resource configuration from Lambda + * const resourceConfig = aws.lambda.getInvocation({ + * functionName: "resource-config-generator", + * qualifier: "production", + * input: JSON.stringify({ + * environment: environment, + * region: current.region, + * service: "api", + * }), + * }); + * const config = resourceConfig.then(resourceConfig => std.jsondecode({ + * input: resourceConfig.result, + * })).then(invoke => invoke.result); + * // Use dynamic configuration + * const example = new aws.elasticache.Cluster("example", { + * clusterId: config?.cache?.clusterId, + * engine: config?.cache?.engine, + * nodeType: config?.cache?.nodeType, + * numCacheNodes: config?.cache?.nodes, + * parameterGroupName: config?.cache?.parameterGroup, + * tags: config?.tags, + * }); + * ``` */ export function getInvocationOutput(args: GetInvocationOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); diff --git a/sdk/nodejs/lambda/invocation.ts b/sdk/nodejs/lambda/invocation.ts index b89032f2bda..2916e5daa43 100644 --- a/sdk/nodejs/lambda/invocation.ts +++ b/sdk/nodejs/lambda/invocation.ts @@ -13,6 +13,37 @@ import * as utilities from "../utilities"; * * ## Example Usage * + * ### Basic Invocation + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * // Lambda function to invoke + * const example = new aws.lambda.Function("example", { + * code: new pulumi.asset.FileArchive("function.zip"), + * name: "data_processor", + * role: lambdaRole.arn, + * handler: "index.handler", + * runtime: aws.lambda.Runtime.Python3d12, + * }); + * // Invoke the function once during resource creation + * const exampleInvocation = new aws.lambda.Invocation("example", { + * functionName: example.name, + * input: JSON.stringify({ + * operation: "initialize", + * config: { + * environment: "production", + * debug: false, + * }, + * }), + * }); + * export const initializationResult = std.jsondecodeOutput({ + * input: exampleInvocation.result, + * }).apply(invoke => invoke.result?.status); + * ``` + * * ### Dynamic Invocation with Triggers * * ```typescript diff --git a/sdk/nodejs/m2/application.ts b/sdk/nodejs/m2/application.ts index 58be5267fa0..1bfe977a57b 100644 --- a/sdk/nodejs/m2/application.ts +++ b/sdk/nodejs/m2/application.ts @@ -23,28 +23,28 @@ import * as utilities from "../utilities"; * engineType: "bluage", * definition: { * content: `{ - * "definition": { - * "listeners": [ + * \"definition\": { + * \"listeners\": [ * { - * "port": 8196, - * "type": "http" + * \"port\": 8196, + * \"type\": \"http\" * } * ], - * "ba-application": { - * "app-location": "${s3_source}/PlanetsDemo-v1.zip" + * \"ba-application\": { + * \"app-location\": \"${s3_source}/PlanetsDemo-v1.zip\" * } * }, - * "source-locations": [ + * \"source-locations\": [ * { - * "source-id": "s3-source", - * "source-type": "s3", - * "properties": { - * "s3-bucket": "example-bucket", - * "s3-key-prefix": "v1" + * \"source-id\": \"s3-source\", + * \"source-type\": \"s3\", + * \"properties\": { + * \"s3-bucket\": \"example-bucket\", + * \"s3-key-prefix\": \"v1\" * } * } * ], - * "template-version": "2.0" + * \"template-version\": \"2.0\" * } * * `, diff --git a/sdk/nodejs/mq/configuration.ts b/sdk/nodejs/mq/configuration.ts index 9f8f46ce077..02da367f268 100644 --- a/sdk/nodejs/mq/configuration.ts +++ b/sdk/nodejs/mq/configuration.ts @@ -20,12 +20,12 @@ import * as utilities from "../utilities"; * name: "example", * engineType: "ActiveMQ", * engineVersion: "5.17.6", - * data: ` - * + * data: ` + * * - * + * * - * + * * * * `, diff --git a/sdk/nodejs/networkmanager/siteToSiteVpnAttachment.ts b/sdk/nodejs/networkmanager/siteToSiteVpnAttachment.ts index 005cf5fcc39..d23c963fd5c 100644 --- a/sdk/nodejs/networkmanager/siteToSiteVpnAttachment.ts +++ b/sdk/nodejs/networkmanager/siteToSiteVpnAttachment.ts @@ -21,6 +21,83 @@ import * as utilities from "../utilities"; * }); * ``` * + * ### Full Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as awscc from "@pulumi/awscc"; + * import * as std from "@pulumi/std"; + * + * const testCustomerGateway = new aws.ec2.CustomerGateway("test", { + * bgpAsn: "65000", + * ipAddress: "172.0.0.1", + * type: "ipsec.1", + * }); + * const testVpnConnection = new aws.ec2.VpnConnection("test", { + * customerGatewayId: testCustomerGateway.id, + * type: "ipsec.1", + * tags: { + * Name: "test", + * }, + * }); + * const testGlobalNetwork = new aws.networkmanager.GlobalNetwork("test", {tags: { + * Name: "test", + * }}); + * const test = aws.networkmanager.getCoreNetworkPolicyDocument({ + * coreNetworkConfigurations: [{ + * vpnEcmpSupport: false, + * asnRanges: ["64512-64555"], + * edgeLocations: [{ + * location: current.region, + * asn: "64512", + * }], + * }], + * segments: [{ + * name: "shared", + * description: "SegmentForSharedServices", + * requireAttachmentAcceptance: true, + * }], + * segmentActions: [{ + * action: "share", + * mode: "attachment-route", + * segment: "shared", + * shareWiths: ["*"], + * }], + * attachmentPolicies: [{ + * ruleNumber: 1, + * conditionLogic: "or", + * conditions: [{ + * type: "tag-value", + * operator: "equals", + * key: "segment", + * value: "shared", + * }], + * action: { + * associationMethod: "constant", + * segment: "shared", + * }, + * }], + * }); + * const testNetworkmanagerCoreNetwork = new awscc.index.NetworkmanagerCoreNetwork("test", { + * globalNetworkId: testGlobalNetwork.id, + * policyDocument: JSON.stringify(std.jsondecode({ + * input: test.json, + * }).result), + * }); + * const testSiteToSiteVpnAttachment = new aws.networkmanager.SiteToSiteVpnAttachment("test", { + * coreNetworkId: testNetworkmanagerCoreNetwork.id, + * vpnConnectionArn: testVpnConnection.arn, + * tags: { + * segment: "shared", + * }, + * }); + * const testAttachmentAccepter = new aws.networkmanager.AttachmentAccepter("test", { + * attachmentId: testSiteToSiteVpnAttachment.id, + * attachmentType: testSiteToSiteVpnAttachment.attachmentType, + * }); + * ``` + * * ## Import * * Using `pulumi import`, import `aws_networkmanager_site_to_site_vpn_attachment` using the attachment ID. For example: diff --git a/sdk/nodejs/opensearchingest/pipeline.ts b/sdk/nodejs/opensearchingest/pipeline.ts index 87994369f84..d7794c8b214 100644 --- a/sdk/nodejs/opensearchingest/pipeline.ts +++ b/sdk/nodejs/opensearchingest/pipeline.ts @@ -32,19 +32,19 @@ import * as utilities from "../utilities"; * })}); * const examplePipeline = new aws.opensearchingest.Pipeline("example", { * pipelineName: "example", - * pipelineConfigurationBody: pulumi.all([example.arn, current]).apply(([arn, current]) => `version: "2" + * pipelineConfigurationBody: pulumi.all([example.arn, current]).apply(([arn, current]) => `version: \"2\" * example-pipeline: * source: * http: - * path: "/example" + * path: \"/example\" * sink: * - s3: * aws: - * sts_role_arn: "${arn}" - * region: "${current.region}" - * bucket: "example" + * sts_role_arn: \"${arn}\" + * region: \"${current.region}\" + * bucket: \"example\" * threshold: - * event_collect_timeout: "60s" + * event_collect_timeout: \"60s\" * codec: * ndjson: * `), diff --git a/sdk/nodejs/organizations/getPolicies.ts b/sdk/nodejs/organizations/getPolicies.ts index 56af5f10c8f..068522697d7 100644 --- a/sdk/nodejs/organizations/getPolicies.ts +++ b/sdk/nodejs/organizations/getPolicies.ts @@ -8,6 +8,23 @@ import * as utilities from "../utilities"; * Data source for managing an AWS Organizations Policies. * * ## Example Usage + * + * ### Basic Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * const example = aws.organizations.getPolicies({ + * filter: "SERVICE_CONTROL_POLICY", + * }); + * const exampleGetPolicy = example.then(example => std.toset({ + * input: example.ids, + * })).then(invoke => .reduce((__obj, [__key, __value]) => ({ ...__obj, [__key]: aws.organizations.getPolicy({ + * policyId: __value, + * }) }))); + * ``` */ export function getPolicies(args: GetPoliciesArgs, opts?: pulumi.InvokeOptions): Promise { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); @@ -44,6 +61,23 @@ export interface GetPoliciesResult { * Data source for managing an AWS Organizations Policies. * * ## Example Usage + * + * ### Basic Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * const example = aws.organizations.getPolicies({ + * filter: "SERVICE_CONTROL_POLICY", + * }); + * const exampleGetPolicy = example.then(example => std.toset({ + * input: example.ids, + * })).then(invoke => .reduce((__obj, [__key, __value]) => ({ ...__obj, [__key]: aws.organizations.getPolicy({ + * policyId: __value, + * }) }))); + * ``` */ export function getPoliciesOutput(args: GetPoliciesOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); diff --git a/sdk/nodejs/organizations/getPoliciesForTarget.ts b/sdk/nodejs/organizations/getPoliciesForTarget.ts index e63c92767d3..da43bc4ed96 100644 --- a/sdk/nodejs/organizations/getPoliciesForTarget.ts +++ b/sdk/nodejs/organizations/getPoliciesForTarget.ts @@ -8,6 +8,25 @@ import * as utilities from "../utilities"; * Data source for managing an AWS Organizations Policies For Target. * * ## Example Usage + * + * ### Basic Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * const example = aws.organizations.getOrganization({}); + * const exampleGetPoliciesForTarget = example.then(example => aws.organizations.getPoliciesForTarget({ + * targetId: example.roots?.[0]?.id, + * filter: "SERVICE_CONTROL_POLICY", + * })); + * const exampleGetPolicy = exampleGetPoliciesForTarget.then(exampleGetPoliciesForTarget => std.toset({ + * input: exampleGetPoliciesForTarget.ids, + * })).then(invoke => .reduce((__obj, [__key, __value]) => ({ ...__obj, [__key]: aws.organizations.getPolicy({ + * policyId: __value, + * }) }))); + * ``` */ export function getPoliciesForTarget(args: GetPoliciesForTargetArgs, opts?: pulumi.InvokeOptions): Promise { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); @@ -50,6 +69,25 @@ export interface GetPoliciesForTargetResult { * Data source for managing an AWS Organizations Policies For Target. * * ## Example Usage + * + * ### Basic Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * const example = aws.organizations.getOrganization({}); + * const exampleGetPoliciesForTarget = example.then(example => aws.organizations.getPoliciesForTarget({ + * targetId: example.roots?.[0]?.id, + * filter: "SERVICE_CONTROL_POLICY", + * })); + * const exampleGetPolicy = exampleGetPoliciesForTarget.then(exampleGetPoliciesForTarget => std.toset({ + * input: exampleGetPoliciesForTarget.ids, + * })).then(invoke => .reduce((__obj, [__key, __value]) => ({ ...__obj, [__key]: aws.organizations.getPolicy({ + * policyId: __value, + * }) }))); + * ``` */ export function getPoliciesForTargetOutput(args: GetPoliciesForTargetOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); diff --git a/sdk/nodejs/organizations/resourcePolicy.ts b/sdk/nodejs/organizations/resourcePolicy.ts index 9bdda47b97e..14c0114f020 100644 --- a/sdk/nodejs/organizations/resourcePolicy.ts +++ b/sdk/nodejs/organizations/resourcePolicy.ts @@ -14,32 +14,32 @@ import * as utilities from "../utilities"; * import * as aws from "@pulumi/aws"; * * const example = new aws.organizations.ResourcePolicy("example", {content: `{ - * "Version": "2012-10-17", - * "Statement": [ + * \\"Version\\": \\"2012-10-17\\", + * \\"Statement\\": [ * { - * "Sid": "DelegatingNecessaryDescribeListActions", - * "Effect": "Allow", - * "Principal": { - * "AWS": "arn:aws:iam::123456789012:root" + * \\"Sid\\": \\"DelegatingNecessaryDescribeListActions\\", + * \\"Effect\\": \\"Allow\\", + * \\"Principal\\": { + * \\"AWS\\": \\"arn:aws:iam::123456789012:root\\" * }, - * "Action": [ - * "organizations:DescribeOrganization", - * "organizations:DescribeOrganizationalUnit", - * "organizations:DescribeAccount", - * "organizations:DescribePolicy", - * "organizations:DescribeEffectivePolicy", - * "organizations:ListRoots", - * "organizations:ListOrganizationalUnitsForParent", - * "organizations:ListParents", - * "organizations:ListChildren", - * "organizations:ListAccounts", - * "organizations:ListAccountsForParent", - * "organizations:ListPolicies", - * "organizations:ListPoliciesForTarget", - * "organizations:ListTargetsForPolicy", - * "organizations:ListTagsForResource" + * \\"Action\\": [ + * \\"organizations:DescribeOrganization\\", + * \\"organizations:DescribeOrganizationalUnit\\", + * \\"organizations:DescribeAccount\\", + * \\"organizations:DescribePolicy\\", + * \\"organizations:DescribeEffectivePolicy\\", + * \\"organizations:ListRoots\\", + * \\"organizations:ListOrganizationalUnitsForParent\\", + * \\"organizations:ListParents\\", + * \\"organizations:ListChildren\\", + * \\"organizations:ListAccounts\\", + * \\"organizations:ListAccountsForParent\\", + * \\"organizations:ListPolicies\\", + * \\"organizations:ListPoliciesForTarget\\", + * \\"organizations:ListTargetsForPolicy\\", + * \\"organizations:ListTagsForResource\\" * ], - * "Resource": "*" + * \\"Resource\\": \\"*\\" * } * ] * } diff --git a/sdk/nodejs/rds/customDbEngineVersion.ts b/sdk/nodejs/rds/customDbEngineVersion.ts index 930005705e8..89f36b9c2e0 100644 --- a/sdk/nodejs/rds/customDbEngineVersion.ts +++ b/sdk/nodejs/rds/customDbEngineVersion.ts @@ -23,7 +23,7 @@ import * as utilities from "../utilities"; * engineVersion: "19.cdb_cev1", * kmsKeyId: example.arn, * manifest: ` { - * \x09"databaseInstallationFileNames":["V982063-01.zip"] + * \\t\\"databaseInstallationFileNames\\":[\\"V982063-01.zip\\"] * } * `, * tags: { diff --git a/sdk/nodejs/resourcegroups/group.ts b/sdk/nodejs/resourcegroups/group.ts index fd364f1495f..4f1db9c300b 100644 --- a/sdk/nodejs/resourcegroups/group.ts +++ b/sdk/nodejs/resourcegroups/group.ts @@ -20,13 +20,13 @@ import * as utilities from "../utilities"; * name: "test-group", * resourceQuery: { * query: `{ - * "ResourceTypeFilters": [ - * "AWS::EC2::Instance" + * \\"ResourceTypeFilters\\": [ + * \\"AWS::EC2::Instance\\" * ], - * "TagFilters": [ + * \\"TagFilters\\": [ * { - * "Key": "Stage", - * "Values": ["Test"] + * \\"Key\\": \\"Stage\\", + * \\"Values\\": [\\"Test\\"] * } * ] * } diff --git a/sdk/nodejs/route53/trafficPolicy.ts b/sdk/nodejs/route53/trafficPolicy.ts index bc2235adf55..d804a94023c 100644 --- a/sdk/nodejs/route53/trafficPolicy.ts +++ b/sdk/nodejs/route53/trafficPolicy.ts @@ -17,15 +17,15 @@ import * as utilities from "../utilities"; * name: "example", * comment: "example comment", * document: `{ - * "AWSPolicyFormatVersion": "2015-10-01", - * "RecordType": "A", - * "Endpoints": { - * "endpoint-start-NkPh": { - * "Type": "value", - * "Value": "10.0.0.2" + * \\"AWSPolicyFormatVersion\\": \\"2015-10-01\\", + * \\"RecordType\\": \\"A\\", + * \\"Endpoints\\": { + * \\"endpoint-start-NkPh\\": { + * \\"Type\\": \\"value\\", + * \\"Value\\": \\"10.0.0.2\\" * } * }, - * "StartEndpoint": "endpoint-start-NkPh" + * \\"StartEndpoint\\": \\"endpoint-start-NkPh\\" * } * `, * }); diff --git a/sdk/nodejs/s3/bucketWebsiteConfiguration.ts b/sdk/nodejs/s3/bucketWebsiteConfiguration.ts index ee8a1ffcb32..9ad8a1e39fc 100644 --- a/sdk/nodejs/s3/bucketWebsiteConfiguration.ts +++ b/sdk/nodejs/s3/bucketWebsiteConfiguration.ts @@ -54,11 +54,11 @@ import * as utilities from "../utilities"; * key: "error.html", * }, * routingRuleDetails: `[{ - * "Condition": { - * "KeyPrefixEquals": "docs/" + * \\"Condition\\": { + * \\"KeyPrefixEquals\\": \\"docs/\\" * }, - * "Redirect": { - * "ReplaceKeyPrefixWith": "" + * \\"Redirect\\": { + * \\"ReplaceKeyPrefixWith\\": \\"\\" * } * }] * `, diff --git a/sdk/nodejs/s3/bucketWebsiteConfigurationV2.ts b/sdk/nodejs/s3/bucketWebsiteConfigurationV2.ts index 49563168dda..296614da338 100644 --- a/sdk/nodejs/s3/bucketWebsiteConfigurationV2.ts +++ b/sdk/nodejs/s3/bucketWebsiteConfigurationV2.ts @@ -54,11 +54,11 @@ import * as utilities from "../utilities"; * key: "error.html", * }, * routingRuleDetails: `[{ - * "Condition": { - * "KeyPrefixEquals": "docs/" + * \\"Condition\\": { + * \\"KeyPrefixEquals\\": \\"docs/\\" * }, - * "Redirect": { - * "ReplaceKeyPrefixWith": "" + * \\"Redirect\\": { + * \\"ReplaceKeyPrefixWith\\": \\"\\" * } * }] * `, diff --git a/sdk/nodejs/s3control/accessGrantsInstanceResourcePolicy.ts b/sdk/nodejs/s3control/accessGrantsInstanceResourcePolicy.ts index d4cc200f391..5fd76e98207 100644 --- a/sdk/nodejs/s3control/accessGrantsInstanceResourcePolicy.ts +++ b/sdk/nodejs/s3control/accessGrantsInstanceResourcePolicy.ts @@ -16,20 +16,20 @@ import * as utilities from "../utilities"; * * const example = new aws.s3control.AccessGrantsInstance("example", {}); * const exampleAccessGrantsInstanceResourcePolicy = new aws.s3control.AccessGrantsInstanceResourcePolicy("example", {policy: pulumi.interpolate`{ - * "Version": "2012-10-17", - * "Id": "S3AccessGrantsPolicy", - * "Statement": [{ - * "Sid": "AllowAccessToS3AccessGrants", - * "Effect": "Allow", - * "Principal": { - * "AWS": "123456789456" + * \"Version\": \"2012-10-17\", + * \"Id\": \"S3AccessGrantsPolicy\", + * \"Statement\": [{ + * \"Sid\": \"AllowAccessToS3AccessGrants\", + * \"Effect\": \"Allow\", + * \"Principal\": { + * \"AWS\": \"123456789456\" * }, - * "Action": [ - * "s3:ListAccessGrants", - * "s3:ListAccessGrantsLocations", - * "s3:GetDataAccess" + * \"Action\": [ + * \"s3:ListAccessGrants\", + * \"s3:ListAccessGrantsLocations\", + * \"s3:GetDataAccess\" * ], - * "Resource": "${example.accessGrantsInstanceArn}" + * \"Resource\": \"${example.accessGrantsInstanceArn}\" * }] * } * `}); diff --git a/sdk/nodejs/sagemaker/flowDefinition.ts b/sdk/nodejs/sagemaker/flowDefinition.ts index 45e03faa1bd..06d69c8605c 100644 --- a/sdk/nodejs/sagemaker/flowDefinition.ts +++ b/sdk/nodejs/sagemaker/flowDefinition.ts @@ -87,15 +87,15 @@ import * as utilities from "../utilities"; * humanLoopActivationConfig: { * humanLoopActivationConditionsConfig: { * humanLoopActivationConditions: ` { - * \x09\x09\x09"Conditions": [ - * \x09\x09\x09 { - * \x09\x09\x09\x09"ConditionType": "Sampling", - * \x09\x09\x09\x09"ConditionParameters": { - * \x09\x09\x09\x09 "RandomSamplingPercentage": 5 - * \x09\x09\x09\x09} - * \x09\x09\x09 } - * \x09\x09\x09] - * \x09\x09} + * \\t\\t\\t\\"Conditions\\": [ + * \\t\\t\\t { + * \\t\\t\\t\\t\\"ConditionType\\": \\"Sampling\\", + * \\t\\t\\t\\t\\"ConditionParameters\\": { + * \\t\\t\\t\\t \\"RandomSamplingPercentage\\": 5 + * \\t\\t\\t\\t} + * \\t\\t\\t } + * \\t\\t\\t] + * \\t\\t} * `, * }, * }, diff --git a/sdk/nodejs/sagemaker/modelPackageGroupPolicy.ts b/sdk/nodejs/sagemaker/modelPackageGroupPolicy.ts index fad1662fff9..600425d3a71 100644 --- a/sdk/nodejs/sagemaker/modelPackageGroupPolicy.ts +++ b/sdk/nodejs/sagemaker/modelPackageGroupPolicy.ts @@ -9,6 +9,37 @@ import * as utilities from "../utilities"; * * ## Example Usage * + * ### Basic usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * const current = aws.getCallerIdentity({}); + * const exampleModelPackageGroup = new aws.sagemaker.ModelPackageGroup("example", {modelPackageGroupName: "example"}); + * const example = pulumi.all([exampleModelPackageGroup.arn, current]).apply(([arn, current]) => aws.iam.getPolicyDocumentOutput({ + * statements: [{ + * sid: "AddPermModelPackageGroup", + * actions: [ + * "sagemaker:DescribeModelPackage", + * "sagemaker:ListModelPackages", + * ], + * resources: [arn], + * principals: [{ + * identifiers: [current.accountId], + * type: "AWS", + * }], + * }], + * })); + * const exampleModelPackageGroupPolicy = new aws.sagemaker.ModelPackageGroupPolicy("example", { + * modelPackageGroupName: exampleModelPackageGroup.modelPackageGroupName, + * resourcePolicy: pulumi.jsonStringify(example.apply(example => std.jsondecodeOutput({ + * input: example.json, + * })).apply(invoke => invoke.result)), + * }); + * ``` + * * ## Import * * Using `pulumi import`, import SageMaker AI Model Package Groups using the `name`. For example: diff --git a/sdk/nodejs/secretsmanager/getSecretVersion.ts b/sdk/nodejs/secretsmanager/getSecretVersion.ts index f4e652741bd..901f00c3d5e 100644 --- a/sdk/nodejs/secretsmanager/getSecretVersion.ts +++ b/sdk/nodejs/secretsmanager/getSecretVersion.ts @@ -33,6 +33,19 @@ import * as utilities from "../utilities"; * versionStage: "example", * }); * ``` + * + * ### Handling Key-Value Secret Strings in JSON + * + * Reading key-value pairs from JSON back into a native map + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as std from "@pulumi/std"; + * + * export const example = std.jsondecode({ + * input: exampleAwsSecretsmanagerSecretVersion.secretString, + * }).then(invoke => invoke.result?.key1); + * ``` */ export function getSecretVersion(args: GetSecretVersionArgs, opts?: pulumi.InvokeOptions): Promise { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); @@ -128,6 +141,19 @@ export interface GetSecretVersionResult { * versionStage: "example", * }); * ``` + * + * ### Handling Key-Value Secret Strings in JSON + * + * Reading key-value pairs from JSON back into a native map + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as std from "@pulumi/std"; + * + * export const example = std.jsondecode({ + * input: exampleAwsSecretsmanagerSecretVersion.secretString, + * }).then(invoke => invoke.result?.key1); + * ``` */ export function getSecretVersionOutput(args: GetSecretVersionOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); diff --git a/sdk/nodejs/secretsmanager/secretVersion.ts b/sdk/nodejs/secretsmanager/secretVersion.ts index 8495fec145e..f89cef96156 100644 --- a/sdk/nodejs/secretsmanager/secretVersion.ts +++ b/sdk/nodejs/secretsmanager/secretVersion.ts @@ -43,6 +43,37 @@ import * as utilities from "../utilities"; * ``` * * Reading key-value pairs from JSON back into a native map + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as std from "@pulumi/std"; + * + * export const example = std.jsondecode({ + * input: exampleAwsSecretsmanagerSecretVersion.secretString, + * }).then(invoke => invoke.result?.key1); + * ``` + * + * ## Import + * + * ### Identity Schema + * + * #### Required + * + * * `secret_id` - (String) ID of the secret. + * + * * `version_id` - (String) ID of the secret version. + * + * #### Optional + * + * * `account_id` (String) AWS Account where this resource is managed. + * + * * `region` (String) Region where this resource is managed. + * + * Using `pulumi import`, import `aws_secretsmanager_secret_version` using the secret ID and version ID. For example: + * + * console + * + * % pulumi import aws_secretsmanager_secret_version.example 'arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456|xxxxx-xxxxxxx-xxxxxxx-xxxxx' */ export class SecretVersion extends pulumi.CustomResource { /** diff --git a/sdk/nodejs/securityhub/standardsControlAssociation.ts b/sdk/nodejs/securityhub/standardsControlAssociation.ts index aaba5a54c8f..fb79a549f6c 100644 --- a/sdk/nodejs/securityhub/standardsControlAssociation.ts +++ b/sdk/nodejs/securityhub/standardsControlAssociation.ts @@ -24,6 +24,32 @@ import * as utilities from "../utilities"; * updatedReason: "Not needed", * }); * ``` + * + * ## Disabling security control in all standards + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * import * as std from "@pulumi/std"; + * + * export = async () => { + * const example = new aws.securityhub.Account("example", {}); + * const iam1 = await aws.securityhub.getStandardsControlAssociations({ + * securityControlId: "IAM.1", + * }); + * const iam1StandardsControlAssociation: aws.securityhub.StandardsControlAssociation[] = []; + * for (const range of std.toset({ + * input: iam1.standardsControlAssociations.map(__item => __item.standardsArn), + * }).result.map((v, k) => ({key: k, value: v}))) { + * iam1StandardsControlAssociation.push(new aws.securityhub.StandardsControlAssociation(`iam_1-${range.key}`, { + * standardsArn: range.key, + * securityControlId: iam1.securityControlId, + * associationStatus: "DISABLED", + * updatedReason: "Not needed", + * })); + * } + * } + * ``` */ export class StandardsControlAssociation extends pulumi.CustomResource { /** diff --git a/sdk/nodejs/sesv2/emailIdentityPolicy.ts b/sdk/nodejs/sesv2/emailIdentityPolicy.ts index 77763237353..cf5a831e63e 100644 --- a/sdk/nodejs/sesv2/emailIdentityPolicy.ts +++ b/sdk/nodejs/sesv2/emailIdentityPolicy.ts @@ -20,22 +20,22 @@ import * as utilities from "../utilities"; * emailIdentity: example.emailIdentity, * policyName: "example", * policy: pulumi.interpolate`{ - * "Id":"ExampleAuthorizationPolicy", - * "Version":"2012-10-17", - * "Statement":[ + * \"Id\":\"ExampleAuthorizationPolicy\", + * \"Version\":\"2012-10-17\", + * \"Statement\":[ * { - * "Sid":"AuthorizeIAMUser", - * "Effect":"Allow", - * "Resource":"${example.arn}", - * "Principal":{ - * "AWS":[ - * "arn:aws:iam::123456789012:user/John", - * "arn:aws:iam::123456789012:user/Jane" + * \"Sid\":\"AuthorizeIAMUser\", + * \"Effect\":\"Allow\", + * \"Resource\":\"${example.arn}\", + * \"Principal\":{ + * \"AWS\":[ + * \"arn:aws:iam::123456789012:user/John\", + * \"arn:aws:iam::123456789012:user/Jane\" * ] * }, - * "Action":[ - * "ses:DeleteEmailIdentity", - * "ses:PutEmailIdentityDkimSigningAttributes" + * \"Action\":[ + * \"ses:DeleteEmailIdentity\", + * \"ses:PutEmailIdentityDkimSigningAttributes\" * ] * } * ] diff --git a/sdk/nodejs/sfn/stateMachine.ts b/sdk/nodejs/sfn/stateMachine.ts index f7f70b25609..59a9da39838 100644 --- a/sdk/nodejs/sfn/stateMachine.ts +++ b/sdk/nodejs/sfn/stateMachine.ts @@ -23,13 +23,13 @@ import * as utilities from "../utilities"; * name: "my-state-machine", * roleArn: iamForSfn.arn, * definition: `{ - * "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", - * "StartAt": "HelloWorld", - * "States": { - * "HelloWorld": { - * "Type": "Task", - * "Resource": "${lambda.arn}", - * "End": true + * \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\", + * \"StartAt\": \"HelloWorld\", + * \"States\": { + * \"HelloWorld\": { + * \"Type\": \"Task\", + * \"Resource\": \"${lambda.arn}\", + * \"End\": true * } * } * } @@ -49,13 +49,13 @@ import * as utilities from "../utilities"; * roleArn: iamForSfn.arn, * type: "EXPRESS", * definition: `{ - * "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", - * "StartAt": "HelloWorld", - * "States": { - * "HelloWorld": { - * "Type": "Task", - * "Resource": "${lambda.arn}", - * "End": true + * \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\", + * \"StartAt\": \"HelloWorld\", + * \"States\": { + * \"HelloWorld\": { + * \"Type\": \"Task\", + * \"Resource\": \"${lambda.arn}\", + * \"End\": true * } * } * } @@ -76,13 +76,13 @@ import * as utilities from "../utilities"; * publish: true, * type: "EXPRESS", * definition: `{ - * "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", - * "StartAt": "HelloWorld", - * "States": { - * "HelloWorld": { - * "Type": "Task", - * "Resource": "${lambda.arn}", - * "End": true + * \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\", + * \"StartAt\": \"HelloWorld\", + * \"States\": { + * \"HelloWorld\": { + * \"Type\": \"Task\", + * \"Resource\": \"${lambda.arn}\", + * \"End\": true * } * } * } @@ -103,13 +103,13 @@ import * as utilities from "../utilities"; * name: "my-state-machine", * roleArn: iamForSfn.arn, * definition: `{ - * "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", - * "StartAt": "HelloWorld", - * "States": { - * "HelloWorld": { - * "Type": "Task", - * "Resource": "${lambda.arn}", - * "End": true + * \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\", + * \"StartAt\": \"HelloWorld\", + * \"States\": { + * \"HelloWorld\": { + * \"Type\": \"Task\", + * \"Resource\": \"${lambda.arn}\", + * \"End\": true * } * } * } @@ -135,13 +135,13 @@ import * as utilities from "../utilities"; * name: "my-state-machine", * roleArn: iamForSfn.arn, * definition: `{ - * "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", - * "StartAt": "HelloWorld", - * "States": { - * "HelloWorld": { - * "Type": "Task", - * "Resource": "${lambda.arn}", - * "End": true + * \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Function\", + * \"StartAt\": \"HelloWorld\", + * \"States\": { + * \"HelloWorld\": { + * \"Type\": \"Task\", + * \"Resource\": \"${lambda.arn}\", + * \"End\": true * } * } * } diff --git a/sdk/nodejs/sns/topic.ts b/sdk/nodejs/sns/topic.ts index 062c68eb08d..b7de9192abf 100644 --- a/sdk/nodejs/sns/topic.ts +++ b/sdk/nodejs/sns/topic.ts @@ -25,19 +25,19 @@ import * as utilities from "../utilities"; * const userUpdates = new aws.sns.Topic("user_updates", { * name: "user-updates-topic", * deliveryPolicy: `{ - * "http": { - * "defaultHealthyRetryPolicy": { - * "minDelayTarget": 20, - * "maxDelayTarget": 20, - * "numRetries": 3, - * "numMaxDelayRetries": 0, - * "numNoDelayRetries": 0, - * "numMinDelayRetries": 0, - * "backoffFunction": "linear" + * \\"http\\": { + * \\"defaultHealthyRetryPolicy\\": { + * \\"minDelayTarget\\": 20, + * \\"maxDelayTarget\\": 20, + * \\"numRetries\\": 3, + * \\"numMaxDelayRetries\\": 0, + * \\"numNoDelayRetries\\": 0, + * \\"numMinDelayRetries\\": 0, + * \\"backoffFunction\\": \\"linear\\" * }, - * "disableSubscriptionOverrides": false, - * "defaultThrottlePolicy": { - * "maxReceivesPerSecond": 1 + * \\"disableSubscriptionOverrides\\": false, + * \\"defaultThrottlePolicy\\": { + * \\"maxReceivesPerSecond\\": 1 * } * } * } diff --git a/sdk/nodejs/sns/topicSubscription.ts b/sdk/nodejs/sns/topicSubscription.ts index 944278ffd21..af51968ce64 100644 --- a/sdk/nodejs/sns/topicSubscription.ts +++ b/sdk/nodejs/sns/topicSubscription.ts @@ -174,21 +174,21 @@ import {Topic} from "./index"; * endpoint: "https://example.com/endpoint", * rawMessageDelivery: true, * deliveryPolicy: `{ - * "healthyRetryPolicy": { - * "minDelayTarget": 20, - * "maxDelayTarget": 20, - * "numRetries": 3, - * "numMaxDelayRetries": 0, - * "numNoDelayRetries": 0, - * "numMinDelayRetries": 0, - * "backoffFunction": "linear" + * \\"healthyRetryPolicy\\": { + * \\"minDelayTarget\\": 20, + * \\"maxDelayTarget\\": 20, + * \\"numRetries\\": 3, + * \\"numMaxDelayRetries\\": 0, + * \\"numNoDelayRetries\\": 0, + * \\"numMinDelayRetries\\": 0, + * \\"backoffFunction\\": \\"linear\\" * }, - * "sicklyRetryPolicy": null, - * "throttlePolicy": null, - * "requestPolicy": { - * "headerContentType": "text/plain; application/json" + * \\"sicklyRetryPolicy\\": null, + * \\"throttlePolicy\\": null, + * \\"requestPolicy\\": { + * \\"headerContentType\\": \\"text/plain; application/json\\" * }, - * "guaranteed": false + * \\"guaranteed\\": false * } * `, * }); diff --git a/sdk/nodejs/ssm/association.ts b/sdk/nodejs/ssm/association.ts index 0a11ab08feb..406efaddb01 100644 --- a/sdk/nodejs/ssm/association.ts +++ b/sdk/nodejs/ssm/association.ts @@ -194,7 +194,7 @@ import * as utilities from "../utilities"; * yum install -y httpd * systemctl enable httpd * systemctl start httpd - * echo "

Web Server - ${prefix}

" > /var/www/html/index.html + * echo \"

Web Server - ${prefix}

\" > /var/www/html/index.html * `, * }).then(invoke => invoke.result), * tags: { diff --git a/sdk/nodejs/ssm/document.ts b/sdk/nodejs/ssm/document.ts index cef5ec2fadb..1c7b91498d1 100644 --- a/sdk/nodejs/ssm/document.ts +++ b/sdk/nodejs/ssm/document.ts @@ -25,17 +25,17 @@ import * as utilities from "../utilities"; * name: "test_document", * documentType: "Command", * content: ` { - * "schemaVersion": "1.2", - * "description": "Check ip configuration of a Linux instance.", - * "parameters": { + * \\"schemaVersion\\": \\"1.2\\", + * \\"description\\": \\"Check ip configuration of a Linux instance.\\", + * \\"parameters\\": { * * }, - * "runtimeConfig": { - * "aws:runShellScript": { - * "properties": [ + * \\"runtimeConfig\\": { + * \\"aws:runShellScript\\": { + * \\"properties\\": [ * { - * "id": "0.aws:runShellScript", - * "runCommand": ["ifconfig"] + * \\"id\\": \\"0.aws:runShellScript\\", + * \\"runCommand\\": [\\"ifconfig\\"] * } * ] * } diff --git a/sdk/nodejs/timestreamquery/scheduledQuery.ts b/sdk/nodejs/timestreamquery/scheduledQuery.ts index 33e14aa641b..60037d40a3e 100644 --- a/sdk/nodejs/timestreamquery/scheduledQuery.ts +++ b/sdk/nodejs/timestreamquery/scheduledQuery.ts @@ -26,10 +26,10 @@ import * as utilities from "../utilities"; * executionRoleArn: exampleAwsIamRole.arn, * name: exampleAwsTimestreamwriteTable.tableName, * queryString: `SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp, - * \x09ROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, - * \x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, - * \x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, - * \x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization + * \\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, + * \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, + * \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, + * \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization * FROM exampledatabase.exampletable * WHERE measure_name = 'metrics' AND time > ago(2h) * GROUP BY region, hostname, az, BIN(time, 15s) @@ -217,10 +217,10 @@ import * as utilities from "../utilities"; * executionRoleArn: exampleAwsIamRole.arn, * name: exampleAwsTimestreamwriteTable.tableName, * queryString: `SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp, - * \x09ROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, - * \x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, - * \x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, - * \x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization + * \\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, + * \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, + * \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, + * \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization * FROM exampledatabase.exampletable * WHERE measure_name = 'metrics' AND time > ago(2h) * GROUP BY region, hostname, az, BIN(time, 15s) diff --git a/sdk/nodejs/transfer/sshKey.ts b/sdk/nodejs/transfer/sshKey.ts index ed3f4eb7841..b41931a9c82 100644 --- a/sdk/nodejs/transfer/sshKey.ts +++ b/sdk/nodejs/transfer/sshKey.ts @@ -15,7 +15,7 @@ import * as utilities from "../utilities"; * import * as std from "@pulumi/std"; * import * as tls from "@pulumi/tls"; * - * const examplePrivateKey = new tls.index.PrivateKey("example", { + * const examplePrivateKey = new tls.PrivateKey("example", { * algorithm: "RSA", * rsaBits: 4096, * }); @@ -50,9 +50,9 @@ import * as utilities from "../utilities"; * const exampleSshKey = new aws.transfer.SshKey("example", { * serverId: exampleServer.id, * userName: exampleUser.userName, - * body: std.trimspace({ + * body: std.trimspaceOutput({ * input: examplePrivateKey.publicKeyOpenssh, - * }).then(invoke => invoke.result), + * }).apply(invoke => invoke.result), * }); * const example = aws.iam.getPolicyDocument({ * statements: [{ diff --git a/sdk/python/pulumi_aws/acm/certificate.py b/sdk/python/pulumi_aws/acm/certificate.py index 04c85dd1989..1154a470500 100644 --- a/sdk/python/pulumi_aws/acm/certificate.py +++ b/sdk/python/pulumi_aws/acm/certificate.py @@ -632,30 +632,6 @@ def __init__(__self__, ### Existing Certificate Body Import - ```python - import pulumi - import pulumi_aws as aws - import pulumi_tls as tls - - example = tls.index.PrivateKey("example", algorithm=RSA) - example_self_signed_cert = tls.index.SelfSignedCert("example", - key_algorithm=RSA, - private_key_pem=example.private_key_pem, - subject=[{ - commonName: example.com, - organization: ACME Examples, Inc, - }], - validity_period_hours=12, - allowed_uses=[ - key_encipherment, - digital_signature, - server_auth, - ]) - cert = aws.acm.Certificate("cert", - private_key=example["privateKeyPem"], - certificate_body=example_self_signed_cert["certPem"]) - ``` - ### Referencing domain_validation_options With for_each Based Resources See the `acm.CertificateValidation` resource for a full example of performing DNS validation. @@ -764,30 +740,6 @@ def __init__(__self__, ### Existing Certificate Body Import - ```python - import pulumi - import pulumi_aws as aws - import pulumi_tls as tls - - example = tls.index.PrivateKey("example", algorithm=RSA) - example_self_signed_cert = tls.index.SelfSignedCert("example", - key_algorithm=RSA, - private_key_pem=example.private_key_pem, - subject=[{ - commonName: example.com, - organization: ACME Examples, Inc, - }], - validity_period_hours=12, - allowed_uses=[ - key_encipherment, - digital_signature, - server_auth, - ]) - cert = aws.acm.Certificate("cert", - private_key=example["privateKeyPem"], - certificate_body=example_self_signed_cert["certPem"]) - ``` - ### Referencing domain_validation_options With for_each Based Resources See the `acm.CertificateValidation` resource for a full example of performing DNS validation. diff --git a/sdk/python/pulumi_aws/acmpca/certificate.py b/sdk/python/pulumi_aws/acmpca/certificate.py index 8439fa9e4d1..f220799406d 100644 --- a/sdk/python/pulumi_aws/acmpca/certificate.py +++ b/sdk/python/pulumi_aws/acmpca/certificate.py @@ -332,36 +332,6 @@ def __init__(__self__, ### Basic - ```python - import pulumi - import pulumi_aws as aws - import pulumi_tls as tls - - example_certificate_authority = aws.acmpca.CertificateAuthority("example", - certificate_authority_configuration={ - "key_algorithm": "RSA_4096", - "signing_algorithm": "SHA512WITHRSA", - "subject": { - "common_name": "example.com", - }, - }, - permanent_deletion_time_in_days=7) - key = tls.index.PrivateKey("key", algorithm=RSA) - csr = tls.index.CertRequest("csr", - private_key_pem=key.private_key_pem, - subject=[{ - commonName: example, - }]) - example = aws.acmpca.Certificate("example", - certificate_authority_arn=example_certificate_authority.arn, - certificate_signing_request=csr["certRequestPem"], - signing_algorithm="SHA256WITHRSA", - validity={ - "type": "YEARS", - "value": "1", - }) - ``` - ## Import ### Identity Schema @@ -405,36 +375,6 @@ def __init__(__self__, ### Basic - ```python - import pulumi - import pulumi_aws as aws - import pulumi_tls as tls - - example_certificate_authority = aws.acmpca.CertificateAuthority("example", - certificate_authority_configuration={ - "key_algorithm": "RSA_4096", - "signing_algorithm": "SHA512WITHRSA", - "subject": { - "common_name": "example.com", - }, - }, - permanent_deletion_time_in_days=7) - key = tls.index.PrivateKey("key", algorithm=RSA) - csr = tls.index.CertRequest("csr", - private_key_pem=key.private_key_pem, - subject=[{ - commonName: example, - }]) - example = aws.acmpca.Certificate("example", - certificate_authority_arn=example_certificate_authority.arn, - certificate_signing_request=csr["certRequestPem"], - signing_algorithm="SHA256WITHRSA", - validity={ - "type": "YEARS", - "value": "1", - }) - ``` - ## Import ### Identity Schema diff --git a/sdk/python/pulumi_aws/amplify/app.py b/sdk/python/pulumi_aws/amplify/app.py index 76bcb8cad1c..b8fbf769151 100644 --- a/sdk/python/pulumi_aws/amplify/app.py +++ b/sdk/python/pulumi_aws/amplify/app.py @@ -1007,7 +1007,7 @@ def __init__(__self__, - key: 'X-Content-Type-Options' value: 'nosniff' - key: 'Content-Security-Policy' - value: "default-src 'self'" + value: \\"default-src 'self'\\" \"\"\") ``` @@ -1208,7 +1208,7 @@ def __init__(__self__, - key: 'X-Content-Type-Options' value: 'nosniff' - key: 'Content-Security-Policy' - value: "default-src 'self'" + value: \\"default-src 'self'\\" \"\"\") ``` diff --git a/sdk/python/pulumi_aws/apigateway/integration.py b/sdk/python/pulumi_aws/apigateway/integration.py index 715ae1baacd..5f12bf44043 100644 --- a/sdk/python/pulumi_aws/apigateway/integration.py +++ b/sdk/python/pulumi_aws/apigateway/integration.py @@ -697,7 +697,7 @@ def __init__(__self__, }, request_templates={ "application/xml": \"\"\"{ - "body" : $input.json('$') + \\"body\\" : $input.json('$') } \"\"\", }) @@ -893,7 +893,7 @@ def __init__(__self__, }, request_templates={ "application/xml": \"\"\"{ - "body" : $input.json('$') + \\"body\\" : $input.json('$') } \"\"\", }) diff --git a/sdk/python/pulumi_aws/apigateway/integration_response.py b/sdk/python/pulumi_aws/apigateway/integration_response.py index fc52949eeee..03ada639a71 100644 --- a/sdk/python/pulumi_aws/apigateway/integration_response.py +++ b/sdk/python/pulumi_aws/apigateway/integration_response.py @@ -381,7 +381,7 @@ def __init__(__self__, status_code=response200.status_code, response_templates={ "application/xml": \"\"\"#set($inputRoot = $input.path('$')) - + $inputRoot.body @@ -458,7 +458,7 @@ def __init__(__self__, status_code=response200.status_code, response_templates={ "application/xml": \"\"\"#set($inputRoot = $input.path('$')) - + $inputRoot.body diff --git a/sdk/python/pulumi_aws/appsync/function.py b/sdk/python/pulumi_aws/appsync/function.py index 320f1e6a830..4f902705ee4 100644 --- a/sdk/python/pulumi_aws/appsync/function.py +++ b/sdk/python/pulumi_aws/appsync/function.py @@ -509,11 +509,11 @@ def __init__(__self__, data_source=example_data_source.name, name="example", request_mapping_template=\"\"\"{ - "version": "2018-05-29", - "method": "GET", - "resourcePath": "/", - "params":{ - "headers": $utils.http.copyheaders($ctx.request.headers) + \\"version\\": \\"2018-05-29\\", + \\"method\\": \\"GET\\", + \\"resourcePath\\": \\"/\\", + \\"params\\":{ + \\"headers\\": $utils.http.copyheaders($ctx.request.headers) } } \"\"\", @@ -614,11 +614,11 @@ def __init__(__self__, data_source=example_data_source.name, name="example", request_mapping_template=\"\"\"{ - "version": "2018-05-29", - "method": "GET", - "resourcePath": "/", - "params":{ - "headers": $utils.http.copyheaders($ctx.request.headers) + \\"version\\": \\"2018-05-29\\", + \\"method\\": \\"GET\\", + \\"resourcePath\\": \\"/\\", + \\"params\\":{ + \\"headers\\": $utils.http.copyheaders($ctx.request.headers) } } \"\"\", diff --git a/sdk/python/pulumi_aws/appsync/graph_ql_api.py b/sdk/python/pulumi_aws/appsync/graph_ql_api.py index 8e118a288db..d4bc26a6cac 100644 --- a/sdk/python/pulumi_aws/appsync/graph_ql_api.py +++ b/sdk/python/pulumi_aws/appsync/graph_ql_api.py @@ -799,7 +799,7 @@ def __init__(__self__, authentication_type="AWS_IAM", name="example", schema=\"\"\"schema { - \\x09query: Query + \\tquery: Query } type Query { test: Int @@ -989,7 +989,7 @@ def __init__(__self__, authentication_type="AWS_IAM", name="example", schema=\"\"\"schema { - \\x09query: Query + \\tquery: Query } type Query { test: Int diff --git a/sdk/python/pulumi_aws/appsync/resolver.py b/sdk/python/pulumi_aws/appsync/resolver.py index ac676f0f26f..fb7d6fdea3f 100644 --- a/sdk/python/pulumi_aws/appsync/resolver.py +++ b/sdk/python/pulumi_aws/appsync/resolver.py @@ -529,21 +529,21 @@ def __init__(__self__, authentication_type="API_KEY", name="tf-example", schema=\"\"\"type Mutation { - \\x09putPost(id: ID!, title: String!): Post + \\tputPost(id: ID!, title: String!): Post } type Post { - \\x09id: ID! - \\x09title: String! + \\tid: ID! + \\ttitle: String! } type Query { - \\x09singlePost(id: ID!): Post + \\tsinglePost(id: ID!): Post } schema { - \\x09query: Query - \\x09mutation: Mutation + \\tquery: Query + \\tmutation: Mutation } \"\"\") test_data_source = aws.appsync.DataSource("test", @@ -560,11 +560,11 @@ def __init__(__self__, type="Query", data_source=test_data_source.name, request_template=\"\"\"{ - "version": "2018-05-29", - "method": "GET", - "resourcePath": "/", - "params":{ - "headers": $utils.http.copyheaders($ctx.request.headers) + \\"version\\": \\"2018-05-29\\", + \\"method\\": \\"GET\\", + \\"resourcePath\\": \\"/\\", + \\"params\\":{ + \\"headers\\": $utils.http.copyheaders($ctx.request.headers) } } \"\"\", @@ -664,21 +664,21 @@ def __init__(__self__, authentication_type="API_KEY", name="tf-example", schema=\"\"\"type Mutation { - \\x09putPost(id: ID!, title: String!): Post + \\tputPost(id: ID!, title: String!): Post } type Post { - \\x09id: ID! - \\x09title: String! + \\tid: ID! + \\ttitle: String! } type Query { - \\x09singlePost(id: ID!): Post + \\tsinglePost(id: ID!): Post } schema { - \\x09query: Query - \\x09mutation: Mutation + \\tquery: Query + \\tmutation: Mutation } \"\"\") test_data_source = aws.appsync.DataSource("test", @@ -695,11 +695,11 @@ def __init__(__self__, type="Query", data_source=test_data_source.name, request_template=\"\"\"{ - "version": "2018-05-29", - "method": "GET", - "resourcePath": "/", - "params":{ - "headers": $utils.http.copyheaders($ctx.request.headers) + \\"version\\": \\"2018-05-29\\", + \\"method\\": \\"GET\\", + \\"resourcePath\\": \\"/\\", + \\"params\\":{ + \\"headers\\": $utils.http.copyheaders($ctx.request.headers) } } \"\"\", diff --git a/sdk/python/pulumi_aws/autoscaling/tag.py b/sdk/python/pulumi_aws/autoscaling/tag.py index 13c6b938d48..bd18e1f7116 100644 --- a/sdk/python/pulumi_aws/autoscaling/tag.py +++ b/sdk/python/pulumi_aws/autoscaling/tag.py @@ -145,6 +145,30 @@ def __init__(__self__, > **NOTE:** This tagging resource does not use the provider `ignore_tags` configuration. + ## Example Usage + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + example = aws.eks.NodeGroup("example", + cluster_name="example", + node_group_name="example") + example_tag = [] + def create_example(range_body): + for range in [{"key": k, "value": v} for [k, v] in enumerate(range_body)]: + example_tag.append(aws.autoscaling.Tag(f"example-{range['key']}", + autoscaling_group_name=range["value"], + tag={ + "key": "k8s.io/cluster-autoscaler/node-template/label/eks.amazonaws.com/capacityType", + "value": "SPOT", + "propagate_at_launch": False, + })) + + std.toset_output(input=std.flatten_output(input=example.resources.apply(lambda resources: [resources.autoscaling_groups for resources in resources])).apply(lambda invoke: [asg["name"] for asg in invoke.result])).apply(lambda resolved_outputs: create_example(resolved_outputs['invoke'].result)) + ``` + ## Import Using `pulumi import`, import `aws_autoscaling_group_tag` using the ASG name and key, separated by a comma (`,`). For example: @@ -172,6 +196,30 @@ def __init__(__self__, > **NOTE:** This tagging resource does not use the provider `ignore_tags` configuration. + ## Example Usage + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + example = aws.eks.NodeGroup("example", + cluster_name="example", + node_group_name="example") + example_tag = [] + def create_example(range_body): + for range in [{"key": k, "value": v} for [k, v] in enumerate(range_body)]: + example_tag.append(aws.autoscaling.Tag(f"example-{range['key']}", + autoscaling_group_name=range["value"], + tag={ + "key": "k8s.io/cluster-autoscaler/node-template/label/eks.amazonaws.com/capacityType", + "value": "SPOT", + "propagate_at_launch": False, + })) + + std.toset_output(input=std.flatten_output(input=example.resources.apply(lambda resources: [resources.autoscaling_groups for resources in resources])).apply(lambda invoke: [asg["name"] for asg in invoke.result])).apply(lambda resolved_outputs: create_example(resolved_outputs['invoke'].result)) + ``` + ## Import Using `pulumi import`, import `aws_autoscaling_group_tag` using the ASG name and key, separated by a comma (`,`). For example: diff --git a/sdk/python/pulumi_aws/autoscalingplans/scaling_plan.py b/sdk/python/pulumi_aws/autoscalingplans/scaling_plan.py index d70b0ab0d63..84129ac29ea 100644 --- a/sdk/python/pulumi_aws/autoscalingplans/scaling_plan.py +++ b/sdk/python/pulumi_aws/autoscalingplans/scaling_plan.py @@ -197,6 +197,98 @@ def __init__(__self__, ## Example Usage + ### Basic Dynamic Scaling + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + available = aws.get_availability_zones() + example = aws.autoscaling.Group("example", + name_prefix="example", + launch_configuration=example_aws_launch_configuration["name"], + availability_zones=[available.names[0]], + min_size=0, + max_size=3, + tags=[{ + "key": "application", + "value": "example", + "propagate_at_launch": True, + }]) + example_scaling_plan = aws.autoscalingplans.ScalingPlan("example", + name="example-dynamic-cost-optimization", + application_source={ + "tag_filters": [{ + "key": "application", + "values": ["example"], + }], + }, + scaling_instructions=[{ + "max_capacity": 3, + "min_capacity": 0, + "resource_id": std.format(input="autoScalingGroup/%s", + args=[example.name]).result, + "scalable_dimension": "autoscaling:autoScalingGroup:DesiredCapacity", + "service_namespace": "autoscaling", + "target_tracking_configurations": [{ + "predefined_scaling_metric_specification": { + "predefined_scaling_metric_type": "ASGAverageCPUUtilization", + }, + "target_value": 70, + }], + }]) + ``` + + ### Basic Predictive Scaling + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + available = aws.get_availability_zones() + example = aws.autoscaling.Group("example", + name_prefix="example", + launch_configuration=example_aws_launch_configuration["name"], + availability_zones=[available.names[0]], + min_size=0, + max_size=3, + tags=[{ + "key": "application", + "value": "example", + "propagate_at_launch": True, + }]) + example_scaling_plan = aws.autoscalingplans.ScalingPlan("example", + name="example-predictive-cost-optimization", + application_source={ + "tag_filters": [{ + "key": "application", + "values": ["example"], + }], + }, + scaling_instructions=[{ + "disable_dynamic_scaling": True, + "max_capacity": 3, + "min_capacity": 0, + "resource_id": std.format(input="autoScalingGroup/%s", + args=[example.name]).result, + "scalable_dimension": "autoscaling:autoScalingGroup:DesiredCapacity", + "service_namespace": "autoscaling", + "target_tracking_configurations": [{ + "predefined_scaling_metric_specification": { + "predefined_scaling_metric_type": "ASGAverageCPUUtilization", + }, + "target_value": 70, + }], + "predictive_scaling_max_capacity_behavior": "SetForecastCapacityToMaxCapacity", + "predictive_scaling_mode": "ForecastAndScale", + "predefined_load_metric_specification": { + "predefined_load_metric_type": "ASGTotalCPUUtilization", + }, + }]) + ``` + ## Import Using `pulumi import`, import Auto Scaling scaling plans using the `name`. For example: @@ -228,6 +320,98 @@ def __init__(__self__, ## Example Usage + ### Basic Dynamic Scaling + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + available = aws.get_availability_zones() + example = aws.autoscaling.Group("example", + name_prefix="example", + launch_configuration=example_aws_launch_configuration["name"], + availability_zones=[available.names[0]], + min_size=0, + max_size=3, + tags=[{ + "key": "application", + "value": "example", + "propagate_at_launch": True, + }]) + example_scaling_plan = aws.autoscalingplans.ScalingPlan("example", + name="example-dynamic-cost-optimization", + application_source={ + "tag_filters": [{ + "key": "application", + "values": ["example"], + }], + }, + scaling_instructions=[{ + "max_capacity": 3, + "min_capacity": 0, + "resource_id": std.format(input="autoScalingGroup/%s", + args=[example.name]).result, + "scalable_dimension": "autoscaling:autoScalingGroup:DesiredCapacity", + "service_namespace": "autoscaling", + "target_tracking_configurations": [{ + "predefined_scaling_metric_specification": { + "predefined_scaling_metric_type": "ASGAverageCPUUtilization", + }, + "target_value": 70, + }], + }]) + ``` + + ### Basic Predictive Scaling + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + available = aws.get_availability_zones() + example = aws.autoscaling.Group("example", + name_prefix="example", + launch_configuration=example_aws_launch_configuration["name"], + availability_zones=[available.names[0]], + min_size=0, + max_size=3, + tags=[{ + "key": "application", + "value": "example", + "propagate_at_launch": True, + }]) + example_scaling_plan = aws.autoscalingplans.ScalingPlan("example", + name="example-predictive-cost-optimization", + application_source={ + "tag_filters": [{ + "key": "application", + "values": ["example"], + }], + }, + scaling_instructions=[{ + "disable_dynamic_scaling": True, + "max_capacity": 3, + "min_capacity": 0, + "resource_id": std.format(input="autoScalingGroup/%s", + args=[example.name]).result, + "scalable_dimension": "autoscaling:autoScalingGroup:DesiredCapacity", + "service_namespace": "autoscaling", + "target_tracking_configurations": [{ + "predefined_scaling_metric_specification": { + "predefined_scaling_metric_type": "ASGAverageCPUUtilization", + }, + "target_value": 70, + }], + "predictive_scaling_max_capacity_behavior": "SetForecastCapacityToMaxCapacity", + "predictive_scaling_mode": "ForecastAndScale", + "predefined_load_metric_specification": { + "predefined_load_metric_type": "ASGTotalCPUUtilization", + }, + }]) + ``` + ## Import Using `pulumi import`, import Auto Scaling scaling plans using the `name`. For example: diff --git a/sdk/python/pulumi_aws/bedrockmodel/invocation_logging_configuration.py b/sdk/python/pulumi_aws/bedrockmodel/invocation_logging_configuration.py index 32929b32149..98436409b99 100644 --- a/sdk/python/pulumi_aws/bedrockmodel/invocation_logging_configuration.py +++ b/sdk/python/pulumi_aws/bedrockmodel/invocation_logging_configuration.py @@ -127,25 +127,25 @@ def __init__(__self__, example_bucket_policy = aws.s3.BucketPolicy("example", bucket=example.bucket, policy=example.arn.apply(lambda arn: f\"\"\"{{ - "Version": "2012-10-17", - "Statement": [ + \\"Version\\": \\"2012-10-17\\", + \\"Statement\\": [ {{ - "Effect": "Allow", - "Principal": {{ - "Service": "bedrock.amazonaws.com" + \\"Effect\\": \\"Allow\\", + \\"Principal\\": {{ + \\"Service\\": \\"bedrock.amazonaws.com\\" }}, - "Action": [ - "s3:*" + \\"Action\\": [ + \\"s3:*\\" ], - "Resource": [ - "{arn}/*" + \\"Resource\\": [ + \\"{arn}/*\\" ], - "Condition": {{ - "StringEquals": {{ - "aws:SourceAccount": "{current.account_id}" + \\"Condition\\": {{ + \\"StringEquals\\": {{ + \\"aws:SourceAccount\\": \\"{current.account_id}\\" }}, - "ArnLike": {{ - "aws:SourceArn": "arn:aws:bedrock:us-east-1:{current.account_id}:*" + \\"ArnLike\\": {{ + \\"aws:SourceArn\\": \\"arn:aws:bedrock:us-east-1:{current.account_id}:*\\" }} }} }} @@ -204,25 +204,25 @@ def __init__(__self__, example_bucket_policy = aws.s3.BucketPolicy("example", bucket=example.bucket, policy=example.arn.apply(lambda arn: f\"\"\"{{ - "Version": "2012-10-17", - "Statement": [ + \\"Version\\": \\"2012-10-17\\", + \\"Statement\\": [ {{ - "Effect": "Allow", - "Principal": {{ - "Service": "bedrock.amazonaws.com" + \\"Effect\\": \\"Allow\\", + \\"Principal\\": {{ + \\"Service\\": \\"bedrock.amazonaws.com\\" }}, - "Action": [ - "s3:*" + \\"Action\\": [ + \\"s3:*\\" ], - "Resource": [ - "{arn}/*" + \\"Resource\\": [ + \\"{arn}/*\\" ], - "Condition": {{ - "StringEquals": {{ - "aws:SourceAccount": "{current.account_id}" + \\"Condition\\": {{ + \\"StringEquals\\": {{ + \\"aws:SourceAccount\\": \\"{current.account_id}\\" }}, - "ArnLike": {{ - "aws:SourceArn": "arn:aws:bedrock:us-east-1:{current.account_id}:*" + \\"ArnLike\\": {{ + \\"aws:SourceArn\\": \\"arn:aws:bedrock:us-east-1:{current.account_id}:*\\" }} }} }} diff --git a/sdk/python/pulumi_aws/cfg/organization_custom_policy_rule.py b/sdk/python/pulumi_aws/cfg/organization_custom_policy_rule.py index 37755447a18..845dbbf5d61 100644 --- a/sdk/python/pulumi_aws/cfg/organization_custom_policy_rule.py +++ b/sdk/python/pulumi_aws/cfg/organization_custom_policy_rule.py @@ -541,15 +541,15 @@ def __init__(__self__, policy_text=\"\"\"let status = ['ACTIVE'] rule tableisactive when - resourceType == "AWS::DynamoDB::Table" { + resourceType == \\"AWS::DynamoDB::Table\\" { configuration.tableStatus == %status } rule checkcompliance when - resourceType == "AWS::DynamoDB::Table" + resourceType == \\"AWS::DynamoDB::Table\\" tableisactive { let pitr = supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus - %pitr == "ENABLED" + %pitr == \\"ENABLED\\" } \"\"\", resource_types_scopes=["AWS::DynamoDB::Table"]) @@ -607,15 +607,15 @@ def __init__(__self__, policy_text=\"\"\"let status = ['ACTIVE'] rule tableisactive when - resourceType == "AWS::DynamoDB::Table" { + resourceType == \\"AWS::DynamoDB::Table\\" { configuration.tableStatus == %status } rule checkcompliance when - resourceType == "AWS::DynamoDB::Table" + resourceType == \\"AWS::DynamoDB::Table\\" tableisactive { let pitr = supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus - %pitr == "ENABLED" + %pitr == \\"ENABLED\\" } \"\"\", resource_types_scopes=["AWS::DynamoDB::Table"]) diff --git a/sdk/python/pulumi_aws/cfg/rule.py b/sdk/python/pulumi_aws/cfg/rule.py index 3f28a86801c..15c32cc2866 100644 --- a/sdk/python/pulumi_aws/cfg/rule.py +++ b/sdk/python/pulumi_aws/cfg/rule.py @@ -472,16 +472,16 @@ def __init__(__self__, }], "custom_policy_details": { "policy_runtime": "guard-2.x.x", - "policy_text": \"\"\"\\x09 rule tableisactive when - \\x09\\x09 resourceType == "AWS::DynamoDB::Table" { - \\x09\\x09 configuration.tableStatus == ['ACTIVE'] - \\x09 } - \\x09 - \\x09 rule checkcompliance when - \\x09\\x09 resourceType == "AWS::DynamoDB::Table" - \\x09\\x09 tableisactive { - \\x09\\x09\\x09 supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == "ENABLED" - \\x09 } + "policy_text": \"\"\"\\t rule tableisactive when + \\t\\t resourceType == \\"AWS::DynamoDB::Table\\" { + \\t\\t configuration.tableStatus == ['ACTIVE'] + \\t } + \\t + \\t rule checkcompliance when + \\t\\t resourceType == \\"AWS::DynamoDB::Table\\" + \\t\\t tableisactive { + \\t\\t\\t supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == \\"ENABLED\\" + \\t } \"\"\", }, }) @@ -600,16 +600,16 @@ def __init__(__self__, }], "custom_policy_details": { "policy_runtime": "guard-2.x.x", - "policy_text": \"\"\"\\x09 rule tableisactive when - \\x09\\x09 resourceType == "AWS::DynamoDB::Table" { - \\x09\\x09 configuration.tableStatus == ['ACTIVE'] - \\x09 } - \\x09 - \\x09 rule checkcompliance when - \\x09\\x09 resourceType == "AWS::DynamoDB::Table" - \\x09\\x09 tableisactive { - \\x09\\x09\\x09 supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == "ENABLED" - \\x09 } + "policy_text": \"\"\"\\t rule tableisactive when + \\t\\t resourceType == \\"AWS::DynamoDB::Table\\" { + \\t\\t configuration.tableStatus == ['ACTIVE'] + \\t } + \\t + \\t rule checkcompliance when + \\t\\t resourceType == \\"AWS::DynamoDB::Table\\" + \\t\\t tableisactive { + \\t\\t\\t supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus == \\"ENABLED\\" + \\t } \"\"\", }, }) diff --git a/sdk/python/pulumi_aws/cloudwatch/event_target.py b/sdk/python/pulumi_aws/cloudwatch/event_target.py index 7bbe5885f57..6dca86d86c5 100644 --- a/sdk/python/pulumi_aws/cloudwatch/event_target.py +++ b/sdk/python/pulumi_aws/cloudwatch/event_target.py @@ -1024,8 +1024,8 @@ def __init__(__self__, "status": "$.detail.status", }, "input_template": \"\"\"{ - "instance_id": , - "instance_status": + \\"instance_id\\": , + \\"instance_status\\": } \"\"\", }) @@ -1164,7 +1164,7 @@ def __init__(__self__, "input": "$.detail.input", }, "input_template": \"\"\" { - "input": + \\"input\\": } \"\"\", }, @@ -1521,8 +1521,8 @@ def __init__(__self__, "status": "$.detail.status", }, "input_template": \"\"\"{ - "instance_id": , - "instance_status": + \\"instance_id\\": , + \\"instance_status\\": } \"\"\", }) @@ -1661,7 +1661,7 @@ def __init__(__self__, "input": "$.detail.input", }, "input_template": \"\"\" { - "input": + \\"input\\": } \"\"\", }, diff --git a/sdk/python/pulumi_aws/cloudwatch/metric_alarm.py b/sdk/python/pulumi_aws/cloudwatch/metric_alarm.py index ea169433e91..4c9fb4c3482 100644 --- a/sdk/python/pulumi_aws/cloudwatch/metric_alarm.py +++ b/sdk/python/pulumi_aws/cloudwatch/metric_alarm.py @@ -1031,7 +1031,7 @@ def __init__(__self__, "id": "q1", "expression": \"\"\"SELECT MAX(DBLoadRelativeToNumVCPUs) - FROM SCHEMA("AWS/RDS", DBInstanceIdentifier) + FROM SCHEMA(\\"AWS/RDS\\", DBInstanceIdentifier) WHERE DBInstanceIdentifier != 'example-rds-instance' GROUP BY DBInstanceIdentifier ORDER BY MIN() ASC @@ -1288,7 +1288,7 @@ def __init__(__self__, "id": "q1", "expression": \"\"\"SELECT MAX(DBLoadRelativeToNumVCPUs) - FROM SCHEMA("AWS/RDS", DBInstanceIdentifier) + FROM SCHEMA(\\"AWS/RDS\\", DBInstanceIdentifier) WHERE DBInstanceIdentifier != 'example-rds-instance' GROUP BY DBInstanceIdentifier ORDER BY MIN() ASC diff --git a/sdk/python/pulumi_aws/cognito/identity_pool_provider_principal_tag.py b/sdk/python/pulumi_aws/cognito/identity_pool_provider_principal_tag.py index 8be87ce4855..7a0c1cc5ce9 100644 --- a/sdk/python/pulumi_aws/cognito/identity_pool_provider_principal_tag.py +++ b/sdk/python/pulumi_aws/cognito/identity_pool_provider_principal_tag.py @@ -205,6 +205,37 @@ def __init__(__self__, """ Provides an AWS Cognito Identity Principal Mapping. + ## Example Usage + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + example = aws.cognito.UserPool("example", + name="user pool", + auto_verified_attributes=["email"]) + example_user_pool_client = aws.cognito.UserPoolClient("example", + name="client", + user_pool_id=example.id, + supported_identity_providers=std.compact(input=["COGNITO"]).result) + example_identity_pool = aws.cognito.IdentityPool("example", + identity_pool_name="identity pool", + allow_unauthenticated_identities=False, + cognito_identity_providers=[{ + "client_id": example_user_pool_client.id, + "provider_name": example.endpoint, + "server_side_token_check": False, + }]) + example_identity_pool_provider_principal_tag = aws.cognito.IdentityPoolProviderPrincipalTag("example", + identity_pool_id=example_identity_pool.id, + identity_provider_name=example.endpoint, + use_defaults=False, + principal_tags={ + "test": "value", + }) + ``` + ## Import Using `pulumi import`, import Cognito Identity Pool Roles Attachment using the Identity Pool ID and provider name. For example: @@ -230,6 +261,37 @@ def __init__(__self__, """ Provides an AWS Cognito Identity Principal Mapping. + ## Example Usage + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + example = aws.cognito.UserPool("example", + name="user pool", + auto_verified_attributes=["email"]) + example_user_pool_client = aws.cognito.UserPoolClient("example", + name="client", + user_pool_id=example.id, + supported_identity_providers=std.compact(input=["COGNITO"]).result) + example_identity_pool = aws.cognito.IdentityPool("example", + identity_pool_name="identity pool", + allow_unauthenticated_identities=False, + cognito_identity_providers=[{ + "client_id": example_user_pool_client.id, + "provider_name": example.endpoint, + "server_side_token_check": False, + }]) + example_identity_pool_provider_principal_tag = aws.cognito.IdentityPoolProviderPrincipalTag("example", + identity_pool_id=example_identity_pool.id, + identity_provider_name=example.endpoint, + use_defaults=False, + principal_tags={ + "test": "value", + }) + ``` + ## Import Using `pulumi import`, import Cognito Identity Pool Roles Attachment using the Identity Pool ID and provider name. For example: diff --git a/sdk/python/pulumi_aws/datazone/form_type.py b/sdk/python/pulumi_aws/datazone/form_type.py index 9b52ac9d98f..e0860cd196c 100644 --- a/sdk/python/pulumi_aws/datazone/form_type.py +++ b/sdk/python/pulumi_aws/datazone/form_type.py @@ -451,17 +451,17 @@ def __init__(__self__, owning_project_identifier=test_project.id, status="DISABLED", model={ - "smithy": \"\"\"\\x09structure SageMakerModelFormType { - \\x09\\x09\\x09@required - \\x09\\x09\\x09@amazon.datazone#searchable - \\x09\\x09\\x09modelName: String + "smithy": \"\"\"\\tstructure SageMakerModelFormType { + \\t\\t\\t@required + \\t\\t\\t@amazon.datazone#searchable + \\t\\t\\tmodelName: String - \\x09\\x09\\x09@required - \\x09\\x09\\x09modelArn: String + \\t\\t\\t@required + \\t\\t\\tmodelArn: String - \\x09\\x09\\x09@required - \\x09\\x09\\x09creationTime: String - \\x09\\x09\\x09} + \\t\\t\\t@required + \\t\\t\\tcreationTime: String + \\t\\t\\t} \"\"\", }) ``` @@ -561,17 +561,17 @@ def __init__(__self__, owning_project_identifier=test_project.id, status="DISABLED", model={ - "smithy": \"\"\"\\x09structure SageMakerModelFormType { - \\x09\\x09\\x09@required - \\x09\\x09\\x09@amazon.datazone#searchable - \\x09\\x09\\x09modelName: String + "smithy": \"\"\"\\tstructure SageMakerModelFormType { + \\t\\t\\t@required + \\t\\t\\t@amazon.datazone#searchable + \\t\\t\\tmodelName: String - \\x09\\x09\\x09@required - \\x09\\x09\\x09modelArn: String + \\t\\t\\t@required + \\t\\t\\tmodelArn: String - \\x09\\x09\\x09@required - \\x09\\x09\\x09creationTime: String - \\x09\\x09\\x09} + \\t\\t\\t@required + \\t\\t\\tcreationTime: String + \\t\\t\\t} \"\"\", }) ``` diff --git a/sdk/python/pulumi_aws/dms/replication_config.py b/sdk/python/pulumi_aws/dms/replication_config.py index c6026e476e3..f034760ed7a 100644 --- a/sdk/python/pulumi_aws/dms/replication_config.py +++ b/sdk/python/pulumi_aws/dms/replication_config.py @@ -481,7 +481,7 @@ def __init__(__self__, source_endpoint_arn=source["endpointArn"], target_endpoint_arn=target["endpointArn"], table_mappings=\"\"\" { - "rules":[{"rule-type":"selection","rule-id":"1","rule-name":"1","rule-action":"include","object-locator":{"schema-name":"%%","table-name":"%%"}}] + \\"rules\\":[{\\"rule-type\\":\\"selection\\",\\"rule-id\\":\\"1\\",\\"rule-name\\":\\"1\\",\\"rule-action\\":\\"include\\",\\"object-locator\\":{\\"schema-name\\":\\"%%\\",\\"table-name\\":\\"%%\\"}}] } \"\"\", start_replication=True, @@ -546,7 +546,7 @@ def __init__(__self__, source_endpoint_arn=source["endpointArn"], target_endpoint_arn=target["endpointArn"], table_mappings=\"\"\" { - "rules":[{"rule-type":"selection","rule-id":"1","rule-name":"1","rule-action":"include","object-locator":{"schema-name":"%%","table-name":"%%"}}] + \\"rules\\":[{\\"rule-type\\":\\"selection\\",\\"rule-id\\":\\"1\\",\\"rule-name\\":\\"1\\",\\"rule-action\\":\\"include\\",\\"object-locator\\":{\\"schema-name\\":\\"%%\\",\\"table-name\\":\\"%%\\"}}] } \"\"\", start_replication=True, diff --git a/sdk/python/pulumi_aws/dynamodb/get_table_item.py b/sdk/python/pulumi_aws/dynamodb/get_table_item.py index 99ff833877e..58518eb66d9 100644 --- a/sdk/python/pulumi_aws/dynamodb/get_table_item.py +++ b/sdk/python/pulumi_aws/dynamodb/get_table_item.py @@ -129,7 +129,7 @@ def get_table_item(expression_attribute_names: Optional[Mapping[str, _builtins.s }, projection_expression="#P", key=\"\"\"{ - \\x09"hashKey": {"S": "example"} + \\t\\"hashKey\\": {\\"S\\": \\"example\\"} } \"\"\") ``` @@ -184,7 +184,7 @@ def get_table_item_output(expression_attribute_names: Optional[pulumi.Input[Opti }, projection_expression="#P", key=\"\"\"{ - \\x09"hashKey": {"S": "example"} + \\t\\"hashKey\\": {\\"S\\": \\"example\\"} } \"\"\") ``` diff --git a/sdk/python/pulumi_aws/dynamodb/table_item.py b/sdk/python/pulumi_aws/dynamodb/table_item.py index 2dd749a5cdd..b8c56f2f2c1 100644 --- a/sdk/python/pulumi_aws/dynamodb/table_item.py +++ b/sdk/python/pulumi_aws/dynamodb/table_item.py @@ -234,11 +234,11 @@ def __init__(__self__, table_name=example_table.name, hash_key=example_table.hash_key, item=\"\"\"{ - "exampleHashKey": {"S": "something"}, - "one": {"N": "11111"}, - "two": {"N": "22222"}, - "three": {"N": "33333"}, - "four": {"N": "44444"} + \\"exampleHashKey\\": {\\"S\\": \\"something\\"}, + \\"one\\": {\\"N\\": \\"11111\\"}, + \\"two\\": {\\"N\\": \\"22222\\"}, + \\"three\\": {\\"N\\": \\"33333\\"}, + \\"four\\": {\\"N\\": \\"44444\\"} } \"\"\") ``` @@ -288,11 +288,11 @@ def __init__(__self__, table_name=example_table.name, hash_key=example_table.hash_key, item=\"\"\"{ - "exampleHashKey": {"S": "something"}, - "one": {"N": "11111"}, - "two": {"N": "22222"}, - "three": {"N": "33333"}, - "four": {"N": "44444"} + \\"exampleHashKey\\": {\\"S\\": \\"something\\"}, + \\"one\\": {\\"N\\": \\"11111\\"}, + \\"two\\": {\\"N\\": \\"22222\\"}, + \\"three\\": {\\"N\\": \\"33333\\"}, + \\"four\\": {\\"N\\": \\"44444\\"} } \"\"\") ``` diff --git a/sdk/python/pulumi_aws/ec2/get_subnets.py b/sdk/python/pulumi_aws/ec2/get_subnets.py index e1e3e448b48..b7d1ac72a8f 100644 --- a/sdk/python/pulumi_aws/ec2/get_subnets.py +++ b/sdk/python/pulumi_aws/ec2/get_subnets.py @@ -97,6 +97,47 @@ def get_subnets(filters: Optional[Sequence[Union['GetSubnetsFilterArgs', 'GetSub """ This resource can be useful for getting back a set of subnet IDs. + ## Example Usage + + The following shows outputting all CIDR blocks for every subnet ID in a VPC. + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + example = aws.ec2.get_subnets(filters=[{ + "name": "vpc-id", + "values": [vpc_id], + }]) + example_get_subnet = {__key: aws.ec2.get_subnet(id=__value) for __key, __value in std.toset(input=example.ids).result} + pulumi.export("subnetCidrBlocks", [s.cidr_block for s in example_get_subnet]) + ``` + + The following example retrieves a set of all subnets in a VPC with a custom + tag of `Tier` set to a value of "Private" so that the `ec2.Instance` resource + can loop through the subnets, putting instances across availability zones. + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + private = aws.ec2.get_subnets(filters=[{ + "name": "vpc-id", + "values": [vpc_id], + }], + tags={ + "Tier": "Private", + }) + app = [] + for range in [{"key": k, "value": v} for [k, v] in enumerate(std.toset(input=private.ids).result)]: + app.append(aws.ec2.Instance(f"app-{range['key']}", + ami=ami, + instance_type=aws.ec2.InstanceType.T2_MICRO, + subnet_id=range["value"])) + ``` + :param Sequence[Union['GetSubnetsFilterArgs', 'GetSubnetsFilterArgsDict']] filters: Custom filter block as described below. :param _builtins.str region: Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration. @@ -123,6 +164,47 @@ def get_subnets_output(filters: Optional[pulumi.Input[Optional[Sequence[Union['G """ This resource can be useful for getting back a set of subnet IDs. + ## Example Usage + + The following shows outputting all CIDR blocks for every subnet ID in a VPC. + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + example = aws.ec2.get_subnets(filters=[{ + "name": "vpc-id", + "values": [vpc_id], + }]) + example_get_subnet = {__key: aws.ec2.get_subnet(id=__value) for __key, __value in std.toset(input=example.ids).result} + pulumi.export("subnetCidrBlocks", [s.cidr_block for s in example_get_subnet]) + ``` + + The following example retrieves a set of all subnets in a VPC with a custom + tag of `Tier` set to a value of "Private" so that the `ec2.Instance` resource + can loop through the subnets, putting instances across availability zones. + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + private = aws.ec2.get_subnets(filters=[{ + "name": "vpc-id", + "values": [vpc_id], + }], + tags={ + "Tier": "Private", + }) + app = [] + for range in [{"key": k, "value": v} for [k, v] in enumerate(std.toset(input=private.ids).result)]: + app.append(aws.ec2.Instance(f"app-{range['key']}", + ami=ami, + instance_type=aws.ec2.InstanceType.T2_MICRO, + subnet_id=range["value"])) + ``` + :param Sequence[Union['GetSubnetsFilterArgs', 'GetSubnetsFilterArgsDict']] filters: Custom filter block as described below. :param _builtins.str region: Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration. diff --git a/sdk/python/pulumi_aws/ec2/security_group.py b/sdk/python/pulumi_aws/ec2/security_group.py index e4f1e5c6c20..77a05b4a211 100644 --- a/sdk/python/pulumi_aws/ec2/security_group.py +++ b/sdk/python/pulumi_aws/ec2/security_group.py @@ -540,12 +540,12 @@ def __init__(__self__, example_provisioner0 = command.local.Command("exampleProvisioner0", create=true, update=true, - delete=f ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters "Name=tag:Name,Values={tags.workaround1}" --query "VpcEndpoints[0].VpcEndpointId" --output text` && + delete=f ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters \\"Name=tag:Name,Values={tags.workaround1}\\" --query \\"VpcEndpoints[0].VpcEndpointId\\" --output text` && aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${{ENDPOINT_ID}} --add-security-group-ids {tags.workaround2} --remove-security-group-ids {id} , opts = pulumi.ResourceOptions(depends_on=[example])) example_resource = null.Resource("example", triggers={ - "rerun_upon_change_of": std.join(separator=",", + "rerunUponChangeOf": std.join(separator=",", input=example_aws_vpc_endpoint["securityGroupIds"]).result, }) example_resource_provisioner0 = command.local.Command("exampleResourceProvisioner0", create=f aws ec2 modify-vpc-endpoint --vpc-endpoint-id {example_aws_vpc_endpoint.id} --remove-security-group-ids {default.id} @@ -741,12 +741,12 @@ def __init__(__self__, example_provisioner0 = command.local.Command("exampleProvisioner0", create=true, update=true, - delete=f ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters "Name=tag:Name,Values={tags.workaround1}" --query "VpcEndpoints[0].VpcEndpointId" --output text` && + delete=f ENDPOINT_ID=`aws ec2 describe-vpc-endpoints --filters \\"Name=tag:Name,Values={tags.workaround1}\\" --query \\"VpcEndpoints[0].VpcEndpointId\\" --output text` && aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${{ENDPOINT_ID}} --add-security-group-ids {tags.workaround2} --remove-security-group-ids {id} , opts = pulumi.ResourceOptions(depends_on=[example])) example_resource = null.Resource("example", triggers={ - "rerun_upon_change_of": std.join(separator=",", + "rerunUponChangeOf": std.join(separator=",", input=example_aws_vpc_endpoint["securityGroupIds"]).result, }) example_resource_provisioner0 = command.local.Command("exampleResourceProvisioner0", create=f aws ec2 modify-vpc-endpoint --vpc-endpoint-id {example_aws_vpc_endpoint.id} --remove-security-group-ids {default.id} diff --git a/sdk/python/pulumi_aws/ec2/vpc_ipam.py b/sdk/python/pulumi_aws/ec2/vpc_ipam.py index 9f4b43acec2..0a6f484384b 100644 --- a/sdk/python/pulumi_aws/ec2/vpc_ipam.py +++ b/sdk/python/pulumi_aws/ec2/vpc_ipam.py @@ -442,6 +442,31 @@ def __init__(__self__, Shared with multiple operating_regions: + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + current = aws.get_region() + config = pulumi.Config() + ipam_regions = config.get_object("ipamRegions") + if ipam_regions is None: + ipam_regions = [ + "us-east-1", + "us-west-2", + ] + # ensure current provider region is an operating_regions entry + all_ipam_regions = std.distinct(input=std.concat(input=[ + [current.region], + ipam_regions, + ]).result).result + main = aws.ec2.VpcIpam("main", + operating_regions=[{"key": k, "value": v} for k, v in all_ipam_regions].apply(lambda entries: [{ + "regionName": entry["value"], + } for entry in entries]), + description="multi region ipam") + ``` + ## Import Using `pulumi import`, import IPAMs using the IPAM `id`. For example: @@ -491,6 +516,31 @@ def __init__(__self__, Shared with multiple operating_regions: + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + current = aws.get_region() + config = pulumi.Config() + ipam_regions = config.get_object("ipamRegions") + if ipam_regions is None: + ipam_regions = [ + "us-east-1", + "us-west-2", + ] + # ensure current provider region is an operating_regions entry + all_ipam_regions = std.distinct(input=std.concat(input=[ + [current.region], + ipam_regions, + ]).result).result + main = aws.ec2.VpcIpam("main", + operating_regions=[{"key": k, "value": v} for k, v in all_ipam_regions].apply(lambda entries: [{ + "regionName": entry["value"], + } for entry in entries]), + description="multi region ipam") + ``` + ## Import Using `pulumi import`, import IPAMs using the IPAM `id`. For example: diff --git a/sdk/python/pulumi_aws/ecr/lifecycle_policy.py b/sdk/python/pulumi_aws/ecr/lifecycle_policy.py index a33383dc8c1..03a2a21b759 100644 --- a/sdk/python/pulumi_aws/ecr/lifecycle_policy.py +++ b/sdk/python/pulumi_aws/ecr/lifecycle_policy.py @@ -173,18 +173,18 @@ def __init__(__self__, example_lifecycle_policy = aws.ecr.LifecyclePolicy("example", repository=example.name, policy=\"\"\"{ - "rules": [ + \\"rules\\": [ { - "rulePriority": 1, - "description": "Expire images older than 14 days", - "selection": { - "tagStatus": "untagged", - "countType": "sinceImagePushed", - "countUnit": "days", - "countNumber": 14 + \\"rulePriority\\": 1, + \\"description\\": \\"Expire images older than 14 days\\", + \\"selection\\": { + \\"tagStatus\\": \\"untagged\\", + \\"countType\\": \\"sinceImagePushed\\", + \\"countUnit\\": \\"days\\", + \\"countNumber\\": 14 }, - "action": { - "type": "expire" + \\"action\\": { + \\"type\\": \\"expire\\" } } ] @@ -202,18 +202,18 @@ def __init__(__self__, example_lifecycle_policy = aws.ecr.LifecyclePolicy("example", repository=example.name, policy=\"\"\"{ - "rules": [ + \\"rules\\": [ { - "rulePriority": 1, - "description": "Keep last 30 images", - "selection": { - "tagStatus": "tagged", - "tagPrefixList": ["v"], - "countType": "imageCountMoreThan", - "countNumber": 30 + \\"rulePriority\\": 1, + \\"description\\": \\"Keep last 30 images\\", + \\"selection\\": { + \\"tagStatus\\": \\"tagged\\", + \\"tagPrefixList\\": [\\"v\\"], + \\"countType\\": \\"imageCountMoreThan\\", + \\"countNumber\\": 30 }, - "action": { - "type": "expire" + \\"action\\": { + \\"type\\": \\"expire\\" } } ] @@ -272,18 +272,18 @@ def __init__(__self__, example_lifecycle_policy = aws.ecr.LifecyclePolicy("example", repository=example.name, policy=\"\"\"{ - "rules": [ + \\"rules\\": [ { - "rulePriority": 1, - "description": "Expire images older than 14 days", - "selection": { - "tagStatus": "untagged", - "countType": "sinceImagePushed", - "countUnit": "days", - "countNumber": 14 + \\"rulePriority\\": 1, + \\"description\\": \\"Expire images older than 14 days\\", + \\"selection\\": { + \\"tagStatus\\": \\"untagged\\", + \\"countType\\": \\"sinceImagePushed\\", + \\"countUnit\\": \\"days\\", + \\"countNumber\\": 14 }, - "action": { - "type": "expire" + \\"action\\": { + \\"type\\": \\"expire\\" } } ] @@ -301,18 +301,18 @@ def __init__(__self__, example_lifecycle_policy = aws.ecr.LifecyclePolicy("example", repository=example.name, policy=\"\"\"{ - "rules": [ + \\"rules\\": [ { - "rulePriority": 1, - "description": "Keep last 30 images", - "selection": { - "tagStatus": "tagged", - "tagPrefixList": ["v"], - "countType": "imageCountMoreThan", - "countNumber": 30 + \\"rulePriority\\": 1, + \\"description\\": \\"Keep last 30 images\\", + \\"selection\\": { + \\"tagStatus\\": \\"tagged\\", + \\"tagPrefixList\\": [\\"v\\"], + \\"countType\\": \\"imageCountMoreThan\\", + \\"countNumber\\": 30 }, - "action": { - "type": "expire" + \\"action\\": { + \\"type\\": \\"expire\\" } } ] diff --git a/sdk/python/pulumi_aws/ecr/repository_creation_template.py b/sdk/python/pulumi_aws/ecr/repository_creation_template.py index 309a98b22bc..80a92c2b0bd 100644 --- a/sdk/python/pulumi_aws/ecr/repository_creation_template.py +++ b/sdk/python/pulumi_aws/ecr/repository_creation_template.py @@ -454,18 +454,18 @@ def __init__(__self__, }], repository_policy=example.json, lifecycle_policy=\"\"\"{ - "rules": [ + \\"rules\\": [ { - "rulePriority": 1, - "description": "Expire images older than 14 days", - "selection": { - "tagStatus": "untagged", - "countType": "sinceImagePushed", - "countUnit": "days", - "countNumber": 14 + \\"rulePriority\\": 1, + \\"description\\": \\"Expire images older than 14 days\\", + \\"selection\\": { + \\"tagStatus\\": \\"untagged\\", + \\"countType\\": \\"sinceImagePushed\\", + \\"countUnit\\": \\"days\\", + \\"countNumber\\": 14 }, - "action": { - "type": "expire" + \\"action\\": { + \\"type\\": \\"expire\\" } } ] @@ -547,18 +547,18 @@ def __init__(__self__, }], repository_policy=example.json, lifecycle_policy=\"\"\"{ - "rules": [ + \\"rules\\": [ { - "rulePriority": 1, - "description": "Expire images older than 14 days", - "selection": { - "tagStatus": "untagged", - "countType": "sinceImagePushed", - "countUnit": "days", - "countNumber": 14 + \\"rulePriority\\": 1, + \\"description\\": \\"Expire images older than 14 days\\", + \\"selection\\": { + \\"tagStatus\\": \\"untagged\\", + \\"countType\\": \\"sinceImagePushed\\", + \\"countUnit\\": \\"days\\", + \\"countNumber\\": 14 }, - "action": { - "type": "expire" + \\"action\\": { + \\"type\\": \\"expire\\" } } ] diff --git a/sdk/python/pulumi_aws/ecs/get_task_definition.py b/sdk/python/pulumi_aws/ecs/get_task_definition.py index 2d7275806cd..4ccee0d5767 100644 --- a/sdk/python/pulumi_aws/ecs/get_task_definition.py +++ b/sdk/python/pulumi_aws/ecs/get_task_definition.py @@ -326,16 +326,16 @@ def get_task_definition(region: Optional[_builtins.str] = None, family="mongodb", container_definitions=\"\"\"[ { - "cpu": 128, - "environment": [{ - "name": "SECRET", - "value": "KEY" + \\"cpu\\": 128, + \\"environment\\": [{ + \\"name\\": \\"SECRET\\", + \\"value\\": \\"KEY\\" }], - "essential": true, - "image": "mongo:latest", - "memory": 128, - "memoryReservation": 64, - "name": "mongodb" + \\"essential\\": true, + \\"image\\": \\"mongo:latest\\", + \\"memory\\": 128, + \\"memoryReservation\\": 64, + \\"name\\": \\"mongodb\\" } ] \"\"\") @@ -400,16 +400,16 @@ def get_task_definition_output(region: Optional[pulumi.Input[Optional[_builtins. family="mongodb", container_definitions=\"\"\"[ { - "cpu": 128, - "environment": [{ - "name": "SECRET", - "value": "KEY" + \\"cpu\\": 128, + \\"environment\\": [{ + \\"name\\": \\"SECRET\\", + \\"value\\": \\"KEY\\" }], - "essential": true, - "image": "mongo:latest", - "memory": 128, - "memoryReservation": 64, - "name": "mongodb" + \\"essential\\": true, + \\"image\\": \\"mongo:latest\\", + \\"memory\\": 128, + \\"memoryReservation\\": 64, + \\"name\\": \\"mongodb\\" } ] \"\"\") diff --git a/sdk/python/pulumi_aws/eks/get_clusters.py b/sdk/python/pulumi_aws/eks/get_clusters.py index 2e862b4b826..efa0d941084 100644 --- a/sdk/python/pulumi_aws/eks/get_clusters.py +++ b/sdk/python/pulumi_aws/eks/get_clusters.py @@ -75,6 +75,17 @@ def get_clusters(region: Optional[_builtins.str] = None, """ Retrieve EKS Clusters list + ## Example Usage + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + example = aws.eks.get_clusters() + example_get_cluster = {__key: aws.eks.get_cluster(name=__value) for __key, __value in std.toset(input=example.names).result} + ``` + :param _builtins.str region: Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration. """ @@ -92,6 +103,17 @@ def get_clusters_output(region: Optional[pulumi.Input[Optional[_builtins.str]]] """ Retrieve EKS Clusters list + ## Example Usage + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + example = aws.eks.get_clusters() + example_get_cluster = {__key: aws.eks.get_cluster(name=__value) for __key, __value in std.toset(input=example.names).result} + ``` + :param _builtins.str region: Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration. """ diff --git a/sdk/python/pulumi_aws/elasticsearch/domain.py b/sdk/python/pulumi_aws/elasticsearch/domain.py index 84ec87b214d..7387e094409 100644 --- a/sdk/python/pulumi_aws/elasticsearch/domain.py +++ b/sdk/python/pulumi_aws/elasticsearch/domain.py @@ -731,15 +731,15 @@ def __init__(__self__, example = aws.elasticsearch.Domain("example", domain_name=domain, access_policies=f\"\"\"{{ - "Version": "2012-10-17", - "Statement": [ + \\"Version\\": \\"2012-10-17\\", + \\"Statement\\": [ {{ - "Action": "es:*", - "Principal": "*", - "Effect": "Allow", - "Resource": "arn:aws:es:{current.region}:{current_get_caller_identity.account_id}:domain/{domain}/*", - "Condition": {{ - "IpAddress": {{"aws:SourceIp": ["66.193.100.22/32"]}} + \\"Action\\": \\"es:*\\", + \\"Principal\\": \\"*\\", + \\"Effect\\": \\"Allow\\", + \\"Resource\\": \\"arn:aws:es:{current.region}:{current_get_caller_identity.account_id}:domain/{domain}/*\\", + \\"Condition\\": {{ + \\"IpAddress\\": {{\\"aws:SourceIp\\": [\\"66.193.100.22/32\\"]}} }} }} ] @@ -828,15 +828,15 @@ def __init__(__self__, "rest.action.multi.allow_explicit_index": "true", }, access_policies=f\"\"\"{{ - \\x09"Version": "2012-10-17", - \\x09"Statement": [ - \\x09\\x09{{ - \\x09\\x09\\x09"Action": "es:*", - \\x09\\x09\\x09"Principal": "*", - \\x09\\x09\\x09"Effect": "Allow", - \\x09\\x09\\x09"Resource": "arn:aws:es:{current.region}:{current_get_caller_identity.account_id}:domain/{domain}/*" - \\x09\\x09}} - \\x09] + \\t\\"Version\\": \\"2012-10-17\\", + \\t\\"Statement\\": [ + \\t\\t{{ + \\t\\t\\t\\"Action\\": \\"es:*\\", + \\t\\t\\t\\"Principal\\": \\"*\\", + \\t\\t\\t\\"Effect\\": \\"Allow\\", + \\t\\t\\t\\"Resource\\": \\"arn:aws:es:{current.region}:{current_get_caller_identity.account_id}:domain/{domain}/*\\" + \\t\\t}} + \\t] }} \"\"\", tags={ @@ -920,15 +920,15 @@ def __init__(__self__, example = aws.elasticsearch.Domain("example", domain_name=domain, access_policies=f\"\"\"{{ - "Version": "2012-10-17", - "Statement": [ + \\"Version\\": \\"2012-10-17\\", + \\"Statement\\": [ {{ - "Action": "es:*", - "Principal": "*", - "Effect": "Allow", - "Resource": "arn:aws:es:{current.region}:{current_get_caller_identity.account_id}:domain/{domain}/*", - "Condition": {{ - "IpAddress": {{"aws:SourceIp": ["66.193.100.22/32"]}} + \\"Action\\": \\"es:*\\", + \\"Principal\\": \\"*\\", + \\"Effect\\": \\"Allow\\", + \\"Resource\\": \\"arn:aws:es:{current.region}:{current_get_caller_identity.account_id}:domain/{domain}/*\\", + \\"Condition\\": {{ + \\"IpAddress\\": {{\\"aws:SourceIp\\": [\\"66.193.100.22/32\\"]}} }} }} ] @@ -1017,15 +1017,15 @@ def __init__(__self__, "rest.action.multi.allow_explicit_index": "true", }, access_policies=f\"\"\"{{ - \\x09"Version": "2012-10-17", - \\x09"Statement": [ - \\x09\\x09{{ - \\x09\\x09\\x09"Action": "es:*", - \\x09\\x09\\x09"Principal": "*", - \\x09\\x09\\x09"Effect": "Allow", - \\x09\\x09\\x09"Resource": "arn:aws:es:{current.region}:{current_get_caller_identity.account_id}:domain/{domain}/*" - \\x09\\x09}} - \\x09] + \\t\\"Version\\": \\"2012-10-17\\", + \\t\\"Statement\\": [ + \\t\\t{{ + \\t\\t\\t\\"Action\\": \\"es:*\\", + \\t\\t\\t\\"Principal\\": \\"*\\", + \\t\\t\\t\\"Effect\\": \\"Allow\\", + \\t\\t\\t\\"Resource\\": \\"arn:aws:es:{current.region}:{current_get_caller_identity.account_id}:domain/{domain}/*\\" + \\t\\t}} + \\t] }} \"\"\", tags={ diff --git a/sdk/python/pulumi_aws/elasticsearch/domain_policy.py b/sdk/python/pulumi_aws/elasticsearch/domain_policy.py index baacd1a3fe9..e7906b5cbcc 100644 --- a/sdk/python/pulumi_aws/elasticsearch/domain_policy.py +++ b/sdk/python/pulumi_aws/elasticsearch/domain_policy.py @@ -154,16 +154,16 @@ def __init__(__self__, main = aws.elasticsearch.DomainPolicy("main", domain_name=example.domain_name, access_policies=example.arn.apply(lambda arn: f\"\"\"{{ - "Version": "2012-10-17", - "Statement": [ + \\"Version\\": \\"2012-10-17\\", + \\"Statement\\": [ {{ - "Action": "es:*", - "Principal": "*", - "Effect": "Allow", - "Condition": {{ - "IpAddress": {{"aws:SourceIp": "127.0.0.1/32"}} + \\"Action\\": \\"es:*\\", + \\"Principal\\": \\"*\\", + \\"Effect\\": \\"Allow\\", + \\"Condition\\": {{ + \\"IpAddress\\": {{\\"aws:SourceIp\\": \\"127.0.0.1/32\\"}} }}, - "Resource": "{arn}/*" + \\"Resource\\": \\"{arn}/*\\" }} ] }} @@ -197,16 +197,16 @@ def __init__(__self__, main = aws.elasticsearch.DomainPolicy("main", domain_name=example.domain_name, access_policies=example.arn.apply(lambda arn: f\"\"\"{{ - "Version": "2012-10-17", - "Statement": [ + \\"Version\\": \\"2012-10-17\\", + \\"Statement\\": [ {{ - "Action": "es:*", - "Principal": "*", - "Effect": "Allow", - "Condition": {{ - "IpAddress": {{"aws:SourceIp": "127.0.0.1/32"}} + \\"Action\\": \\"es:*\\", + \\"Principal\\": \\"*\\", + \\"Effect\\": \\"Allow\\", + \\"Condition\\": {{ + \\"IpAddress\\": {{\\"aws:SourceIp\\": \\"127.0.0.1/32\\"}} }}, - "Resource": "{arn}/*" + \\"Resource\\": \\"{arn}/*\\" }} ] }} diff --git a/sdk/python/pulumi_aws/emr/cluster.py b/sdk/python/pulumi_aws/emr/cluster.py index d76e9f2415a..54f3d06fc33 100644 --- a/sdk/python/pulumi_aws/emr/cluster.py +++ b/sdk/python/pulumi_aws/emr/cluster.py @@ -76,16 +76,16 @@ def __init__(__self__, *, cluster = aws.emr.Cluster("cluster", configurations_json=\"\"\"[ { - "Classification": "hadoop-env", - "Configurations": [ + \\"Classification\\": \\"hadoop-env\\", + \\"Configurations\\": [ { - "Classification": "export", - "Properties": { - "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + \\"Classification\\": \\"export\\", + \\"Properties\\": { + \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" } } ], - "Properties": {} + \\"Properties\\": {} } ] \"\"\") @@ -294,16 +294,16 @@ def configurations_json(self) -> Optional[pulumi.Input[_builtins.str]]: cluster = aws.emr.Cluster("cluster", configurations_json=\"\"\"[ { - "Classification": "hadoop-env", - "Configurations": [ + \\"Classification\\": \\"hadoop-env\\", + \\"Configurations\\": [ { - "Classification": "export", - "Properties": { - "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + \\"Classification\\": \\"export\\", + \\"Properties\\": { + \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" } } ], - "Properties": {} + \\"Properties\\": {} } ] \"\"\") @@ -665,16 +665,16 @@ def __init__(__self__, *, cluster = aws.emr.Cluster("cluster", configurations_json=\"\"\"[ { - "Classification": "hadoop-env", - "Configurations": [ + \\"Classification\\": \\"hadoop-env\\", + \\"Configurations\\": [ { - "Classification": "export", - "Properties": { - "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + \\"Classification\\": \\"export\\", + \\"Properties\\": { + \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" } } ], - "Properties": {} + \\"Properties\\": {} } ] \"\"\") @@ -894,16 +894,16 @@ def configurations_json(self) -> Optional[pulumi.Input[_builtins.str]]: cluster = aws.emr.Cluster("cluster", configurations_json=\"\"\"[ { - "Classification": "hadoop-env", - "Configurations": [ + \\"Classification\\": \\"hadoop-env\\", + \\"Configurations\\": [ { - "Classification": "export", - "Properties": { - "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + \\"Classification\\": \\"export\\", + \\"Properties\\": { + \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" } } ], - "Properties": {} + \\"Properties\\": {} } ] \"\"\") @@ -1312,9 +1312,9 @@ def __init__(__self__, release_label="emr-4.6.0", applications=["Spark"], additional_info=\"\"\"{ - "instanceAwsClientConfiguration": { - "proxyPort": 8099, - "proxyHost": "myproxy.example.com" + \\"instanceAwsClientConfiguration\\": { + \\"proxyPort\\": 8099, + \\"proxyHost\\": \\"myproxy.example.com\\" } } \"\"\", @@ -1339,31 +1339,31 @@ def __init__(__self__, }], "bid_price": "0.30", "autoscaling_policy": \"\"\"{ - "Constraints": { - "MinCapacity": 1, - "MaxCapacity": 2 + \\"Constraints\\": { + \\"MinCapacity\\": 1, + \\"MaxCapacity\\": 2 }, - "Rules": [ + \\"Rules\\": [ { - "Name": "ScaleOutMemoryPercentage", - "Description": "Scale out if YARNMemoryAvailablePercentage is less than 15", - "Action": { - "SimpleScalingPolicyConfiguration": { - "AdjustmentType": "CHANGE_IN_CAPACITY", - "ScalingAdjustment": 1, - "CoolDown": 300 + \\"Name\\": \\"ScaleOutMemoryPercentage\\", + \\"Description\\": \\"Scale out if YARNMemoryAvailablePercentage is less than 15\\", + \\"Action\\": { + \\"SimpleScalingPolicyConfiguration\\": { + \\"AdjustmentType\\": \\"CHANGE_IN_CAPACITY\\", + \\"ScalingAdjustment\\": 1, + \\"CoolDown\\": 300 } }, - "Trigger": { - "CloudWatchAlarmDefinition": { - "ComparisonOperator": "LESS_THAN", - "EvaluationPeriods": 1, - "MetricName": "YARNMemoryAvailablePercentage", - "Namespace": "AWS/ElasticMapReduce", - "Period": 300, - "Statistic": "AVERAGE", - "Threshold": 15.0, - "Unit": "PERCENT" + \\"Trigger\\": { + \\"CloudWatchAlarmDefinition\\": { + \\"ComparisonOperator\\": \\"LESS_THAN\\", + \\"EvaluationPeriods\\": 1, + \\"MetricName\\": \\"YARNMemoryAvailablePercentage\\", + \\"Namespace\\": \\"AWS/ElasticMapReduce\\", + \\"Period\\": 300, + \\"Statistic\\": \\"AVERAGE\\", + \\"Threshold\\": 15.0, + \\"Unit\\": \\"PERCENT\\" } } } @@ -1386,28 +1386,28 @@ def __init__(__self__, }], configurations_json=\"\"\" [ { - "Classification": "hadoop-env", - "Configurations": [ + \\"Classification\\": \\"hadoop-env\\", + \\"Configurations\\": [ { - "Classification": "export", - "Properties": { - "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + \\"Classification\\": \\"export\\", + \\"Properties\\": { + \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" } } ], - "Properties": {} + \\"Properties\\": {} }, { - "Classification": "spark-env", - "Configurations": [ + \\"Classification\\": \\"spark-env\\", + \\"Configurations\\": [ { - "Classification": "export", - "Properties": { - "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + \\"Classification\\": \\"export\\", + \\"Properties\\": { + \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" } } ], - "Properties": {} + \\"Properties\\": {} } ] \"\"\", @@ -1582,16 +1582,16 @@ def __init__(__self__, cluster = aws.emr.Cluster("cluster", configurations_json=\"\"\"[ { - "Classification": "hadoop-env", - "Configurations": [ + \\"Classification\\": \\"hadoop-env\\", + \\"Configurations\\": [ { - "Classification": "export", - "Properties": { - "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + \\"Classification\\": \\"export\\", + \\"Properties\\": { + \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" } } ], - "Properties": {} + \\"Properties\\": {} } ] \"\"\") @@ -1649,9 +1649,9 @@ def __init__(__self__, release_label="emr-4.6.0", applications=["Spark"], additional_info=\"\"\"{ - "instanceAwsClientConfiguration": { - "proxyPort": 8099, - "proxyHost": "myproxy.example.com" + \\"instanceAwsClientConfiguration\\": { + \\"proxyPort\\": 8099, + \\"proxyHost\\": \\"myproxy.example.com\\" } } \"\"\", @@ -1676,31 +1676,31 @@ def __init__(__self__, }], "bid_price": "0.30", "autoscaling_policy": \"\"\"{ - "Constraints": { - "MinCapacity": 1, - "MaxCapacity": 2 + \\"Constraints\\": { + \\"MinCapacity\\": 1, + \\"MaxCapacity\\": 2 }, - "Rules": [ + \\"Rules\\": [ { - "Name": "ScaleOutMemoryPercentage", - "Description": "Scale out if YARNMemoryAvailablePercentage is less than 15", - "Action": { - "SimpleScalingPolicyConfiguration": { - "AdjustmentType": "CHANGE_IN_CAPACITY", - "ScalingAdjustment": 1, - "CoolDown": 300 + \\"Name\\": \\"ScaleOutMemoryPercentage\\", + \\"Description\\": \\"Scale out if YARNMemoryAvailablePercentage is less than 15\\", + \\"Action\\": { + \\"SimpleScalingPolicyConfiguration\\": { + \\"AdjustmentType\\": \\"CHANGE_IN_CAPACITY\\", + \\"ScalingAdjustment\\": 1, + \\"CoolDown\\": 300 } }, - "Trigger": { - "CloudWatchAlarmDefinition": { - "ComparisonOperator": "LESS_THAN", - "EvaluationPeriods": 1, - "MetricName": "YARNMemoryAvailablePercentage", - "Namespace": "AWS/ElasticMapReduce", - "Period": 300, - "Statistic": "AVERAGE", - "Threshold": 15.0, - "Unit": "PERCENT" + \\"Trigger\\": { + \\"CloudWatchAlarmDefinition\\": { + \\"ComparisonOperator\\": \\"LESS_THAN\\", + \\"EvaluationPeriods\\": 1, + \\"MetricName\\": \\"YARNMemoryAvailablePercentage\\", + \\"Namespace\\": \\"AWS/ElasticMapReduce\\", + \\"Period\\": 300, + \\"Statistic\\": \\"AVERAGE\\", + \\"Threshold\\": 15.0, + \\"Unit\\": \\"PERCENT\\" } } } @@ -1723,28 +1723,28 @@ def __init__(__self__, }], configurations_json=\"\"\" [ { - "Classification": "hadoop-env", - "Configurations": [ + \\"Classification\\": \\"hadoop-env\\", + \\"Configurations\\": [ { - "Classification": "export", - "Properties": { - "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + \\"Classification\\": \\"export\\", + \\"Properties\\": { + \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" } } ], - "Properties": {} + \\"Properties\\": {} }, { - "Classification": "spark-env", - "Configurations": [ + \\"Classification\\": \\"spark-env\\", + \\"Configurations\\": [ { - "Classification": "export", - "Properties": { - "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + \\"Classification\\": \\"export\\", + \\"Properties\\": { + \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" } } ], - "Properties": {} + \\"Properties\\": {} } ] \"\"\", @@ -2070,16 +2070,16 @@ def get(resource_name: str, cluster = aws.emr.Cluster("cluster", configurations_json=\"\"\"[ { - "Classification": "hadoop-env", - "Configurations": [ + \\"Classification\\": \\"hadoop-env\\", + \\"Configurations\\": [ { - "Classification": "export", - "Properties": { - "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + \\"Classification\\": \\"export\\", + \\"Properties\\": { + \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" } } ], - "Properties": {} + \\"Properties\\": {} } ] \"\"\") @@ -2235,16 +2235,16 @@ def configurations_json(self) -> pulumi.Output[Optional[_builtins.str]]: cluster = aws.emr.Cluster("cluster", configurations_json=\"\"\"[ { - "Classification": "hadoop-env", - "Configurations": [ + \\"Classification\\": \\"hadoop-env\\", + \\"Configurations\\": [ { - "Classification": "export", - "Properties": { - "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + \\"Classification\\": \\"export\\", + \\"Properties\\": { + \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" } } ], - "Properties": {} + \\"Properties\\": {} } ] \"\"\") diff --git a/sdk/python/pulumi_aws/emr/instance_group.py b/sdk/python/pulumi_aws/emr/instance_group.py index 6bd47ea4fb0..5399a2c5699 100644 --- a/sdk/python/pulumi_aws/emr/instance_group.py +++ b/sdk/python/pulumi_aws/emr/instance_group.py @@ -45,16 +45,16 @@ def __init__(__self__, *, task = aws.emr.InstanceGroup("task", configurations_json=\"\"\"[ { - "Classification": "hadoop-env", - "Configurations": [ + \\"Classification\\": \\"hadoop-env\\", + \\"Configurations\\": [ { - "Classification": "export", - "Properties": { - "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + \\"Classification\\": \\"export\\", + \\"Properties\\": { + \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" } } ], - "Properties": {} + \\"Properties\\": {} } ] \"\"\") @@ -144,16 +144,16 @@ def configurations_json(self) -> Optional[pulumi.Input[_builtins.str]]: task = aws.emr.InstanceGroup("task", configurations_json=\"\"\"[ { - "Classification": "hadoop-env", - "Configurations": [ + \\"Classification\\": \\"hadoop-env\\", + \\"Configurations\\": [ { - "Classification": "export", - "Properties": { - "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + \\"Classification\\": \\"export\\", + \\"Properties\\": { + \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" } } ], - "Properties": {} + \\"Properties\\": {} } ] \"\"\") @@ -254,16 +254,16 @@ def __init__(__self__, *, task = aws.emr.InstanceGroup("task", configurations_json=\"\"\"[ { - "Classification": "hadoop-env", - "Configurations": [ + \\"Classification\\": \\"hadoop-env\\", + \\"Configurations\\": [ { - "Classification": "export", - "Properties": { - "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + \\"Classification\\": \\"export\\", + \\"Properties\\": { + \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" } } ], - "Properties": {} + \\"Properties\\": {} } ] \"\"\") @@ -350,16 +350,16 @@ def configurations_json(self) -> Optional[pulumi.Input[_builtins.str]]: task = aws.emr.InstanceGroup("task", configurations_json=\"\"\"[ { - "Classification": "hadoop-env", - "Configurations": [ + \\"Classification\\": \\"hadoop-env\\", + \\"Configurations\\": [ { - "Classification": "export", - "Properties": { - "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + \\"Classification\\": \\"export\\", + \\"Properties\\": { + \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" } } ], - "Properties": {} + \\"Properties\\": {} } ] \"\"\") @@ -527,16 +527,16 @@ def __init__(__self__, task = aws.emr.InstanceGroup("task", configurations_json=\"\"\"[ { - "Classification": "hadoop-env", - "Configurations": [ + \\"Classification\\": \\"hadoop-env\\", + \\"Configurations\\": [ { - "Classification": "export", - "Properties": { - "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + \\"Classification\\": \\"export\\", + \\"Properties\\": { + \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" } } ], - "Properties": {} + \\"Properties\\": {} } ] \"\"\") @@ -673,16 +673,16 @@ def get(resource_name: str, task = aws.emr.InstanceGroup("task", configurations_json=\"\"\"[ { - "Classification": "hadoop-env", - "Configurations": [ + \\"Classification\\": \\"hadoop-env\\", + \\"Configurations\\": [ { - "Classification": "export", - "Properties": { - "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + \\"Classification\\": \\"export\\", + \\"Properties\\": { + \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" } } ], - "Properties": {} + \\"Properties\\": {} } ] \"\"\") @@ -750,16 +750,16 @@ def configurations_json(self) -> pulumi.Output[Optional[_builtins.str]]: task = aws.emr.InstanceGroup("task", configurations_json=\"\"\"[ { - "Classification": "hadoop-env", - "Configurations": [ + \\"Classification\\": \\"hadoop-env\\", + \\"Configurations\\": [ { - "Classification": "export", - "Properties": { - "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" + \\"Classification\\": \\"export\\", + \\"Properties\\": { + \\"JAVA_HOME\\": \\"/usr/lib/jvm/java-1.8.0\\" } } ], - "Properties": {} + \\"Properties\\": {} } ] \"\"\") diff --git a/sdk/python/pulumi_aws/emr/security_configuration.py b/sdk/python/pulumi_aws/emr/security_configuration.py index 7416faea17e..abd1255db46 100644 --- a/sdk/python/pulumi_aws/emr/security_configuration.py +++ b/sdk/python/pulumi_aws/emr/security_configuration.py @@ -202,18 +202,18 @@ def __init__(__self__, foo = aws.emr.SecurityConfiguration("foo", name="emrsc_other", configuration=\"\"\"{ - "EncryptionConfiguration": { - "AtRestEncryptionConfiguration": { - "S3EncryptionConfiguration": { - "EncryptionMode": "SSE-S3" + \\"EncryptionConfiguration\\": { + \\"AtRestEncryptionConfiguration\\": { + \\"S3EncryptionConfiguration\\": { + \\"EncryptionMode\\": \\"SSE-S3\\" }, - "LocalDiskEncryptionConfiguration": { - "EncryptionKeyProviderType": "AwsKms", - "AwsKmsKey": "arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key" + \\"LocalDiskEncryptionConfiguration\\": { + \\"EncryptionKeyProviderType\\": \\"AwsKms\\", + \\"AwsKmsKey\\": \\"arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key\\" } }, - "EnableInTransitEncryption": false, - "EnableAtRestEncryption": true + \\"EnableInTransitEncryption\\": false, + \\"EnableAtRestEncryption\\": true } } \"\"\") @@ -253,18 +253,18 @@ def __init__(__self__, foo = aws.emr.SecurityConfiguration("foo", name="emrsc_other", configuration=\"\"\"{ - "EncryptionConfiguration": { - "AtRestEncryptionConfiguration": { - "S3EncryptionConfiguration": { - "EncryptionMode": "SSE-S3" + \\"EncryptionConfiguration\\": { + \\"AtRestEncryptionConfiguration\\": { + \\"S3EncryptionConfiguration\\": { + \\"EncryptionMode\\": \\"SSE-S3\\" }, - "LocalDiskEncryptionConfiguration": { - "EncryptionKeyProviderType": "AwsKms", - "AwsKmsKey": "arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key" + \\"LocalDiskEncryptionConfiguration\\": { + \\"EncryptionKeyProviderType\\": \\"AwsKms\\", + \\"AwsKmsKey\\": \\"arn:aws:kms:us-west-2:187416307283:alias/my_emr_test_key\\" } }, - "EnableInTransitEncryption": false, - "EnableAtRestEncryption": true + \\"EnableInTransitEncryption\\": false, + \\"EnableAtRestEncryption\\": true } } \"\"\") diff --git a/sdk/python/pulumi_aws/evidently/segment.py b/sdk/python/pulumi_aws/evidently/segment.py index 66a2f8ca428..c23439e6550 100644 --- a/sdk/python/pulumi_aws/evidently/segment.py +++ b/sdk/python/pulumi_aws/evidently/segment.py @@ -329,9 +329,9 @@ def __init__(__self__, example = aws.evidently.Segment("example", name="example", pattern=\"\"\" { - "Price": [ + \\"Price\\": [ { - "numeric": [">",10,"<=",20] + \\"numeric\\": [\\">\\",10,\\"<=\\",20] } ] } @@ -405,9 +405,9 @@ def __init__(__self__, example = aws.evidently.Segment("example", name="example", pattern=\"\"\" { - "Price": [ + \\"Price\\": [ { - "numeric": [">",10,"<=",20] + \\"numeric\\": [\\">\\",10,\\"<=\\",20] } ] } diff --git a/sdk/python/pulumi_aws/glue/connection.py b/sdk/python/pulumi_aws/glue/connection.py index e87a7666a88..44c94cf6822 100644 --- a/sdk/python/pulumi_aws/glue/connection.py +++ b/sdk/python/pulumi_aws/glue/connection.py @@ -581,17 +581,19 @@ def __init__(__self__, secret_id=example.id, secret_string=json.dumps({ "credentials": std.base64encode(input=\"\"\"{ - "type": "service_account", - "project_id": "example-project", - "private_key_id": "example-key", - "private_key": "-----BEGIN RSA PRIVATE KEY-----\\nREDACTED\\n-----END RSA PRIVATE KEY-----", - "client_email": "example-project@appspot.gserviceaccount.com", - "client_id": example-client", - "auth_uri": "https://accounts.google.com/o/oauth2/auth", - "token_uri": "https://oauth2.googleapis.com/token", - "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com", - "universe_domain": "googleapis.com" + \\"type\\": \\"service_account\\", + \\"project_id\\": \\"example-project\\", + \\"private_key_id\\": \\"example-key\\", + \\"private_key\\": \\"-----BEGIN RSA PRIVATE KEY-----\\ + REDACTED\\ + -----END RSA PRIVATE KEY-----\\", + \\"client_email\\": \\"example-project@appspot.gserviceaccount.com\\", + \\"client_id\\": example-client\\", + \\"auth_uri\\": \\"https://accounts.google.com/o/oauth2/auth\\", + \\"token_uri\\": \\"https://oauth2.googleapis.com/token\\", + \\"auth_provider_x509_cert_url\\": \\"https://www.googleapis.com/oauth2/v1/certs\\", + \\"client_x509_cert_url\\": \\"https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com\\", + \\"universe_domain\\": \\"googleapis.com\\" } \"\"\").result, })) @@ -873,17 +875,19 @@ def __init__(__self__, secret_id=example.id, secret_string=json.dumps({ "credentials": std.base64encode(input=\"\"\"{ - "type": "service_account", - "project_id": "example-project", - "private_key_id": "example-key", - "private_key": "-----BEGIN RSA PRIVATE KEY-----\\nREDACTED\\n-----END RSA PRIVATE KEY-----", - "client_email": "example-project@appspot.gserviceaccount.com", - "client_id": example-client", - "auth_uri": "https://accounts.google.com/o/oauth2/auth", - "token_uri": "https://oauth2.googleapis.com/token", - "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com", - "universe_domain": "googleapis.com" + \\"type\\": \\"service_account\\", + \\"project_id\\": \\"example-project\\", + \\"private_key_id\\": \\"example-key\\", + \\"private_key\\": \\"-----BEGIN RSA PRIVATE KEY-----\\ + REDACTED\\ + -----END RSA PRIVATE KEY-----\\", + \\"client_email\\": \\"example-project@appspot.gserviceaccount.com\\", + \\"client_id\\": example-client\\", + \\"auth_uri\\": \\"https://accounts.google.com/o/oauth2/auth\\", + \\"token_uri\\": \\"https://oauth2.googleapis.com/token\\", + \\"auth_provider_x509_cert_url\\": \\"https://www.googleapis.com/oauth2/v1/certs\\", + \\"client_x509_cert_url\\": \\"https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com\\", + \\"universe_domain\\": \\"googleapis.com\\" } \"\"\").result, })) diff --git a/sdk/python/pulumi_aws/glue/crawler.py b/sdk/python/pulumi_aws/glue/crawler.py index e9bb06d602f..9a63e0d2e80 100644 --- a/sdk/python/pulumi_aws/glue/crawler.py +++ b/sdk/python/pulumi_aws/glue/crawler.py @@ -907,9 +907,9 @@ def __init__(__self__, "delete_behavior": "LOG", }, configuration=\"\"\"{ - "Version":1.0, - "Grouping": { - "TableGroupingPolicy": "CombineCompatibleSchemas" + \\"Version\\":1.0, + \\"Grouping\\": { + \\"TableGroupingPolicy\\": \\"CombineCompatibleSchemas\\" } } \"\"\") @@ -1071,9 +1071,9 @@ def __init__(__self__, "delete_behavior": "LOG", }, configuration=\"\"\"{ - "Version":1.0, - "Grouping": { - "TableGroupingPolicy": "CombineCompatibleSchemas" + \\"Version\\":1.0, + \\"Grouping\\": { + \\"TableGroupingPolicy\\": \\"CombineCompatibleSchemas\\" } } \"\"\") diff --git a/sdk/python/pulumi_aws/imagebuilder/workflow.py b/sdk/python/pulumi_aws/imagebuilder/workflow.py index 43fdf71580c..879d4375854 100644 --- a/sdk/python/pulumi_aws/imagebuilder/workflow.py +++ b/sdk/python/pulumi_aws/imagebuilder/workflow.py @@ -465,19 +465,19 @@ def __init__(__self__, action: LaunchInstance onFailure: Abort inputs: - waitFor: "ssmAgent" + waitFor: \\"ssmAgent\\" - name: TerminateTestInstance action: TerminateInstance onFailure: Continue inputs: - instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId" + instanceId.$: \\"$.stepOutputs.LaunchTestInstance.instanceId\\" - name: WaitForActionAtEnd action: WaitForAction if: booleanEquals: true - value: "$.parameters.waitForActionAtEnd" + value: \\"$.parameters.waitForActionAtEnd\\" \"\"\") ``` @@ -548,19 +548,19 @@ def __init__(__self__, action: LaunchInstance onFailure: Abort inputs: - waitFor: "ssmAgent" + waitFor: \\"ssmAgent\\" - name: TerminateTestInstance action: TerminateInstance onFailure: Continue inputs: - instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId" + instanceId.$: \\"$.stepOutputs.LaunchTestInstance.instanceId\\" - name: WaitForActionAtEnd action: WaitForAction if: booleanEquals: true - value: "$.parameters.waitForActionAtEnd" + value: \\"$.parameters.waitForActionAtEnd\\" \"\"\") ``` diff --git a/sdk/python/pulumi_aws/iot/ca_certificate.py b/sdk/python/pulumi_aws/iot/ca_certificate.py index 9b5afa49799..28a6b756cdb 100644 --- a/sdk/python/pulumi_aws/iot/ca_certificate.py +++ b/sdk/python/pulumi_aws/iot/ca_certificate.py @@ -391,49 +391,6 @@ def __init__(__self__, ## Example Usage - ```python - import pulumi - import pulumi_aws as aws - import pulumi_tls as tls - - ca_private_key = tls.index.PrivateKey("ca", algorithm=RSA) - ca = tls.index.SelfSignedCert("ca", - private_key_pem=ca_private_key.private_key_pem, - subject=[{ - commonName: example.com, - organization: ACME Examples, Inc, - }], - validity_period_hours=12, - allowed_uses=[ - key_encipherment, - digital_signature, - server_auth, - ], - is_ca_certificate=True) - verification_private_key = tls.index.PrivateKey("verification", algorithm=RSA) - example = aws.iot.get_registration_code() - verification = tls.index.CertRequest("verification", - private_key_pem=verification_private_key.private_key_pem, - subject=[{ - commonName: example.registration_code, - }]) - verification_locally_signed_cert = tls.index.LocallySignedCert("verification", - cert_request_pem=verification.cert_request_pem, - ca_private_key_pem=ca_private_key.private_key_pem, - ca_cert_pem=ca.cert_pem, - validity_period_hours=12, - allowed_uses=[ - key_encipherment, - digital_signature, - server_auth, - ]) - example_ca_certificate = aws.iot.CaCertificate("example", - active=True, - ca_certificate_pem=ca["certPem"], - verification_certificate_pem=verification_locally_signed_cert["certPem"], - allow_auto_registration=True) - ``` - :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[_builtins.bool] active: Boolean flag to indicate if the certificate should be active for device authentication. @@ -457,49 +414,6 @@ def __init__(__self__, ## Example Usage - ```python - import pulumi - import pulumi_aws as aws - import pulumi_tls as tls - - ca_private_key = tls.index.PrivateKey("ca", algorithm=RSA) - ca = tls.index.SelfSignedCert("ca", - private_key_pem=ca_private_key.private_key_pem, - subject=[{ - commonName: example.com, - organization: ACME Examples, Inc, - }], - validity_period_hours=12, - allowed_uses=[ - key_encipherment, - digital_signature, - server_auth, - ], - is_ca_certificate=True) - verification_private_key = tls.index.PrivateKey("verification", algorithm=RSA) - example = aws.iot.get_registration_code() - verification = tls.index.CertRequest("verification", - private_key_pem=verification_private_key.private_key_pem, - subject=[{ - commonName: example.registration_code, - }]) - verification_locally_signed_cert = tls.index.LocallySignedCert("verification", - cert_request_pem=verification.cert_request_pem, - ca_private_key_pem=ca_private_key.private_key_pem, - ca_cert_pem=ca.cert_pem, - validity_period_hours=12, - allowed_uses=[ - key_encipherment, - digital_signature, - server_auth, - ]) - example_ca_certificate = aws.iot.CaCertificate("example", - active=True, - ca_certificate_pem=ca["certPem"], - verification_certificate_pem=verification_locally_signed_cert["certPem"], - allow_auto_registration=True) - ``` - :param str resource_name: The name of the resource. :param CaCertificateArgs args: The arguments to use to populate this resource's properties. :param pulumi.ResourceOptions opts: Options for the resource. diff --git a/sdk/python/pulumi_aws/iot/get_endpoint.py b/sdk/python/pulumi_aws/iot/get_endpoint.py index 8e17b9fa6a8..0bba07a835c 100644 --- a/sdk/python/pulumi_aws/iot/get_endpoint.py +++ b/sdk/python/pulumi_aws/iot/get_endpoint.py @@ -92,6 +92,28 @@ def get_endpoint(endpoint_type: Optional[_builtins.str] = None, ## Example Usage + ```python + import pulumi + import pulumi_aws as aws + import pulumi_kubernetes as kubernetes + + example = aws.iot.get_endpoint() + agent = kubernetes.index.Pod("agent", + metadata=[{ + name: my-device, + }], + spec=[{ + container: [{ + image: gcr.io/my-project/image-name, + name: image-name, + env: [{ + name: IOT_ENDPOINT, + value: example.endpoint_address, + }], + }], + }]) + ``` + :param _builtins.str endpoint_type: Endpoint type. Valid values: `iot:CredentialProvider`, `iot:Data`, `iot:Data-ATS`, `iot:Jobs`. :param _builtins.str region: Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration. @@ -115,6 +137,28 @@ def get_endpoint_output(endpoint_type: Optional[pulumi.Input[Optional[_builtins. ## Example Usage + ```python + import pulumi + import pulumi_aws as aws + import pulumi_kubernetes as kubernetes + + example = aws.iot.get_endpoint() + agent = kubernetes.index.Pod("agent", + metadata=[{ + name: my-device, + }], + spec=[{ + container: [{ + image: gcr.io/my-project/image-name, + name: image-name, + env: [{ + name: IOT_ENDPOINT, + value: example.endpoint_address, + }], + }], + }]) + ``` + :param _builtins.str endpoint_type: Endpoint type. Valid values: `iot:CredentialProvider`, `iot:Data`, `iot:Data-ATS`, `iot:Jobs`. :param _builtins.str region: Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration. diff --git a/sdk/python/pulumi_aws/iot/get_registration_code.py b/sdk/python/pulumi_aws/iot/get_registration_code.py index 21a3d50ff96..bc25b4758eb 100644 --- a/sdk/python/pulumi_aws/iot/get_registration_code.py +++ b/sdk/python/pulumi_aws/iot/get_registration_code.py @@ -77,21 +77,6 @@ def get_registration_code(region: Optional[_builtins.str] = None, ## Example Usage - ```python - import pulumi - import pulumi_aws as aws - import pulumi_tls as tls - - example = aws.iot.get_registration_code() - verification = tls.index.PrivateKey("verification", algorithm=RSA) - verification_cert_request = tls.index.CertRequest("verification", - key_algorithm=RSA, - private_key_pem=verification.private_key_pem, - subject=[{ - commonName: example.registration_code, - }]) - ``` - :param _builtins.str region: Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration. """ @@ -111,21 +96,6 @@ def get_registration_code_output(region: Optional[pulumi.Input[Optional[_builtin ## Example Usage - ```python - import pulumi - import pulumi_aws as aws - import pulumi_tls as tls - - example = aws.iot.get_registration_code() - verification = tls.index.PrivateKey("verification", algorithm=RSA) - verification_cert_request = tls.index.CertRequest("verification", - key_algorithm=RSA, - private_key_pem=verification.private_key_pem, - subject=[{ - commonName: example.registration_code, - }]) - ``` - :param _builtins.str region: Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration. """ diff --git a/sdk/python/pulumi_aws/kinesis/firehose_delivery_stream.py b/sdk/python/pulumi_aws/kinesis/firehose_delivery_stream.py index 4de86e494c0..239ca287444 100644 --- a/sdk/python/pulumi_aws/kinesis/firehose_delivery_stream.py +++ b/sdk/python/pulumi_aws/kinesis/firehose_delivery_stream.py @@ -1051,32 +1051,32 @@ def __init__(__self__, testClusterArn=test_cluster.arn, testClusterArn1=test_cluster.arn ).apply(lambda resolved_outputs: f\"\"\"{{ - "Version": "2012-10-17", - "Statement": [ + \\"Version\\": \\"2012-10-17\\", + \\"Statement\\": [ {{ - "Effect": "Allow", - "Action": [ - "es:*" + \\"Effect\\": \\"Allow\\", + \\"Action\\": [ + \\"es:*\\" ], - "Resource": [ - "{resolved_outputs['testClusterArn']}", - "{resolved_outputs['testClusterArn1']}/*" + \\"Resource\\": [ + \\"{resolved_outputs['testClusterArn']}\\", + \\"{resolved_outputs['testClusterArn1']}/*\\" ] }}, {{ - "Effect": "Allow", - "Action": [ - "ec2:DescribeVpcs", - "ec2:DescribeVpcAttribute", - "ec2:DescribeSubnets", - "ec2:DescribeSecurityGroups", - "ec2:DescribeNetworkInterfaces", - "ec2:CreateNetworkInterface", - "ec2:CreateNetworkInterfacePermission", - "ec2:DeleteNetworkInterface" + \\"Effect\\": \\"Allow\\", + \\"Action\\": [ + \\"ec2:DescribeVpcs\\", + \\"ec2:DescribeVpcAttribute\\", + \\"ec2:DescribeSubnets\\", + \\"ec2:DescribeSecurityGroups\\", + \\"ec2:DescribeNetworkInterfaces\\", + \\"ec2:CreateNetworkInterface\\", + \\"ec2:CreateNetworkInterfacePermission\\", + \\"ec2:DeleteNetworkInterface\\" ], - "Resource": [ - "*" + \\"Resource\\": [ + \\"*\\" ] }} ] @@ -1709,32 +1709,32 @@ def __init__(__self__, testClusterArn=test_cluster.arn, testClusterArn1=test_cluster.arn ).apply(lambda resolved_outputs: f\"\"\"{{ - "Version": "2012-10-17", - "Statement": [ + \\"Version\\": \\"2012-10-17\\", + \\"Statement\\": [ {{ - "Effect": "Allow", - "Action": [ - "es:*" + \\"Effect\\": \\"Allow\\", + \\"Action\\": [ + \\"es:*\\" ], - "Resource": [ - "{resolved_outputs['testClusterArn']}", - "{resolved_outputs['testClusterArn1']}/*" + \\"Resource\\": [ + \\"{resolved_outputs['testClusterArn']}\\", + \\"{resolved_outputs['testClusterArn1']}/*\\" ] }}, {{ - "Effect": "Allow", - "Action": [ - "ec2:DescribeVpcs", - "ec2:DescribeVpcAttribute", - "ec2:DescribeSubnets", - "ec2:DescribeSecurityGroups", - "ec2:DescribeNetworkInterfaces", - "ec2:CreateNetworkInterface", - "ec2:CreateNetworkInterfacePermission", - "ec2:DeleteNetworkInterface" + \\"Effect\\": \\"Allow\\", + \\"Action\\": [ + \\"ec2:DescribeVpcs\\", + \\"ec2:DescribeVpcAttribute\\", + \\"ec2:DescribeSubnets\\", + \\"ec2:DescribeSecurityGroups\\", + \\"ec2:DescribeNetworkInterfaces\\", + \\"ec2:CreateNetworkInterface\\", + \\"ec2:CreateNetworkInterfacePermission\\", + \\"ec2:DeleteNetworkInterface\\" ], - "Resource": [ - "*" + \\"Resource\\": [ + \\"*\\" ] }} ] diff --git a/sdk/python/pulumi_aws/kinesis/resource_policy.py b/sdk/python/pulumi_aws/kinesis/resource_policy.py index 4d197faa7ad..bf0aaaff627 100644 --- a/sdk/python/pulumi_aws/kinesis/resource_policy.py +++ b/sdk/python/pulumi_aws/kinesis/resource_policy.py @@ -149,21 +149,21 @@ def __init__(__self__, example = aws.kinesis.ResourcePolicy("example", resource_arn=example_aws_kinesis_stream["arn"], policy=f\"\"\"{{ - "Version": "2012-10-17", - "Id": "writePolicy", - "Statement": [{{ - "Sid": "writestatement", - "Effect": "Allow", - "Principal": {{ - "AWS": "123456789456" + \\"Version\\": \\"2012-10-17\\", + \\"Id\\": \\"writePolicy\\", + \\"Statement\\": [{{ + \\"Sid\\": \\"writestatement\\", + \\"Effect\\": \\"Allow\\", + \\"Principal\\": {{ + \\"AWS\\": \\"123456789456\\" }}, - "Action": [ - "kinesis:DescribeStreamSummary", - "kinesis:ListShards", - "kinesis:PutRecord", - "kinesis:PutRecords" + \\"Action\\": [ + \\"kinesis:DescribeStreamSummary\\", + \\"kinesis:ListShards\\", + \\"kinesis:PutRecord\\", + \\"kinesis:PutRecords\\" ], - "Resource": "{example_aws_kinesis_stream["arn"]}" + \\"Resource\\": \\"{example_aws_kinesis_stream["arn"]}\\" }}] }} \"\"\") @@ -208,21 +208,21 @@ def __init__(__self__, example = aws.kinesis.ResourcePolicy("example", resource_arn=example_aws_kinesis_stream["arn"], policy=f\"\"\"{{ - "Version": "2012-10-17", - "Id": "writePolicy", - "Statement": [{{ - "Sid": "writestatement", - "Effect": "Allow", - "Principal": {{ - "AWS": "123456789456" + \\"Version\\": \\"2012-10-17\\", + \\"Id\\": \\"writePolicy\\", + \\"Statement\\": [{{ + \\"Sid\\": \\"writestatement\\", + \\"Effect\\": \\"Allow\\", + \\"Principal\\": {{ + \\"AWS\\": \\"123456789456\\" }}, - "Action": [ - "kinesis:DescribeStreamSummary", - "kinesis:ListShards", - "kinesis:PutRecord", - "kinesis:PutRecords" + \\"Action\\": [ + \\"kinesis:DescribeStreamSummary\\", + \\"kinesis:ListShards\\", + \\"kinesis:PutRecord\\", + \\"kinesis:PutRecords\\" ], - "Resource": "{example_aws_kinesis_stream["arn"]}" + \\"Resource\\": \\"{example_aws_kinesis_stream["arn"]}\\" }}] }} \"\"\") diff --git a/sdk/python/pulumi_aws/kms/ciphertext.py b/sdk/python/pulumi_aws/kms/ciphertext.py index 5b44efc46ea..552b16426a1 100644 --- a/sdk/python/pulumi_aws/kms/ciphertext.py +++ b/sdk/python/pulumi_aws/kms/ciphertext.py @@ -203,8 +203,8 @@ def __init__(__self__, oauth = aws.kms.Ciphertext("oauth", key_id=oauth_config.key_id, plaintext=\"\"\"{ - "client_id": "e587dbae22222f55da22", - "client_secret": "8289575d00000ace55e1815ec13673955721b8a5" + \\"client_id\\": \\"e587dbae22222f55da22\\", + \\"client_secret\\": \\"8289575d00000ace55e1815ec13673955721b8a5\\" } \"\"\") ``` @@ -240,8 +240,8 @@ def __init__(__self__, oauth = aws.kms.Ciphertext("oauth", key_id=oauth_config.key_id, plaintext=\"\"\"{ - "client_id": "e587dbae22222f55da22", - "client_secret": "8289575d00000ace55e1815ec13673955721b8a5" + \\"client_id\\": \\"e587dbae22222f55da22\\", + \\"client_secret\\": \\"8289575d00000ace55e1815ec13673955721b8a5\\" } \"\"\") ``` diff --git a/sdk/python/pulumi_aws/kms/get_cipher_text.py b/sdk/python/pulumi_aws/kms/get_cipher_text.py index 1d387a18170..a7aa80fcb92 100644 --- a/sdk/python/pulumi_aws/kms/get_cipher_text.py +++ b/sdk/python/pulumi_aws/kms/get_cipher_text.py @@ -119,8 +119,8 @@ def get_cipher_text(context: Optional[Mapping[str, _builtins.str]] = None, is_enabled=True) oauth = aws.kms.get_cipher_text_output(key_id=oauth_config.key_id, plaintext=\"\"\"{ - "client_id": "e587dbae22222f55da22", - "client_secret": "8289575d00000ace55e1815ec13673955721b8a5" + \\"client_id\\": \\"e587dbae22222f55da22\\", + \\"client_secret\\": \\"8289575d00000ace55e1815ec13673955721b8a5\\" } \"\"\") ``` @@ -168,8 +168,8 @@ def get_cipher_text_output(context: Optional[pulumi.Input[Optional[Mapping[str, is_enabled=True) oauth = aws.kms.get_cipher_text_output(key_id=oauth_config.key_id, plaintext=\"\"\"{ - "client_id": "e587dbae22222f55da22", - "client_secret": "8289575d00000ace55e1815ec13673955721b8a5" + \\"client_id\\": \\"e587dbae22222f55da22\\", + \\"client_secret\\": \\"8289575d00000ace55e1815ec13673955721b8a5\\" } \"\"\") ``` diff --git a/sdk/python/pulumi_aws/lambda_/get_code_signing_config.py b/sdk/python/pulumi_aws/lambda_/get_code_signing_config.py index 20e91fd008e..78582c44197 100644 --- a/sdk/python/pulumi_aws/lambda_/get_code_signing_config.py +++ b/sdk/python/pulumi_aws/lambda_/get_code_signing_config.py @@ -174,6 +174,35 @@ def get_code_signing_config(arn: Optional[_builtins.str] = None, }) ``` + ### Validate Signing Profiles + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + example = aws.lambda.get_code_signing_config(arn=code_signing_config_arn) + allowed_profiles = example.allowed_publishers[0].signing_profile_version_arns + required_profile = "arn:aws:signer:us-west-2:123456789012:/signing-profiles/MyProfile" + profile_allowed = std.contains(input=allowed_profiles, + element=required_profile).result + # Conditional resource creation based on signing profile validation + conditional = [] + for range in [{"value": i} for i in range(0, 1 if profile_allowed else 0)]: + conditional.append(aws.lambda_.Function(f"conditional-{range['value']}", + code=pulumi.FileArchive("function.zip"), + name="conditional-function", + role=lambda_role["arn"], + handler="index.handler", + runtime=aws.lambda_.Runtime.PYTHON3D12, + code_signing_config_arn=example.arn)) + pulumi.export("deploymentStatus", { + "profileAllowed": profile_allowed, + "functionCreated": profile_allowed, + "message": "Function deployed with valid signing profile" if profile_allowed else "Deployment blocked - signing profile not allowed", + }) + ``` + ### Multi-Environment Configuration ```python @@ -261,6 +290,35 @@ def get_code_signing_config_output(arn: Optional[pulumi.Input[_builtins.str]] = }) ``` + ### Validate Signing Profiles + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + example = aws.lambda.get_code_signing_config(arn=code_signing_config_arn) + allowed_profiles = example.allowed_publishers[0].signing_profile_version_arns + required_profile = "arn:aws:signer:us-west-2:123456789012:/signing-profiles/MyProfile" + profile_allowed = std.contains(input=allowed_profiles, + element=required_profile).result + # Conditional resource creation based on signing profile validation + conditional = [] + for range in [{"value": i} for i in range(0, 1 if profile_allowed else 0)]: + conditional.append(aws.lambda_.Function(f"conditional-{range['value']}", + code=pulumi.FileArchive("function.zip"), + name="conditional-function", + role=lambda_role["arn"], + handler="index.handler", + runtime=aws.lambda_.Runtime.PYTHON3D12, + code_signing_config_arn=example.arn)) + pulumi.export("deploymentStatus", { + "profileAllowed": profile_allowed, + "functionCreated": profile_allowed, + "message": "Function deployed with valid signing profile" if profile_allowed else "Deployment blocked - signing profile not allowed", + }) + ``` + ### Multi-Environment Configuration ```python diff --git a/sdk/python/pulumi_aws/lambda_/get_invocation.py b/sdk/python/pulumi_aws/lambda_/get_invocation.py index 808470d19c6..0cfd9530e2e 100644 --- a/sdk/python/pulumi_aws/lambda_/get_invocation.py +++ b/sdk/python/pulumi_aws/lambda_/get_invocation.py @@ -113,6 +113,49 @@ def get_invocation(function_name: Optional[_builtins.str] = None, ## Example Usage + ### Basic Invocation + + ```python + import pulumi + import json + import pulumi_aws as aws + import pulumi_std as std + + example = aws.lambda.get_invocation(function_name=example_aws_lambda_function["functionName"], + input=json.dumps({ + "operation": "getStatus", + "id": "123456", + })) + pulumi.export("result", std.jsondecode(input=example.result).result) + ``` + + ### Dynamic Resource Configuration + + ```python + import pulumi + import json + import pulumi_aws as aws + import pulumi_std as std + + # Get resource configuration from Lambda + resource_config = aws.lambda.get_invocation(function_name="resource-config-generator", + qualifier="production", + input=json.dumps({ + "environment": environment, + "region": current["region"], + "service": "api", + })) + config = std.jsondecode(input=resource_config.result).result + # Use dynamic configuration + example = aws.elasticache.Cluster("example", + cluster_id=config["cache"]["clusterId"], + engine=config["cache"]["engine"], + node_type=config["cache"]["nodeType"], + num_cache_nodes=config["cache"]["nodes"], + parameter_group_name=config["cache"]["parameterGroup"], + tags=config["tags"]) + ``` + :param _builtins.str function_name: Name of the Lambda function. :param _builtins.str input: String in JSON format that is passed as payload to the Lambda function. @@ -152,6 +195,49 @@ def get_invocation_output(function_name: Optional[pulumi.Input[_builtins.str]] = ## Example Usage + ### Basic Invocation + + ```python + import pulumi + import json + import pulumi_aws as aws + import pulumi_std as std + + example = aws.lambda.get_invocation(function_name=example_aws_lambda_function["functionName"], + input=json.dumps({ + "operation": "getStatus", + "id": "123456", + })) + pulumi.export("result", std.jsondecode(input=example.result).result) + ``` + + ### Dynamic Resource Configuration + + ```python + import pulumi + import json + import pulumi_aws as aws + import pulumi_std as std + + # Get resource configuration from Lambda + resource_config = aws.lambda.get_invocation(function_name="resource-config-generator", + qualifier="production", + input=json.dumps({ + "environment": environment, + "region": current["region"], + "service": "api", + })) + config = std.jsondecode(input=resource_config.result).result + # Use dynamic configuration + example = aws.elasticache.Cluster("example", + cluster_id=config["cache"]["clusterId"], + engine=config["cache"]["engine"], + node_type=config["cache"]["nodeType"], + num_cache_nodes=config["cache"]["nodes"], + parameter_group_name=config["cache"]["parameterGroup"], + tags=config["tags"]) + ``` + :param _builtins.str function_name: Name of the Lambda function. :param _builtins.str input: String in JSON format that is passed as payload to the Lambda function. diff --git a/sdk/python/pulumi_aws/lambda_/invocation.py b/sdk/python/pulumi_aws/lambda_/invocation.py index 566d5c43f1d..f9726e98234 100644 --- a/sdk/python/pulumi_aws/lambda_/invocation.py +++ b/sdk/python/pulumi_aws/lambda_/invocation.py @@ -293,6 +293,34 @@ def __init__(__self__, ## Example Usage + ### Basic Invocation + + ```python + import pulumi + import json + import pulumi_aws as aws + import pulumi_std as std + + # Lambda function to invoke + example = aws.lambda_.Function("example", + code=pulumi.FileArchive("function.zip"), + name="data_processor", + role=lambda_role["arn"], + handler="index.handler", + runtime=aws.lambda_.Runtime.PYTHON3D12) + # Invoke the function once during resource creation + example_invocation = aws.lambda_.Invocation("example", + function_name=example.name, + input=json.dumps({ + "operation": "initialize", + "config": { + "environment": "production", + "debug": False, + }, + })) + pulumi.export("initializationResult", std.jsondecode_output(input=example_invocation.result).apply(lambda invoke: invoke.result["status"])) + ``` + ### Dynamic Invocation with Triggers ```python @@ -376,6 +404,34 @@ def __init__(__self__, ## Example Usage + ### Basic Invocation + + ```python + import pulumi + import json + import pulumi_aws as aws + import pulumi_std as std + + # Lambda function to invoke + example = aws.lambda_.Function("example", + code=pulumi.FileArchive("function.zip"), + name="data_processor", + role=lambda_role["arn"], + handler="index.handler", + runtime=aws.lambda_.Runtime.PYTHON3D12) + # Invoke the function once during resource creation + example_invocation = aws.lambda_.Invocation("example", + function_name=example.name, + input=json.dumps({ + "operation": "initialize", + "config": { + "environment": "production", + "debug": False, + }, + })) + pulumi.export("initializationResult", std.jsondecode_output(input=example_invocation.result).apply(lambda invoke: invoke.result["status"])) + ``` + ### Dynamic Invocation with Triggers ```python diff --git a/sdk/python/pulumi_aws/m2/application.py b/sdk/python/pulumi_aws/m2/application.py index eccc8f7d18f..000876d5d09 100644 --- a/sdk/python/pulumi_aws/m2/application.py +++ b/sdk/python/pulumi_aws/m2/application.py @@ -417,28 +417,28 @@ def __init__(__self__, engine_type="bluage", definition={ "content": f\"\"\"{{ - "definition": {{ - "listeners": [ + \\"definition\\": {{ + \\"listeners\\": [ {{ - "port": 8196, - "type": "http" + \\"port\\": 8196, + \\"type\\": \\"http\\" }} ], - "ba-application": {{ - "app-location": "{s3_source}/PlanetsDemo-v1.zip" + \\"ba-application\\": {{ + \\"app-location\\": \\"{s3_source}/PlanetsDemo-v1.zip\\" }} }}, - "source-locations": [ + \\"source-locations\\": [ {{ - "source-id": "s3-source", - "source-type": "s3", - "properties": {{ - "s3-bucket": "example-bucket", - "s3-key-prefix": "v1" + \\"source-id\\": \\"s3-source\\", + \\"source-type\\": \\"s3\\", + \\"properties\\": {{ + \\"s3-bucket\\": \\"example-bucket\\", + \\"s3-key-prefix\\": \\"v1\\" }} }} ], - "template-version": "2.0" + \\"template-version\\": \\"2.0\\" }} \"\"\", @@ -488,28 +488,28 @@ def __init__(__self__, engine_type="bluage", definition={ "content": f\"\"\"{{ - "definition": {{ - "listeners": [ + \\"definition\\": {{ + \\"listeners\\": [ {{ - "port": 8196, - "type": "http" + \\"port\\": 8196, + \\"type\\": \\"http\\" }} ], - "ba-application": {{ - "app-location": "{s3_source}/PlanetsDemo-v1.zip" + \\"ba-application\\": {{ + \\"app-location\\": \\"{s3_source}/PlanetsDemo-v1.zip\\" }} }}, - "source-locations": [ + \\"source-locations\\": [ {{ - "source-id": "s3-source", - "source-type": "s3", - "properties": {{ - "s3-bucket": "example-bucket", - "s3-key-prefix": "v1" + \\"source-id\\": \\"s3-source\\", + \\"source-type\\": \\"s3\\", + \\"properties\\": {{ + \\"s3-bucket\\": \\"example-bucket\\", + \\"s3-key-prefix\\": \\"v1\\" }} }} ], - "template-version": "2.0" + \\"template-version\\": \\"2.0\\" }} \"\"\", diff --git a/sdk/python/pulumi_aws/mq/configuration.py b/sdk/python/pulumi_aws/mq/configuration.py index 2410fe19f9c..563e76c3f74 100644 --- a/sdk/python/pulumi_aws/mq/configuration.py +++ b/sdk/python/pulumi_aws/mq/configuration.py @@ -372,12 +372,12 @@ def __init__(__self__, name="example", engine_type="ActiveMQ", engine_version="5.17.6", - data=\"\"\" - + data=\"\"\" + - + - + \"\"\") @@ -442,12 +442,12 @@ def __init__(__self__, name="example", engine_type="ActiveMQ", engine_version="5.17.6", - data=\"\"\" - + data=\"\"\" + - + - + \"\"\") diff --git a/sdk/python/pulumi_aws/networkmanager/site_to_site_vpn_attachment.py b/sdk/python/pulumi_aws/networkmanager/site_to_site_vpn_attachment.py index be35579d14d..761fec4dcc8 100644 --- a/sdk/python/pulumi_aws/networkmanager/site_to_site_vpn_attachment.py +++ b/sdk/python/pulumi_aws/networkmanager/site_to_site_vpn_attachment.py @@ -320,6 +320,75 @@ def __init__(__self__, vpn_connection_arn=example_aws_vpn_connection["arn"]) ``` + ### Full Usage + + ```python + import pulumi + import json + import pulumi_aws as aws + import pulumi_awscc as awscc + import pulumi_std as std + + test_customer_gateway = aws.ec2.CustomerGateway("test", + bgp_asn="65000", + ip_address="172.0.0.1", + type="ipsec.1") + test_vpn_connection = aws.ec2.VpnConnection("test", + customer_gateway_id=test_customer_gateway.id, + type="ipsec.1", + tags={ + "Name": "test", + }) + test_global_network = aws.networkmanager.GlobalNetwork("test", tags={ + "Name": "test", + }) + test = aws.networkmanager.get_core_network_policy_document(core_network_configurations=[{ + "vpn_ecmp_support": False, + "asn_ranges": ["64512-64555"], + "edge_locations": [{ + "location": current["region"], + "asn": "64512", + }], + }], + segments=[{ + "name": "shared", + "description": "SegmentForSharedServices", + "require_attachment_acceptance": True, + }], + segment_actions=[{ + "action": "share", + "mode": "attachment-route", + "segment": "shared", + "share_withs": ["*"], + }], + attachment_policies=[{ + "rule_number": 1, + "condition_logic": "or", + "conditions": [{ + "type": "tag-value", + "operator": "equals", + "key": "segment", + "value": "shared", + }], + "action": { + "association_method": "constant", + "segment": "shared", + }, + }]) + test_networkmanager_core_network = awscc.index.NetworkmanagerCoreNetwork("test", + global_network_id=test_global_network.id, + policy_document=json.dumps(std.jsondecode(input=test.json).result)) + test_site_to_site_vpn_attachment = aws.networkmanager.SiteToSiteVpnAttachment("test", + core_network_id=test_networkmanager_core_network["id"], + vpn_connection_arn=test_vpn_connection.arn, + tags={ + "segment": "shared", + }) + test_attachment_accepter = aws.networkmanager.AttachmentAccepter("test", + attachment_id=test_site_to_site_vpn_attachment.id, + attachment_type=test_site_to_site_vpn_attachment.attachment_type) + ``` + ## Import Using `pulumi import`, import `aws_networkmanager_site_to_site_vpn_attachment` using the attachment ID. For example: @@ -358,6 +427,75 @@ def __init__(__self__, vpn_connection_arn=example_aws_vpn_connection["arn"]) ``` + ### Full Usage + + ```python + import pulumi + import json + import pulumi_aws as aws + import pulumi_awscc as awscc + import pulumi_std as std + + test_customer_gateway = aws.ec2.CustomerGateway("test", + bgp_asn="65000", + ip_address="172.0.0.1", + type="ipsec.1") + test_vpn_connection = aws.ec2.VpnConnection("test", + customer_gateway_id=test_customer_gateway.id, + type="ipsec.1", + tags={ + "Name": "test", + }) + test_global_network = aws.networkmanager.GlobalNetwork("test", tags={ + "Name": "test", + }) + test = aws.networkmanager.get_core_network_policy_document(core_network_configurations=[{ + "vpn_ecmp_support": False, + "asn_ranges": ["64512-64555"], + "edge_locations": [{ + "location": current["region"], + "asn": "64512", + }], + }], + segments=[{ + "name": "shared", + "description": "SegmentForSharedServices", + "require_attachment_acceptance": True, + }], + segment_actions=[{ + "action": "share", + "mode": "attachment-route", + "segment": "shared", + "share_withs": ["*"], + }], + attachment_policies=[{ + "rule_number": 1, + "condition_logic": "or", + "conditions": [{ + "type": "tag-value", + "operator": "equals", + "key": "segment", + "value": "shared", + }], + "action": { + "association_method": "constant", + "segment": "shared", + }, + }]) + test_networkmanager_core_network = awscc.index.NetworkmanagerCoreNetwork("test", + global_network_id=test_global_network.id, + policy_document=json.dumps(std.jsondecode(input=test.json).result)) + test_site_to_site_vpn_attachment = aws.networkmanager.SiteToSiteVpnAttachment("test", + core_network_id=test_networkmanager_core_network["id"], + vpn_connection_arn=test_vpn_connection.arn, + tags={ + "segment": "shared", + }) + test_attachment_accepter = aws.networkmanager.AttachmentAccepter("test", + attachment_id=test_site_to_site_vpn_attachment.id, + attachment_type=test_site_to_site_vpn_attachment.attachment_type) + ``` + ## Import Using `pulumi import`, import `aws_networkmanager_site_to_site_vpn_attachment` using the attachment ID. For example: diff --git a/sdk/python/pulumi_aws/opensearchingest/pipeline.py b/sdk/python/pulumi_aws/opensearchingest/pipeline.py index 8907b93b809..5d5068f692e 100644 --- a/sdk/python/pulumi_aws/opensearchingest/pipeline.py +++ b/sdk/python/pulumi_aws/opensearchingest/pipeline.py @@ -470,19 +470,19 @@ def __init__(__self__, })) example_pipeline = aws.opensearchingest.Pipeline("example", pipeline_name="example", - pipeline_configuration_body=example.arn.apply(lambda arn: f\"\"\"version: "2" + pipeline_configuration_body=example.arn.apply(lambda arn: f\"\"\"version: \\"2\\" example-pipeline: source: http: - path: "/example" + path: \\"/example\\" sink: - s3: aws: - sts_role_arn: "{arn}" - region: "{current.region}" - bucket: "example" + sts_role_arn: \\"{arn}\\" + region: \\"{current.region}\\" + bucket: \\"example\\" threshold: - event_collect_timeout: "60s" + event_collect_timeout: \\"60s\\" codec: ndjson: \"\"\"), @@ -559,19 +559,19 @@ def __init__(__self__, })) example_pipeline = aws.opensearchingest.Pipeline("example", pipeline_name="example", - pipeline_configuration_body=example.arn.apply(lambda arn: f\"\"\"version: "2" + pipeline_configuration_body=example.arn.apply(lambda arn: f\"\"\"version: \\"2\\" example-pipeline: source: http: - path: "/example" + path: \\"/example\\" sink: - s3: aws: - sts_role_arn: "{arn}" - region: "{current.region}" - bucket: "example" + sts_role_arn: \\"{arn}\\" + region: \\"{current.region}\\" + bucket: \\"example\\" threshold: - event_collect_timeout: "60s" + event_collect_timeout: \\"60s\\" codec: ndjson: \"\"\"), diff --git a/sdk/python/pulumi_aws/organizations/get_policies.py b/sdk/python/pulumi_aws/organizations/get_policies.py index f8c28bb77fa..0b395b3bf28 100644 --- a/sdk/python/pulumi_aws/organizations/get_policies.py +++ b/sdk/python/pulumi_aws/organizations/get_policies.py @@ -77,6 +77,17 @@ def get_policies(filter: Optional[_builtins.str] = None, ## Example Usage + ### Basic Usage + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + example = aws.organizations.get_policies(filter="SERVICE_CONTROL_POLICY") + example_get_policy = {__key: aws.organizations.get_policy(policy_id=__value) for __key, __value in std.toset(input=example.ids).result} + ``` + :param _builtins.str filter: The type of policies to be returned in the response. Valid values are `AISERVICES_OPT_OUT_POLICY | BACKUP_POLICY | RESOURCE_CONTROL_POLICY | SERVICE_CONTROL_POLICY | TAG_POLICY` """ @@ -96,6 +107,17 @@ def get_policies_output(filter: Optional[pulumi.Input[_builtins.str]] = None, ## Example Usage + ### Basic Usage + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + example = aws.organizations.get_policies(filter="SERVICE_CONTROL_POLICY") + example_get_policy = {__key: aws.organizations.get_policy(policy_id=__value) for __key, __value in std.toset(input=example.ids).result} + ``` + :param _builtins.str filter: The type of policies to be returned in the response. Valid values are `AISERVICES_OPT_OUT_POLICY | BACKUP_POLICY | RESOURCE_CONTROL_POLICY | SERVICE_CONTROL_POLICY | TAG_POLICY` """ diff --git a/sdk/python/pulumi_aws/organizations/get_policies_for_target.py b/sdk/python/pulumi_aws/organizations/get_policies_for_target.py index 3c61b31c41f..960d5e35c62 100644 --- a/sdk/python/pulumi_aws/organizations/get_policies_for_target.py +++ b/sdk/python/pulumi_aws/organizations/get_policies_for_target.py @@ -87,6 +87,19 @@ def get_policies_for_target(filter: Optional[_builtins.str] = None, ## Example Usage + ### Basic Usage + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + example = aws.organizations.get_organization() + example_get_policies_for_target = aws.organizations.get_policies_for_target(target_id=example.roots[0].id, + filter="SERVICE_CONTROL_POLICY") + example_get_policy = {__key: aws.organizations.get_policy(policy_id=__value) for __key, __value in std.toset(input=example_get_policies_for_target.ids).result} + ``` + :param _builtins.str filter: Must supply one of the 5 different policy filters for a target (AISERVICES_OPT_OUT_POLICY | BACKUP_POLICY | RESOURCE_CONTROL_POLICY | SERVICE_CONTROL_POLICY | TAG_POLICY) :param _builtins.str target_id: The root (string that begins with "r-" followed by 4-32 lowercase letters or digits), account (12 digit string), or Organizational Unit (string starting with "ou-" followed by 4-32 lowercase letters or digits. This string is followed by a second "-" dash and from 8-32 additional lowercase letters or digits.) @@ -110,6 +123,19 @@ def get_policies_for_target_output(filter: Optional[pulumi.Input[_builtins.str]] ## Example Usage + ### Basic Usage + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + example = aws.organizations.get_organization() + example_get_policies_for_target = aws.organizations.get_policies_for_target(target_id=example.roots[0].id, + filter="SERVICE_CONTROL_POLICY") + example_get_policy = {__key: aws.organizations.get_policy(policy_id=__value) for __key, __value in std.toset(input=example_get_policies_for_target.ids).result} + ``` + :param _builtins.str filter: Must supply one of the 5 different policy filters for a target (AISERVICES_OPT_OUT_POLICY | BACKUP_POLICY | RESOURCE_CONTROL_POLICY | SERVICE_CONTROL_POLICY | TAG_POLICY) :param _builtins.str target_id: The root (string that begins with "r-" followed by 4-32 lowercase letters or digits), account (12 digit string), or Organizational Unit (string starting with "ou-" followed by 4-32 lowercase letters or digits. This string is followed by a second "-" dash and from 8-32 additional lowercase letters or digits.) diff --git a/sdk/python/pulumi_aws/organizations/resource_policy.py b/sdk/python/pulumi_aws/organizations/resource_policy.py index c0fd90b5870..3f7a497a5d5 100644 --- a/sdk/python/pulumi_aws/organizations/resource_policy.py +++ b/sdk/python/pulumi_aws/organizations/resource_policy.py @@ -146,32 +146,32 @@ def __init__(__self__, import pulumi_aws as aws example = aws.organizations.ResourcePolicy("example", content=\"\"\"{ - "Version": "2012-10-17", - "Statement": [ + \\"Version\\": \\"2012-10-17\\", + \\"Statement\\": [ { - "Sid": "DelegatingNecessaryDescribeListActions", - "Effect": "Allow", - "Principal": { - "AWS": "arn:aws:iam::123456789012:root" + \\"Sid\\": \\"DelegatingNecessaryDescribeListActions\\", + \\"Effect\\": \\"Allow\\", + \\"Principal\\": { + \\"AWS\\": \\"arn:aws:iam::123456789012:root\\" }, - "Action": [ - "organizations:DescribeOrganization", - "organizations:DescribeOrganizationalUnit", - "organizations:DescribeAccount", - "organizations:DescribePolicy", - "organizations:DescribeEffectivePolicy", - "organizations:ListRoots", - "organizations:ListOrganizationalUnitsForParent", - "organizations:ListParents", - "organizations:ListChildren", - "organizations:ListAccounts", - "organizations:ListAccountsForParent", - "organizations:ListPolicies", - "organizations:ListPoliciesForTarget", - "organizations:ListTargetsForPolicy", - "organizations:ListTagsForResource" + \\"Action\\": [ + \\"organizations:DescribeOrganization\\", + \\"organizations:DescribeOrganizationalUnit\\", + \\"organizations:DescribeAccount\\", + \\"organizations:DescribePolicy\\", + \\"organizations:DescribeEffectivePolicy\\", + \\"organizations:ListRoots\\", + \\"organizations:ListOrganizationalUnitsForParent\\", + \\"organizations:ListParents\\", + \\"organizations:ListChildren\\", + \\"organizations:ListAccounts\\", + \\"organizations:ListAccountsForParent\\", + \\"organizations:ListPolicies\\", + \\"organizations:ListPoliciesForTarget\\", + \\"organizations:ListTargetsForPolicy\\", + \\"organizations:ListTagsForResource\\" ], - "Resource": "*" + \\"Resource\\": \\"*\\" } ] } @@ -207,32 +207,32 @@ def __init__(__self__, import pulumi_aws as aws example = aws.organizations.ResourcePolicy("example", content=\"\"\"{ - "Version": "2012-10-17", - "Statement": [ + \\"Version\\": \\"2012-10-17\\", + \\"Statement\\": [ { - "Sid": "DelegatingNecessaryDescribeListActions", - "Effect": "Allow", - "Principal": { - "AWS": "arn:aws:iam::123456789012:root" + \\"Sid\\": \\"DelegatingNecessaryDescribeListActions\\", + \\"Effect\\": \\"Allow\\", + \\"Principal\\": { + \\"AWS\\": \\"arn:aws:iam::123456789012:root\\" }, - "Action": [ - "organizations:DescribeOrganization", - "organizations:DescribeOrganizationalUnit", - "organizations:DescribeAccount", - "organizations:DescribePolicy", - "organizations:DescribeEffectivePolicy", - "organizations:ListRoots", - "organizations:ListOrganizationalUnitsForParent", - "organizations:ListParents", - "organizations:ListChildren", - "organizations:ListAccounts", - "organizations:ListAccountsForParent", - "organizations:ListPolicies", - "organizations:ListPoliciesForTarget", - "organizations:ListTargetsForPolicy", - "organizations:ListTagsForResource" + \\"Action\\": [ + \\"organizations:DescribeOrganization\\", + \\"organizations:DescribeOrganizationalUnit\\", + \\"organizations:DescribeAccount\\", + \\"organizations:DescribePolicy\\", + \\"organizations:DescribeEffectivePolicy\\", + \\"organizations:ListRoots\\", + \\"organizations:ListOrganizationalUnitsForParent\\", + \\"organizations:ListParents\\", + \\"organizations:ListChildren\\", + \\"organizations:ListAccounts\\", + \\"organizations:ListAccountsForParent\\", + \\"organizations:ListPolicies\\", + \\"organizations:ListPoliciesForTarget\\", + \\"organizations:ListTargetsForPolicy\\", + \\"organizations:ListTagsForResource\\" ], - "Resource": "*" + \\"Resource\\": \\"*\\" } ] } diff --git a/sdk/python/pulumi_aws/rds/custom_db_engine_version.py b/sdk/python/pulumi_aws/rds/custom_db_engine_version.py index 580a31b49fd..083428e0109 100644 --- a/sdk/python/pulumi_aws/rds/custom_db_engine_version.py +++ b/sdk/python/pulumi_aws/rds/custom_db_engine_version.py @@ -597,7 +597,7 @@ def __init__(__self__, engine_version="19.cdb_cev1", kms_key_id=example.arn, manifest=\"\"\" { - \\x09"databaseInstallationFileNames":["V982063-01.zip"] + \\t\\"databaseInstallationFileNames\\":[\\"V982063-01.zip\\"] } \"\"\", tags={ @@ -708,7 +708,7 @@ def __init__(__self__, engine_version="19.cdb_cev1", kms_key_id=example.arn, manifest=\"\"\" { - \\x09"databaseInstallationFileNames":["V982063-01.zip"] + \\t\\"databaseInstallationFileNames\\":[\\"V982063-01.zip\\"] } \"\"\", tags={ diff --git a/sdk/python/pulumi_aws/resourcegroups/group.py b/sdk/python/pulumi_aws/resourcegroups/group.py index f4abca97f77..b340744c33e 100644 --- a/sdk/python/pulumi_aws/resourcegroups/group.py +++ b/sdk/python/pulumi_aws/resourcegroups/group.py @@ -284,13 +284,13 @@ def __init__(__self__, name="test-group", resource_query={ "query": \"\"\"{ - "ResourceTypeFilters": [ - "AWS::EC2::Instance" + \\"ResourceTypeFilters\\": [ + \\"AWS::EC2::Instance\\" ], - "TagFilters": [ + \\"TagFilters\\": [ { - "Key": "Stage", - "Values": ["Test"] + \\"Key\\": \\"Stage\\", + \\"Values\\": [\\"Test\\"] } ] } @@ -334,13 +334,13 @@ def __init__(__self__, name="test-group", resource_query={ "query": \"\"\"{ - "ResourceTypeFilters": [ - "AWS::EC2::Instance" + \\"ResourceTypeFilters\\": [ + \\"AWS::EC2::Instance\\" ], - "TagFilters": [ + \\"TagFilters\\": [ { - "Key": "Stage", - "Values": ["Test"] + \\"Key\\": \\"Stage\\", + \\"Values\\": [\\"Test\\"] } ] } diff --git a/sdk/python/pulumi_aws/route53/traffic_policy.py b/sdk/python/pulumi_aws/route53/traffic_policy.py index 8e5f911e2c6..4ea0b34f405 100644 --- a/sdk/python/pulumi_aws/route53/traffic_policy.py +++ b/sdk/python/pulumi_aws/route53/traffic_policy.py @@ -206,15 +206,15 @@ def __init__(__self__, name="example", comment="example comment", document=\"\"\"{ - "AWSPolicyFormatVersion": "2015-10-01", - "RecordType": "A", - "Endpoints": { - "endpoint-start-NkPh": { - "Type": "value", - "Value": "10.0.0.2" + \\"AWSPolicyFormatVersion\\": \\"2015-10-01\\", + \\"RecordType\\": \\"A\\", + \\"Endpoints\\": { + \\"endpoint-start-NkPh\\": { + \\"Type\\": \\"value\\", + \\"Value\\": \\"10.0.0.2\\" } }, - "StartEndpoint": "endpoint-start-NkPh" + \\"StartEndpoint\\": \\"endpoint-start-NkPh\\" } \"\"\") ``` @@ -254,15 +254,15 @@ def __init__(__self__, name="example", comment="example comment", document=\"\"\"{ - "AWSPolicyFormatVersion": "2015-10-01", - "RecordType": "A", - "Endpoints": { - "endpoint-start-NkPh": { - "Type": "value", - "Value": "10.0.0.2" + \\"AWSPolicyFormatVersion\\": \\"2015-10-01\\", + \\"RecordType\\": \\"A\\", + \\"Endpoints\\": { + \\"endpoint-start-NkPh\\": { + \\"Type\\": \\"value\\", + \\"Value\\": \\"10.0.0.2\\" } }, - "StartEndpoint": "endpoint-start-NkPh" + \\"StartEndpoint\\": \\"endpoint-start-NkPh\\" } \"\"\") ``` diff --git a/sdk/python/pulumi_aws/s3/bucket_website_configuration.py b/sdk/python/pulumi_aws/s3/bucket_website_configuration.py index d7f62a02042..f424d4c17d7 100644 --- a/sdk/python/pulumi_aws/s3/bucket_website_configuration.py +++ b/sdk/python/pulumi_aws/s3/bucket_website_configuration.py @@ -386,11 +386,11 @@ def __init__(__self__, "key": "error.html", }, routing_rule_details=\"\"\"[{ - "Condition": { - "KeyPrefixEquals": "docs/" + \\"Condition\\": { + \\"KeyPrefixEquals\\": \\"docs/\\" }, - "Redirect": { - "ReplaceKeyPrefixWith": "" + \\"Redirect\\": { + \\"ReplaceKeyPrefixWith\\": \\"\\" } }] \"\"\") @@ -502,11 +502,11 @@ def __init__(__self__, "key": "error.html", }, routing_rule_details=\"\"\"[{ - "Condition": { - "KeyPrefixEquals": "docs/" + \\"Condition\\": { + \\"KeyPrefixEquals\\": \\"docs/\\" }, - "Redirect": { - "ReplaceKeyPrefixWith": "" + \\"Redirect\\": { + \\"ReplaceKeyPrefixWith\\": \\"\\" } }] \"\"\") diff --git a/sdk/python/pulumi_aws/s3/bucket_website_configuration_v2.py b/sdk/python/pulumi_aws/s3/bucket_website_configuration_v2.py index b16093cd104..fae9d2468d9 100644 --- a/sdk/python/pulumi_aws/s3/bucket_website_configuration_v2.py +++ b/sdk/python/pulumi_aws/s3/bucket_website_configuration_v2.py @@ -391,11 +391,11 @@ def __init__(__self__, "key": "error.html", }, routing_rule_details=\"\"\"[{ - "Condition": { - "KeyPrefixEquals": "docs/" + \\"Condition\\": { + \\"KeyPrefixEquals\\": \\"docs/\\" }, - "Redirect": { - "ReplaceKeyPrefixWith": "" + \\"Redirect\\": { + \\"ReplaceKeyPrefixWith\\": \\"\\" } }] \"\"\") @@ -507,11 +507,11 @@ def __init__(__self__, "key": "error.html", }, routing_rule_details=\"\"\"[{ - "Condition": { - "KeyPrefixEquals": "docs/" + \\"Condition\\": { + \\"KeyPrefixEquals\\": \\"docs/\\" }, - "Redirect": { - "ReplaceKeyPrefixWith": "" + \\"Redirect\\": { + \\"ReplaceKeyPrefixWith\\": \\"\\" } }] \"\"\") diff --git a/sdk/python/pulumi_aws/s3control/access_grants_instance_resource_policy.py b/sdk/python/pulumi_aws/s3control/access_grants_instance_resource_policy.py index a80ebc08e36..0e70d9f23af 100644 --- a/sdk/python/pulumi_aws/s3control/access_grants_instance_resource_policy.py +++ b/sdk/python/pulumi_aws/s3control/access_grants_instance_resource_policy.py @@ -141,20 +141,20 @@ def __init__(__self__, example = aws.s3control.AccessGrantsInstance("example") example_access_grants_instance_resource_policy = aws.s3control.AccessGrantsInstanceResourcePolicy("example", policy=example.access_grants_instance_arn.apply(lambda access_grants_instance_arn: f\"\"\"{{ - "Version": "2012-10-17", - "Id": "S3AccessGrantsPolicy", - "Statement": [{{ - "Sid": "AllowAccessToS3AccessGrants", - "Effect": "Allow", - "Principal": {{ - "AWS": "123456789456" + \\"Version\\": \\"2012-10-17\\", + \\"Id\\": \\"S3AccessGrantsPolicy\\", + \\"Statement\\": [{{ + \\"Sid\\": \\"AllowAccessToS3AccessGrants\\", + \\"Effect\\": \\"Allow\\", + \\"Principal\\": {{ + \\"AWS\\": \\"123456789456\\" }}, - "Action": [ - "s3:ListAccessGrants", - "s3:ListAccessGrantsLocations", - "s3:GetDataAccess" + \\"Action\\": [ + \\"s3:ListAccessGrants\\", + \\"s3:ListAccessGrantsLocations\\", + \\"s3:GetDataAccess\\" ], - "Resource": "{access_grants_instance_arn}" + \\"Resource\\": \\"{access_grants_instance_arn}\\" }}] }} \"\"\")) @@ -191,20 +191,20 @@ def __init__(__self__, example = aws.s3control.AccessGrantsInstance("example") example_access_grants_instance_resource_policy = aws.s3control.AccessGrantsInstanceResourcePolicy("example", policy=example.access_grants_instance_arn.apply(lambda access_grants_instance_arn: f\"\"\"{{ - "Version": "2012-10-17", - "Id": "S3AccessGrantsPolicy", - "Statement": [{{ - "Sid": "AllowAccessToS3AccessGrants", - "Effect": "Allow", - "Principal": {{ - "AWS": "123456789456" + \\"Version\\": \\"2012-10-17\\", + \\"Id\\": \\"S3AccessGrantsPolicy\\", + \\"Statement\\": [{{ + \\"Sid\\": \\"AllowAccessToS3AccessGrants\\", + \\"Effect\\": \\"Allow\\", + \\"Principal\\": {{ + \\"AWS\\": \\"123456789456\\" }}, - "Action": [ - "s3:ListAccessGrants", - "s3:ListAccessGrantsLocations", - "s3:GetDataAccess" + \\"Action\\": [ + \\"s3:ListAccessGrants\\", + \\"s3:ListAccessGrantsLocations\\", + \\"s3:GetDataAccess\\" ], - "Resource": "{access_grants_instance_arn}" + \\"Resource\\": \\"{access_grants_instance_arn}\\" }}] }} \"\"\")) diff --git a/sdk/python/pulumi_aws/sagemaker/flow_definition.py b/sdk/python/pulumi_aws/sagemaker/flow_definition.py index 46cbe76e8f2..69fe01d8fbd 100644 --- a/sdk/python/pulumi_aws/sagemaker/flow_definition.py +++ b/sdk/python/pulumi_aws/sagemaker/flow_definition.py @@ -411,15 +411,15 @@ def __init__(__self__, human_loop_activation_config={ "human_loop_activation_conditions_config": { "human_loop_activation_conditions": \"\"\" { - \\x09\\x09\\x09"Conditions": [ - \\x09\\x09\\x09 { - \\x09\\x09\\x09\\x09"ConditionType": "Sampling", - \\x09\\x09\\x09\\x09"ConditionParameters": { - \\x09\\x09\\x09\\x09 "RandomSamplingPercentage": 5 - \\x09\\x09\\x09\\x09} - \\x09\\x09\\x09 } - \\x09\\x09\\x09] - \\x09\\x09} + \\t\\t\\t\\"Conditions\\": [ + \\t\\t\\t { + \\t\\t\\t\\t\\"ConditionType\\": \\"Sampling\\", + \\t\\t\\t\\t\\"ConditionParameters\\": { + \\t\\t\\t\\t \\"RandomSamplingPercentage\\": 5 + \\t\\t\\t\\t} + \\t\\t\\t } + \\t\\t\\t] + \\t\\t} \"\"\", }, }, @@ -531,15 +531,15 @@ def __init__(__self__, human_loop_activation_config={ "human_loop_activation_conditions_config": { "human_loop_activation_conditions": \"\"\" { - \\x09\\x09\\x09"Conditions": [ - \\x09\\x09\\x09 { - \\x09\\x09\\x09\\x09"ConditionType": "Sampling", - \\x09\\x09\\x09\\x09"ConditionParameters": { - \\x09\\x09\\x09\\x09 "RandomSamplingPercentage": 5 - \\x09\\x09\\x09\\x09} - \\x09\\x09\\x09 } - \\x09\\x09\\x09] - \\x09\\x09} + \\t\\t\\t\\"Conditions\\": [ + \\t\\t\\t { + \\t\\t\\t\\t\\"ConditionType\\": \\"Sampling\\", + \\t\\t\\t\\t\\"ConditionParameters\\": { + \\t\\t\\t\\t \\"RandomSamplingPercentage\\": 5 + \\t\\t\\t\\t} + \\t\\t\\t } + \\t\\t\\t] + \\t\\t} \"\"\", }, }, diff --git a/sdk/python/pulumi_aws/sagemaker/model_package_group_policy.py b/sdk/python/pulumi_aws/sagemaker/model_package_group_policy.py index 4029b89cf85..f509e55e642 100644 --- a/sdk/python/pulumi_aws/sagemaker/model_package_group_policy.py +++ b/sdk/python/pulumi_aws/sagemaker/model_package_group_policy.py @@ -133,6 +133,33 @@ def __init__(__self__, ## Example Usage + ### Basic usage + + ```python + import pulumi + import json + import pulumi_aws as aws + import pulumi_std as std + + current = aws.get_caller_identity() + example_model_package_group = aws.sagemaker.ModelPackageGroup("example", model_package_group_name="example") + example = example_model_package_group.arn.apply(lambda arn: aws.iam.get_policy_document(statements=[{ + "sid": "AddPermModelPackageGroup", + "actions": [ + "sagemaker:DescribeModelPackage", + "sagemaker:ListModelPackages", + ], + "resources": [arn], + "principals": [{ + "identifiers": [current.account_id], + "type": "AWS", + }], + }])) + example_model_package_group_policy = aws.sagemaker.ModelPackageGroupPolicy("example", + model_package_group_name=example_model_package_group.model_package_group_name, + resource_policy=pulumi.Output.json_dumps(std.jsondecode_output(input=example.json).apply(lambda invoke: invoke.result))) + ``` + ## Import Using `pulumi import`, import SageMaker AI Model Package Groups using the `name`. For example: @@ -157,6 +184,33 @@ def __init__(__self__, ## Example Usage + ### Basic usage + + ```python + import pulumi + import json + import pulumi_aws as aws + import pulumi_std as std + + current = aws.get_caller_identity() + example_model_package_group = aws.sagemaker.ModelPackageGroup("example", model_package_group_name="example") + example = example_model_package_group.arn.apply(lambda arn: aws.iam.get_policy_document(statements=[{ + "sid": "AddPermModelPackageGroup", + "actions": [ + "sagemaker:DescribeModelPackage", + "sagemaker:ListModelPackages", + ], + "resources": [arn], + "principals": [{ + "identifiers": [current.account_id], + "type": "AWS", + }], + }])) + example_model_package_group_policy = aws.sagemaker.ModelPackageGroupPolicy("example", + model_package_group_name=example_model_package_group.model_package_group_name, + resource_policy=pulumi.Output.json_dumps(std.jsondecode_output(input=example.json).apply(lambda invoke: invoke.result))) + ``` + ## Import Using `pulumi import`, import SageMaker AI Model Package Groups using the `name`. For example: diff --git a/sdk/python/pulumi_aws/secretsmanager/get_secret_version.py b/sdk/python/pulumi_aws/secretsmanager/get_secret_version.py index daa8f5eacab..545f8d32708 100644 --- a/sdk/python/pulumi_aws/secretsmanager/get_secret_version.py +++ b/sdk/python/pulumi_aws/secretsmanager/get_secret_version.py @@ -176,6 +176,17 @@ def get_secret_version(region: Optional[_builtins.str] = None, version_stage="example") ``` + ### Handling Key-Value Secret Strings in JSON + + Reading key-value pairs from JSON back into a native map + + ```python + import pulumi + import pulumi_std as std + + pulumi.export("example", std.jsondecode(input=example_aws_secretsmanager_secret_version["secretString"]).result["key1"]) + ``` + :param _builtins.str region: Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration. :param _builtins.str secret_id: Specifies the secret containing the version that you want to retrieve. You can specify either the ARN or the friendly name of the secret. @@ -232,6 +243,17 @@ def get_secret_version_output(region: Optional[pulumi.Input[Optional[_builtins.s version_stage="example") ``` + ### Handling Key-Value Secret Strings in JSON + + Reading key-value pairs from JSON back into a native map + + ```python + import pulumi + import pulumi_std as std + + pulumi.export("example", std.jsondecode(input=example_aws_secretsmanager_secret_version["secretString"]).result["key1"]) + ``` + :param _builtins.str region: Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration. :param _builtins.str secret_id: Specifies the secret containing the version that you want to retrieve. You can specify either the ARN or the friendly name of the secret. diff --git a/sdk/python/pulumi_aws/secretsmanager/secret_version.py b/sdk/python/pulumi_aws/secretsmanager/secret_version.py index d2810316ef2..58b324df837 100644 --- a/sdk/python/pulumi_aws/secretsmanager/secret_version.py +++ b/sdk/python/pulumi_aws/secretsmanager/secret_version.py @@ -366,6 +366,35 @@ def __init__(__self__, Reading key-value pairs from JSON back into a native map + ```python + import pulumi + import pulumi_std as std + + pulumi.export("example", std.jsondecode(input=example_aws_secretsmanager_secret_version["secretString"]).result["key1"]) + ``` + + ## Import + + ### Identity Schema + + #### Required + + * `secret_id` - (String) ID of the secret. + + * `version_id` - (String) ID of the secret version. + + #### Optional + + * `account_id` (String) AWS Account where this resource is managed. + + * `region` (String) Region where this resource is managed. + + Using `pulumi import`, import `aws_secretsmanager_secret_version` using the secret ID and version ID. For example: + + console + + % pulumi import aws_secretsmanager_secret_version.example 'arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456|xxxxx-xxxxxxx-xxxxxxx-xxxxx' + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[_builtins.str] region: Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration. @@ -426,6 +455,35 @@ def __init__(__self__, Reading key-value pairs from JSON back into a native map + ```python + import pulumi + import pulumi_std as std + + pulumi.export("example", std.jsondecode(input=example_aws_secretsmanager_secret_version["secretString"]).result["key1"]) + ``` + + ## Import + + ### Identity Schema + + #### Required + + * `secret_id` - (String) ID of the secret. + + * `version_id` - (String) ID of the secret version. + + #### Optional + + * `account_id` (String) AWS Account where this resource is managed. + + * `region` (String) Region where this resource is managed. + + Using `pulumi import`, import `aws_secretsmanager_secret_version` using the secret ID and version ID. For example: + + console + + % pulumi import aws_secretsmanager_secret_version.example 'arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456|xxxxx-xxxxxxx-xxxxxxx-xxxxx' + :param str resource_name: The name of the resource. :param SecretVersionArgs args: The arguments to use to populate this resource's properties. :param pulumi.ResourceOptions opts: Options for the resource. diff --git a/sdk/python/pulumi_aws/securityhub/standards_control_association.py b/sdk/python/pulumi_aws/securityhub/standards_control_association.py index 60fde087813..5e5b8b28de0 100644 --- a/sdk/python/pulumi_aws/securityhub/standards_control_association.py +++ b/sdk/python/pulumi_aws/securityhub/standards_control_association.py @@ -228,6 +228,24 @@ def __init__(__self__, updated_reason="Not needed") ``` + ## Disabling security control in all standards + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + example = aws.securityhub.Account("example") + iam1 = aws.securityhub.get_standards_control_associations(security_control_id="IAM.1") + iam1_standards_control_association = [] + for range in [{"key": k, "value": v} for [k, v] in enumerate(std.toset(input=[__item.standards_arn for __item in iam1.standards_control_associations]).result)]: + iam1_standards_control_association.append(aws.securityhub.StandardsControlAssociation(f"iam_1-{range['key']}", + standards_arn=range["key"], + security_control_id=iam1.security_control_id, + association_status="DISABLED", + updated_reason="Not needed")) + ``` + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[_builtins.str] association_status: The desired enablement status of the control in the standard. Valid values: `ENABLED`, `DISABLED`. @@ -263,6 +281,24 @@ def __init__(__self__, updated_reason="Not needed") ``` + ## Disabling security control in all standards + + ```python + import pulumi + import pulumi_aws as aws + import pulumi_std as std + + example = aws.securityhub.Account("example") + iam1 = aws.securityhub.get_standards_control_associations(security_control_id="IAM.1") + iam1_standards_control_association = [] + for range in [{"key": k, "value": v} for [k, v] in enumerate(std.toset(input=[__item.standards_arn for __item in iam1.standards_control_associations]).result)]: + iam1_standards_control_association.append(aws.securityhub.StandardsControlAssociation(f"iam_1-{range['key']}", + standards_arn=range["key"], + security_control_id=iam1.security_control_id, + association_status="DISABLED", + updated_reason="Not needed")) + ``` + :param str resource_name: The name of the resource. :param StandardsControlAssociationArgs args: The arguments to use to populate this resource's properties. :param pulumi.ResourceOptions opts: Options for the resource. diff --git a/sdk/python/pulumi_aws/sesv2/email_identity_policy.py b/sdk/python/pulumi_aws/sesv2/email_identity_policy.py index f79e2597e1d..d27c589458e 100644 --- a/sdk/python/pulumi_aws/sesv2/email_identity_policy.py +++ b/sdk/python/pulumi_aws/sesv2/email_identity_policy.py @@ -184,22 +184,22 @@ def __init__(__self__, email_identity=example.email_identity, policy_name="example", policy=example.arn.apply(lambda arn: f\"\"\"{{ - "Id":"ExampleAuthorizationPolicy", - "Version":"2012-10-17", - "Statement":[ + \\"Id\\":\\"ExampleAuthorizationPolicy\\", + \\"Version\\":\\"2012-10-17\\", + \\"Statement\\":[ {{ - "Sid":"AuthorizeIAMUser", - "Effect":"Allow", - "Resource":"{arn}", - "Principal":{{ - "AWS":[ - "arn:aws:iam::123456789012:user/John", - "arn:aws:iam::123456789012:user/Jane" + \\"Sid\\":\\"AuthorizeIAMUser\\", + \\"Effect\\":\\"Allow\\", + \\"Resource\\":\\"{arn}\\", + \\"Principal\\":{{ + \\"AWS\\":[ + \\"arn:aws:iam::123456789012:user/John\\", + \\"arn:aws:iam::123456789012:user/Jane\\" ] }}, - "Action":[ - "ses:DeleteEmailIdentity", - "ses:PutEmailIdentityDkimSigningAttributes" + \\"Action\\":[ + \\"ses:DeleteEmailIdentity\\", + \\"ses:PutEmailIdentityDkimSigningAttributes\\" ] }} ] @@ -244,22 +244,22 @@ def __init__(__self__, email_identity=example.email_identity, policy_name="example", policy=example.arn.apply(lambda arn: f\"\"\"{{ - "Id":"ExampleAuthorizationPolicy", - "Version":"2012-10-17", - "Statement":[ + \\"Id\\":\\"ExampleAuthorizationPolicy\\", + \\"Version\\":\\"2012-10-17\\", + \\"Statement\\":[ {{ - "Sid":"AuthorizeIAMUser", - "Effect":"Allow", - "Resource":"{arn}", - "Principal":{{ - "AWS":[ - "arn:aws:iam::123456789012:user/John", - "arn:aws:iam::123456789012:user/Jane" + \\"Sid\\":\\"AuthorizeIAMUser\\", + \\"Effect\\":\\"Allow\\", + \\"Resource\\":\\"{arn}\\", + \\"Principal\\":{{ + \\"AWS\\":[ + \\"arn:aws:iam::123456789012:user/John\\", + \\"arn:aws:iam::123456789012:user/Jane\\" ] }}, - "Action":[ - "ses:DeleteEmailIdentity", - "ses:PutEmailIdentityDkimSigningAttributes" + \\"Action\\":[ + \\"ses:DeleteEmailIdentity\\", + \\"ses:PutEmailIdentityDkimSigningAttributes\\" ] }} ] diff --git a/sdk/python/pulumi_aws/sfn/state_machine.py b/sdk/python/pulumi_aws/sfn/state_machine.py index aedfcb1fbc2..06fb109d200 100644 --- a/sdk/python/pulumi_aws/sfn/state_machine.py +++ b/sdk/python/pulumi_aws/sfn/state_machine.py @@ -534,13 +534,13 @@ def __init__(__self__, name="my-state-machine", role_arn=iam_for_sfn["arn"], definition=f\"\"\"{{ - "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", - "StartAt": "HelloWorld", - "States": {{ - "HelloWorld": {{ - "Type": "Task", - "Resource": "{lambda_["arn"]}", - "End": true + \\"Comment\\": \\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\", + \\"StartAt\\": \\"HelloWorld\\", + \\"States\\": {{ + \\"HelloWorld\\": {{ + \\"Type\\": \\"Task\\", + \\"Resource\\": \\"{lambda_["arn"]}\\", + \\"End\\": true }} }} }} @@ -559,13 +559,13 @@ def __init__(__self__, role_arn=iam_for_sfn["arn"], type="EXPRESS", definition=f\"\"\"{{ - "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", - "StartAt": "HelloWorld", - "States": {{ - "HelloWorld": {{ - "Type": "Task", - "Resource": "{lambda_["arn"]}", - "End": true + \\"Comment\\": \\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\", + \\"StartAt\\": \\"HelloWorld\\", + \\"States\\": {{ + \\"HelloWorld\\": {{ + \\"Type\\": \\"Task\\", + \\"Resource\\": \\"{lambda_["arn"]}\\", + \\"End\\": true }} }} }} @@ -585,13 +585,13 @@ def __init__(__self__, publish=True, type="EXPRESS", definition=f\"\"\"{{ - "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", - "StartAt": "HelloWorld", - "States": {{ - "HelloWorld": {{ - "Type": "Task", - "Resource": "{lambda_["arn"]}", - "End": true + \\"Comment\\": \\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\", + \\"StartAt\\": \\"HelloWorld\\", + \\"States\\": {{ + \\"HelloWorld\\": {{ + \\"Type\\": \\"Task\\", + \\"Resource\\": \\"{lambda_["arn"]}\\", + \\"End\\": true }} }} }} @@ -611,13 +611,13 @@ def __init__(__self__, name="my-state-machine", role_arn=iam_for_sfn["arn"], definition=f\"\"\"{{ - "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", - "StartAt": "HelloWorld", - "States": {{ - "HelloWorld": {{ - "Type": "Task", - "Resource": "{lambda_["arn"]}", - "End": true + \\"Comment\\": \\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\", + \\"StartAt\\": \\"HelloWorld\\", + \\"States\\": {{ + \\"HelloWorld\\": {{ + \\"Type\\": \\"Task\\", + \\"Resource\\": \\"{lambda_["arn"]}\\", + \\"End\\": true }} }} }} @@ -642,13 +642,13 @@ def __init__(__self__, name="my-state-machine", role_arn=iam_for_sfn["arn"], definition=f\"\"\"{{ - "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", - "StartAt": "HelloWorld", - "States": {{ - "HelloWorld": {{ - "Type": "Task", - "Resource": "{lambda_["arn"]}", - "End": true + \\"Comment\\": \\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\", + \\"StartAt\\": \\"HelloWorld\\", + \\"States\\": {{ + \\"HelloWorld\\": {{ + \\"Type\\": \\"Task\\", + \\"Resource\\": \\"{lambda_["arn"]}\\", + \\"End\\": true }} }} }} @@ -710,13 +710,13 @@ def __init__(__self__, name="my-state-machine", role_arn=iam_for_sfn["arn"], definition=f\"\"\"{{ - "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", - "StartAt": "HelloWorld", - "States": {{ - "HelloWorld": {{ - "Type": "Task", - "Resource": "{lambda_["arn"]}", - "End": true + \\"Comment\\": \\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\", + \\"StartAt\\": \\"HelloWorld\\", + \\"States\\": {{ + \\"HelloWorld\\": {{ + \\"Type\\": \\"Task\\", + \\"Resource\\": \\"{lambda_["arn"]}\\", + \\"End\\": true }} }} }} @@ -735,13 +735,13 @@ def __init__(__self__, role_arn=iam_for_sfn["arn"], type="EXPRESS", definition=f\"\"\"{{ - "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", - "StartAt": "HelloWorld", - "States": {{ - "HelloWorld": {{ - "Type": "Task", - "Resource": "{lambda_["arn"]}", - "End": true + \\"Comment\\": \\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\", + \\"StartAt\\": \\"HelloWorld\\", + \\"States\\": {{ + \\"HelloWorld\\": {{ + \\"Type\\": \\"Task\\", + \\"Resource\\": \\"{lambda_["arn"]}\\", + \\"End\\": true }} }} }} @@ -761,13 +761,13 @@ def __init__(__self__, publish=True, type="EXPRESS", definition=f\"\"\"{{ - "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", - "StartAt": "HelloWorld", - "States": {{ - "HelloWorld": {{ - "Type": "Task", - "Resource": "{lambda_["arn"]}", - "End": true + \\"Comment\\": \\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\", + \\"StartAt\\": \\"HelloWorld\\", + \\"States\\": {{ + \\"HelloWorld\\": {{ + \\"Type\\": \\"Task\\", + \\"Resource\\": \\"{lambda_["arn"]}\\", + \\"End\\": true }} }} }} @@ -787,13 +787,13 @@ def __init__(__self__, name="my-state-machine", role_arn=iam_for_sfn["arn"], definition=f\"\"\"{{ - "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", - "StartAt": "HelloWorld", - "States": {{ - "HelloWorld": {{ - "Type": "Task", - "Resource": "{lambda_["arn"]}", - "End": true + \\"Comment\\": \\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\", + \\"StartAt\\": \\"HelloWorld\\", + \\"States\\": {{ + \\"HelloWorld\\": {{ + \\"Type\\": \\"Task\\", + \\"Resource\\": \\"{lambda_["arn"]}\\", + \\"End\\": true }} }} }} @@ -818,13 +818,13 @@ def __init__(__self__, name="my-state-machine", role_arn=iam_for_sfn["arn"], definition=f\"\"\"{{ - "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", - "StartAt": "HelloWorld", - "States": {{ - "HelloWorld": {{ - "Type": "Task", - "Resource": "{lambda_["arn"]}", - "End": true + \\"Comment\\": \\"A Hello World example of the Amazon States Language using an AWS Lambda Function\\", + \\"StartAt\\": \\"HelloWorld\\", + \\"States\\": {{ + \\"HelloWorld\\": {{ + \\"Type\\": \\"Task\\", + \\"Resource\\": \\"{lambda_["arn"]}\\", + \\"End\\": true }} }} }} diff --git a/sdk/python/pulumi_aws/sns/topic.py b/sdk/python/pulumi_aws/sns/topic.py index 2e6deb090ad..aea1df57ce1 100644 --- a/sdk/python/pulumi_aws/sns/topic.py +++ b/sdk/python/pulumi_aws/sns/topic.py @@ -1081,19 +1081,19 @@ def __init__(__self__, user_updates = aws.sns.Topic("user_updates", name="user-updates-topic", delivery_policy=\"\"\"{ - "http": { - "defaultHealthyRetryPolicy": { - "minDelayTarget": 20, - "maxDelayTarget": 20, - "numRetries": 3, - "numMaxDelayRetries": 0, - "numNoDelayRetries": 0, - "numMinDelayRetries": 0, - "backoffFunction": "linear" + \\"http\\": { + \\"defaultHealthyRetryPolicy\\": { + \\"minDelayTarget\\": 20, + \\"maxDelayTarget\\": 20, + \\"numRetries\\": 3, + \\"numMaxDelayRetries\\": 0, + \\"numNoDelayRetries\\": 0, + \\"numMinDelayRetries\\": 0, + \\"backoffFunction\\": \\"linear\\" }, - "disableSubscriptionOverrides": false, - "defaultThrottlePolicy": { - "maxReceivesPerSecond": 1 + \\"disableSubscriptionOverrides\\": false, + \\"defaultThrottlePolicy\\": { + \\"maxReceivesPerSecond\\": 1 } } } @@ -1200,19 +1200,19 @@ def __init__(__self__, user_updates = aws.sns.Topic("user_updates", name="user-updates-topic", delivery_policy=\"\"\"{ - "http": { - "defaultHealthyRetryPolicy": { - "minDelayTarget": 20, - "maxDelayTarget": 20, - "numRetries": 3, - "numMaxDelayRetries": 0, - "numNoDelayRetries": 0, - "numMinDelayRetries": 0, - "backoffFunction": "linear" + \\"http\\": { + \\"defaultHealthyRetryPolicy\\": { + \\"minDelayTarget\\": 20, + \\"maxDelayTarget\\": 20, + \\"numRetries\\": 3, + \\"numMaxDelayRetries\\": 0, + \\"numNoDelayRetries\\": 0, + \\"numMinDelayRetries\\": 0, + \\"backoffFunction\\": \\"linear\\" }, - "disableSubscriptionOverrides": false, - "defaultThrottlePolicy": { - "maxReceivesPerSecond": 1 + \\"disableSubscriptionOverrides\\": false, + \\"defaultThrottlePolicy\\": { + \\"maxReceivesPerSecond\\": 1 } } } diff --git a/sdk/python/pulumi_aws/sns/topic_subscription.py b/sdk/python/pulumi_aws/sns/topic_subscription.py index e1945b33575..a9f9e2f5de5 100644 --- a/sdk/python/pulumi_aws/sns/topic_subscription.py +++ b/sdk/python/pulumi_aws/sns/topic_subscription.py @@ -698,21 +698,21 @@ def __init__(__self__, endpoint="https://example.com/endpoint", raw_message_delivery=True, delivery_policy=\"\"\"{ - "healthyRetryPolicy": { - "minDelayTarget": 20, - "maxDelayTarget": 20, - "numRetries": 3, - "numMaxDelayRetries": 0, - "numNoDelayRetries": 0, - "numMinDelayRetries": 0, - "backoffFunction": "linear" + \\"healthyRetryPolicy\\": { + \\"minDelayTarget\\": 20, + \\"maxDelayTarget\\": 20, + \\"numRetries\\": 3, + \\"numMaxDelayRetries\\": 0, + \\"numNoDelayRetries\\": 0, + \\"numMinDelayRetries\\": 0, + \\"backoffFunction\\": \\"linear\\" }, - "sicklyRetryPolicy": null, - "throttlePolicy": null, - "requestPolicy": { - "headerContentType": "text/plain; application/json" + \\"sicklyRetryPolicy\\": null, + \\"throttlePolicy\\": null, + \\"requestPolicy\\": { + \\"headerContentType\\": \\"text/plain; application/json\\" }, - "guaranteed": false + \\"guaranteed\\": false } \"\"\") ``` @@ -916,21 +916,21 @@ def __init__(__self__, endpoint="https://example.com/endpoint", raw_message_delivery=True, delivery_policy=\"\"\"{ - "healthyRetryPolicy": { - "minDelayTarget": 20, - "maxDelayTarget": 20, - "numRetries": 3, - "numMaxDelayRetries": 0, - "numNoDelayRetries": 0, - "numMinDelayRetries": 0, - "backoffFunction": "linear" + \\"healthyRetryPolicy\\": { + \\"minDelayTarget\\": 20, + \\"maxDelayTarget\\": 20, + \\"numRetries\\": 3, + \\"numMaxDelayRetries\\": 0, + \\"numNoDelayRetries\\": 0, + \\"numMinDelayRetries\\": 0, + \\"backoffFunction\\": \\"linear\\" }, - "sicklyRetryPolicy": null, - "throttlePolicy": null, - "requestPolicy": { - "headerContentType": "text/plain; application/json" + \\"sicklyRetryPolicy\\": null, + \\"throttlePolicy\\": null, + \\"requestPolicy\\": { + \\"headerContentType\\": \\"text/plain; application/json\\" }, - "guaranteed": false + \\"guaranteed\\": false } \"\"\") ``` diff --git a/sdk/python/pulumi_aws/ssm/association.py b/sdk/python/pulumi_aws/ssm/association.py index a73b0b8f596..063fe8c9169 100644 --- a/sdk/python/pulumi_aws/ssm/association.py +++ b/sdk/python/pulumi_aws/ssm/association.py @@ -801,7 +801,7 @@ def __init__(__self__, yum install -y httpd systemctl enable httpd systemctl start httpd - echo "

Web Server - {prefix}

" > /var/www/html/index.html + echo \\"

Web Server - {prefix}

\\" > /var/www/html/index.html \"\"\").result, tags={ "Name": f"{prefix}-web-server", @@ -1059,7 +1059,7 @@ def __init__(__self__, yum install -y httpd systemctl enable httpd systemctl start httpd - echo "

Web Server - {prefix}

" > /var/www/html/index.html + echo \\"

Web Server - {prefix}

\\" > /var/www/html/index.html \"\"\").result, tags={ "Name": f"{prefix}-web-server", diff --git a/sdk/python/pulumi_aws/ssm/document.py b/sdk/python/pulumi_aws/ssm/document.py index 44b9aef2cca..cc5f85abba3 100644 --- a/sdk/python/pulumi_aws/ssm/document.py +++ b/sdk/python/pulumi_aws/ssm/document.py @@ -611,17 +611,17 @@ def __init__(__self__, name="test_document", document_type="Command", content=\"\"\" { - "schemaVersion": "1.2", - "description": "Check ip configuration of a Linux instance.", - "parameters": { + \\"schemaVersion\\": \\"1.2\\", + \\"description\\": \\"Check ip configuration of a Linux instance.\\", + \\"parameters\\": { }, - "runtimeConfig": { - "aws:runShellScript": { - "properties": [ + \\"runtimeConfig\\": { + \\"aws:runShellScript\\": { + \\"properties\\": [ { - "id": "0.aws:runShellScript", - "runCommand": ["ifconfig"] + \\"id\\": \\"0.aws:runShellScript\\", + \\"runCommand\\": [\\"ifconfig\\"] } ] } @@ -737,17 +737,17 @@ def __init__(__self__, name="test_document", document_type="Command", content=\"\"\" { - "schemaVersion": "1.2", - "description": "Check ip configuration of a Linux instance.", - "parameters": { + \\"schemaVersion\\": \\"1.2\\", + \\"description\\": \\"Check ip configuration of a Linux instance.\\", + \\"parameters\\": { }, - "runtimeConfig": { - "aws:runShellScript": { - "properties": [ + \\"runtimeConfig\\": { + \\"aws:runShellScript\\": { + \\"properties\\": [ { - "id": "0.aws:runShellScript", - "runCommand": ["ifconfig"] + \\"id\\": \\"0.aws:runShellScript\\", + \\"runCommand\\": [\\"ifconfig\\"] } ] } diff --git a/sdk/python/pulumi_aws/timestreamquery/scheduled_query.py b/sdk/python/pulumi_aws/timestreamquery/scheduled_query.py index 5ff6ccfa70b..ca62e2dd47b 100644 --- a/sdk/python/pulumi_aws/timestreamquery/scheduled_query.py +++ b/sdk/python/pulumi_aws/timestreamquery/scheduled_query.py @@ -579,10 +579,10 @@ def __init__(__self__, execution_role_arn=example_aws_iam_role["arn"], name=example_aws_timestreamwrite_table["tableName"], query_string=\"\"\"SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp, - \\x09ROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, - \\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, - \\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, - \\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization + \\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, + \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, + \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, + \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization FROM exampledatabase.exampletable WHERE measure_name = 'metrics' AND time > ago(2h) GROUP BY region, hostname, az, BIN(time, 15s) @@ -762,10 +762,10 @@ def __init__(__self__, execution_role_arn=example_aws_iam_role["arn"], name=example_aws_timestreamwrite_table["tableName"], query_string=\"\"\"SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp, - \\x09ROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, - \\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, - \\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, - \\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization + \\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, + \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, + \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, + \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization FROM exampledatabase.exampletable WHERE measure_name = 'metrics' AND time > ago(2h) GROUP BY region, hostname, az, BIN(time, 15s) @@ -879,10 +879,10 @@ def __init__(__self__, execution_role_arn=example_aws_iam_role["arn"], name=example_aws_timestreamwrite_table["tableName"], query_string=\"\"\"SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp, - \\x09ROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, - \\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, - \\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, - \\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization + \\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, + \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, + \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, + \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization FROM exampledatabase.exampletable WHERE measure_name = 'metrics' AND time > ago(2h) GROUP BY region, hostname, az, BIN(time, 15s) @@ -1062,10 +1062,10 @@ def __init__(__self__, execution_role_arn=example_aws_iam_role["arn"], name=example_aws_timestreamwrite_table["tableName"], query_string=\"\"\"SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp, - \\x09ROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, - \\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, - \\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, - \\x09ROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization + \\tROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, + \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, + \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, + \\tROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization FROM exampledatabase.exampletable WHERE measure_name = 'metrics' AND time > ago(2h) GROUP BY region, hostname, az, BIN(time, 15s) diff --git a/sdk/python/pulumi_aws/transfer/ssh_key.py b/sdk/python/pulumi_aws/transfer/ssh_key.py index 3c244fce9fe..03e236d2682 100644 --- a/sdk/python/pulumi_aws/transfer/ssh_key.py +++ b/sdk/python/pulumi_aws/transfer/ssh_key.py @@ -191,8 +191,8 @@ def __init__(__self__, import pulumi_std as std import pulumi_tls as tls - example_private_key = tls.index.PrivateKey("example", - algorithm=RSA, + example_private_key = tls.PrivateKey("example", + algorithm="RSA", rsa_bits=4096) example_server = aws.transfer.Server("example", identity_provider_type="SERVICE_MANAGED", @@ -220,7 +220,7 @@ def __init__(__self__, example_ssh_key = aws.transfer.SshKey("example", server_id=example_server.id, user_name=example_user.user_name, - body=std.trimspace(input=example_private_key["publicKeyOpenssh"]).result) + body=std.trimspace_output(input=example_private_key.public_key_openssh).apply(lambda invoke: invoke.result)) example = aws.iam.get_policy_document(statements=[{ "sid": "AllowFullAccesstoS3", "effect": "Allow", @@ -265,8 +265,8 @@ def __init__(__self__, import pulumi_std as std import pulumi_tls as tls - example_private_key = tls.index.PrivateKey("example", - algorithm=RSA, + example_private_key = tls.PrivateKey("example", + algorithm="RSA", rsa_bits=4096) example_server = aws.transfer.Server("example", identity_provider_type="SERVICE_MANAGED", @@ -294,7 +294,7 @@ def __init__(__self__, example_ssh_key = aws.transfer.SshKey("example", server_id=example_server.id, user_name=example_user.user_name, - body=std.trimspace(input=example_private_key["publicKeyOpenssh"]).result) + body=std.trimspace_output(input=example_private_key.public_key_openssh).apply(lambda invoke: invoke.result)) example = aws.iam.get_policy_document(statements=[{ "sid": "AllowFullAccesstoS3", "effect": "Allow",